@contember/logger 1.2.0-alpha.16
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/dist/src/formatting.d.ts +9 -0
- package/dist/src/formatting.d.ts.map +1 -0
- package/dist/src/formatting.js +68 -0
- package/dist/src/formatting.js.map +1 -0
- package/dist/src/handlers/FingerCrossedLoggerHandler.d.ts +20 -0
- package/dist/src/handlers/FingerCrossedLoggerHandler.d.ts.map +1 -0
- package/dist/src/handlers/FingerCrossedLoggerHandler.js +66 -0
- package/dist/src/handlers/FingerCrossedLoggerHandler.js.map +1 -0
- package/dist/src/handlers/JsonStreamLoggerHandler.d.ts +14 -0
- package/dist/src/handlers/JsonStreamLoggerHandler.d.ts.map +1 -0
- package/dist/src/handlers/JsonStreamLoggerHandler.js +28 -0
- package/dist/src/handlers/JsonStreamLoggerHandler.js.map +1 -0
- package/dist/src/handlers/LoggerHandlerList.d.ts +10 -0
- package/dist/src/handlers/LoggerHandlerList.d.ts.map +1 -0
- package/dist/src/handlers/LoggerHandlerList.js +26 -0
- package/dist/src/handlers/LoggerHandlerList.js.map +1 -0
- package/dist/src/handlers/NullLoggerHandler.d.ts +7 -0
- package/dist/src/handlers/NullLoggerHandler.d.ts.map +1 -0
- package/dist/src/handlers/NullLoggerHandler.js +14 -0
- package/dist/src/handlers/NullLoggerHandler.js.map +1 -0
- package/dist/src/handlers/PrettyPrintLoggerHandler.d.ts +28 -0
- package/dist/src/handlers/PrettyPrintLoggerHandler.d.ts.map +1 -0
- package/dist/src/handlers/PrettyPrintLoggerHandler.js +84 -0
- package/dist/src/handlers/PrettyPrintLoggerHandler.js.map +1 -0
- package/dist/src/impl.d.ts +27 -0
- package/dist/src/impl.d.ts.map +1 -0
- package/dist/src/impl.js +105 -0
- package/dist/src/impl.js.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +28 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/levels.d.ts +23 -0
- package/dist/src/levels.d.ts.map +1 -0
- package/dist/src/levels.js +11 -0
- package/dist/src/levels.js.map +1 -0
- package/dist/src/proxy.d.ts +5 -0
- package/dist/src/proxy.d.ts.map +1 -0
- package/dist/src/proxy.js +51 -0
- package/dist/src/proxy.js.map +1 -0
- package/dist/src/tsconfig.tsbuildinfo +1 -0
- package/dist/src/types.d.ts +53 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +16 -0
- package/readme.md +3 -0
- package/src/formatting.ts +70 -0
- package/src/handlers/FingerCrossedLoggerHandler.ts +82 -0
- package/src/handlers/JsonStreamLoggerHandler.ts +36 -0
- package/src/handlers/LoggerHandlerList.ts +28 -0
- package/src/handlers/NullLoggerHandler.ts +13 -0
- package/src/handlers/PrettyPrintLoggerHandler.ts +93 -0
- package/src/impl.ts +141 -0
- package/src/index.ts +9 -0
- package/src/levels.ts +7 -0
- package/src/proxy.ts +60 -0
- package/src/tsconfig.json +7 -0
- package/src/types.ts +57 -0
- package/tsconfig.json +5 -0
- package/tsconfig.settings.json +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+BAAqC;AAA5B,oGAAA,YAAY,OAAA;AACrB,0CAAuB;AACvB,2CAAwB;AACxB,0CAAuB;AACvB,wEAAqD;AACrD,qEAAkD;AAClD,sEAAmD;AACnD,+DAA4C;AAC5C,+DAA4C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const LogLevels: {
|
|
2
|
+
debug: {
|
|
3
|
+
name: string;
|
|
4
|
+
value: number;
|
|
5
|
+
};
|
|
6
|
+
info: {
|
|
7
|
+
name: string;
|
|
8
|
+
value: number;
|
|
9
|
+
};
|
|
10
|
+
warn: {
|
|
11
|
+
name: string;
|
|
12
|
+
value: number;
|
|
13
|
+
};
|
|
14
|
+
error: {
|
|
15
|
+
name: string;
|
|
16
|
+
value: number;
|
|
17
|
+
};
|
|
18
|
+
crit: {
|
|
19
|
+
name: string;
|
|
20
|
+
value: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=levels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"levels.d.ts","sourceRoot":"","sources":["../../src/levels.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;CAMrB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogLevels = void 0;
|
|
4
|
+
exports.LogLevels = {
|
|
5
|
+
debug: { name: 'debug', value: 10 },
|
|
6
|
+
info: { name: 'info', value: 20 },
|
|
7
|
+
warn: { name: 'warn', value: 30 },
|
|
8
|
+
error: { name: 'error', value: 40 },
|
|
9
|
+
crit: { name: 'crit', value: 50 },
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=levels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"levels.js","sourceRoot":"","sources":["../../src/levels.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG;IACxB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IACnC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACjC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACjC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IACnC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;CACjC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkD,MAAM,SAAS,CAAA;AA+ChF,eAAO,MAAM,MAAM,EAAE,MAAiC,CAAA;AAEtD,eAAO,MAAM,UAAU,cAAe,MAAM,yBAE3C,CAAA;AAED,eAAO,MAAM,SAAS,QAAO,MAM5B,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLogger = exports.withLogger = exports.logger = void 0;
|
|
4
|
+
const node_async_hooks_1 = require("node:async_hooks");
|
|
5
|
+
const loggerStore = new node_async_hooks_1.AsyncLocalStorage();
|
|
6
|
+
class CurrentLoggerProxy {
|
|
7
|
+
crit(a, b, c) {
|
|
8
|
+
(0, exports.getLogger)().crit(a, b);
|
|
9
|
+
}
|
|
10
|
+
error(a, b, c) {
|
|
11
|
+
(0, exports.getLogger)().error(a, b);
|
|
12
|
+
}
|
|
13
|
+
warn(a, b, c) {
|
|
14
|
+
(0, exports.getLogger)().warn(a, b);
|
|
15
|
+
}
|
|
16
|
+
info(a, b, c) {
|
|
17
|
+
(0, exports.getLogger)().info(a, b);
|
|
18
|
+
}
|
|
19
|
+
debug(a, b, c) {
|
|
20
|
+
(0, exports.getLogger)().crit(a, b);
|
|
21
|
+
}
|
|
22
|
+
child(attributes, options) {
|
|
23
|
+
return (0, exports.getLogger)().child(attributes, options);
|
|
24
|
+
}
|
|
25
|
+
get attributes() {
|
|
26
|
+
return (0, exports.getLogger)().attributes;
|
|
27
|
+
}
|
|
28
|
+
close() {
|
|
29
|
+
(0, exports.getLogger)().close();
|
|
30
|
+
}
|
|
31
|
+
scope(cb, attributes, options) {
|
|
32
|
+
return (0, exports.getLogger)().scope(cb, attributes, options);
|
|
33
|
+
}
|
|
34
|
+
addHandler(handler) {
|
|
35
|
+
(0, exports.getLogger)().addHandler(handler);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.logger = new CurrentLoggerProxy();
|
|
39
|
+
const withLogger = (logger, callback) => {
|
|
40
|
+
return loggerStore.run(logger, callback);
|
|
41
|
+
};
|
|
42
|
+
exports.withLogger = withLogger;
|
|
43
|
+
const getLogger = () => {
|
|
44
|
+
const logger = loggerStore.getStore();
|
|
45
|
+
if (!logger) {
|
|
46
|
+
throw new Error('Logger was not set');
|
|
47
|
+
}
|
|
48
|
+
return logger;
|
|
49
|
+
};
|
|
50
|
+
exports.getLogger = getLogger;
|
|
51
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEpD,MAAM,WAAW,GAAG,IAAI,oCAAiB,EAAU,CAAA;AAEnD,MAAM,kBAAkB;IACvB,IAAI,CAAC,CAAM,EAAE,CAAO,EAAE,CAAO;QAC5B,IAAA,iBAAS,GAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,CAAM,EAAE,CAAO,EAAE,CAAO;QAC7B,IAAA,iBAAS,GAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,IAAI,CAAC,CAAM,EAAE,CAAO,EAAE,CAAO;QAC5B,IAAA,iBAAS,GAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,CAAM,EAAE,CAAO,EAAE,CAAO;QAC5B,IAAA,iBAAS,GAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,CAAM,EAAE,CAAO,EAAE,CAAO;QAC7B,IAAA,iBAAS,GAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,UAA6B,EAAE,OAAgC;QACpE,OAAO,IAAA,iBAAS,GAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAA,iBAAS,GAAE,CAAC,UAAU,CAAA;IAC9B,CAAC;IAED,KAAK;QACJ,IAAA,iBAAS,GAAE,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IAED,KAAK,CAAI,EAAwC,EAAE,UAA6B,EAAE,OAAgC;QACjH,OAAO,IAAA,iBAAS,GAAE,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAED,UAAU,CAAC,OAAsB;QAChC,IAAA,iBAAS,GAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;CACD;AAEY,QAAA,MAAM,GAAW,IAAI,kBAAkB,EAAE,CAAA;AAE/C,MAAM,UAAU,GAAG,CAAI,MAAc,EAAE,QAAiB,EAAK,EAAE;IACrE,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AACzC,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB;AAEM,MAAM,SAAS,GAAG,GAAW,EAAE;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAA;IACrC,IAAI,CAAC,MAAM,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;KACrC;IACD,OAAO,MAAM,CAAA;AACd,CAAC,CAAA;AANY,QAAA,SAAS,aAMrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../src/levels.ts","../../src/handlers/FingerCrossedLoggerHandler.ts","../../src/types.ts","../../src/formatting.ts","../../src/handlers/LoggerHandlerList.ts","../../src/proxy.ts","../../src/impl.ts","../../src/handlers/JsonStreamLoggerHandler.ts","../../../../node_modules/chalk/index.d.ts","../../src/handlers/PrettyPrintLoggerHandler.ts","../../src/handlers/NullLoggerHandler.ts","../../src/index.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/accepts/index.d.ts","../../../../node_modules/@types/bcrypt/index.d.ts","../../../../node_modules/@types/connect/index.d.ts","../../../../node_modules/@types/body-parser/index.d.ts","../../../../node_modules/@types/keyv/index.d.ts","../../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../../node_modules/@types/responselike/index.d.ts","../../../../node_modules/@types/cacheable-request/index.d.ts","../../../../node_modules/@types/caseless/index.d.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/chai-subset/index.d.ts","../../../../node_modules/@types/content-disposition/index.d.ts","../../../../node_modules/@types/cookiejar/index.d.ts","../../../../node_modules/@types/keygrip/index.d.ts","../../../../node_modules/@types/range-parser/index.d.ts","../../../../node_modules/@types/qs/index.d.ts","../../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../../node_modules/@types/mime/Mime.d.ts","../../../../node_modules/@types/mime/index.d.ts","../../../../node_modules/@types/serve-static/index.d.ts","../../../../node_modules/@types/express/index.d.ts","../../../../node_modules/@types/cookies/index.d.ts","../../../../node_modules/@types/fs-extra/index.d.ts","../../../../node_modules/@types/http-assert/index.d.ts","../../../../node_modules/@types/http-errors/index.d.ts","../../../../node_modules/@types/js-yaml/index.d.ts","../../../../node_modules/@types/json-buffer/index.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/json-stable-stringify/index.d.ts","../../../../node_modules/@types/jsonwebtoken/index.d.ts","../../../../node_modules/@types/koa-compose/index.d.ts","../../../../node_modules/@types/koa/index.d.ts","../../../../node_modules/@types/koa-bodyparser/index.d.ts","../../../../node_modules/@types/koa-compress/index.d.ts","../../../../node_modules/@types/koa__cors/index.d.ts","../../../../node_modules/@types/mime-types/index.d.ts","../../../../node_modules/@types/mustache/index.d.ts","../../../../node_modules/form-data/index.d.ts","../../../../node_modules/@types/node-fetch/externals.d.ts","../../../../node_modules/@types/node-fetch/index.d.ts","../../../../node_modules/@types/nodemailer/lib/dkim/index.d.ts","../../../../node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts","../../../../node_modules/@types/nodemailer/lib/xoauth2/index.d.ts","../../../../node_modules/@types/nodemailer/lib/mailer/index.d.ts","../../../../node_modules/@types/nodemailer/lib/mime-node/index.d.ts","../../../../node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts","../../../../node_modules/@types/nodemailer/lib/shared/index.d.ts","../../../../node_modules/@types/nodemailer/lib/json-transport/index.d.ts","../../../../node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts","../../../../node_modules/@types/nodemailer/lib/ses-transport/index.d.ts","../../../../node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts","../../../../node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts","../../../../node_modules/@types/nodemailer/lib/stream-transport/index.d.ts","../../../../node_modules/@types/nodemailer/index.d.ts","../../../../node_modules/@types/npm-package-arg/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/pg-types/index.d.ts","../../../../node_modules/pg-protocol/dist/messages.d.ts","../../../../node_modules/pg-protocol/dist/serializer.d.ts","../../../../node_modules/pg-protocol/dist/parser.d.ts","../../../../node_modules/pg-protocol/dist/index.d.ts","../../../../node_modules/@types/pg/index.d.ts","../../../../node_modules/@types/prompts/index.d.ts","../../../../node_modules/@types/request/node_modules/form-data/index.d.ts","../../../../node_modules/@types/tough-cookie/index.d.ts","../../../../node_modules/@types/request/index.d.ts","../../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../../node_modules/@types/sinon/index.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/@types/superagent/index.d.ts","../../../../node_modules/@types/supertest/index.d.ts","../../../../node_modules/@types/uuid/index.d.ts","../../../../node_modules/@types/ws/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},{"version":"7da5f0995185ed53adef8e33105666ac66150afb891479cc8e42dabe7d84428e","signature":"49b5aab1ab4ecdb5e4591028291ee642c3006b012d37f9713500f6eb93f42097"},{"version":"0e483ac03218b3a350321e7e2b766cec687b350f27c19bb82c7afa1a6b3ccb0b","signature":"7c207bae2692e8c8c55cdfcfdf30f8172bf56eea5c6640bcf191bcd60cdb049c"},{"version":"bdfb07fd9c56d4847bba418fc65e68abf6420c96c1a956867a19ea53377792be","signature":"8ea276cc13c89539fe2edf9e29e871d8fd9debd5b1a4a80a20e2f332a0573a34"},{"version":"ecff4aed87457ebd8442b2cb1b6d9b0f8d692b69af9c225c644e88bbf7271541","signature":"e75a3bd9a002aac74a540245577dbb1a4ce3a6cb6f2aa1850e56de7921742bba"},{"version":"857fa34b965d3674bc460bcf10b94ff557d4971c5a83ddad20b10f6016edda29","signature":"58937ffce5e0f5c4284e4c1bdcade720ab886577c5f7f2c8d303a96166b8d019"},{"version":"88a8575df7d834105474b84d28550e3c90062c433b8fdd8fdef1b49d90323721","signature":"d1b772d8b8777638fc4a2ad3bea3d1e29236dfda42dd2d396849f10dfc624a31"},{"version":"6dd5803b80d3e4b552fa83b43ae74bf15e3325d3f01b3214cbdc0cd9ef99ce2c","signature":"54daa3151e079706efd56e5011021f9cf9e2654e3163816dfeabc19017ad34ab"},{"version":"ef1388a12e1b006a9542d16ae26bd98837e57e8c9856910309580022b3d45362","signature":"719cf42548177e72974b06fea893d60f2cb4b1fecec44abf5dc190a804ac715f"},"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2",{"version":"7525d4948f3b5a879b1569137ef6bea1bb2462e3c209f6ad86ad6c7511d612f0","signature":"962b094b7ef1ddc19822b0a2b0d871699b74e323ce199757d3d181ea9338f1b2"},{"version":"4b7ff514e8b414f7039189afd09df0985402ad79750a83707c4e01abffb24685","signature":"1034064c49c080e29d6575d7de329c3a502ae28ec7af8e1e4671fd94c8b36faa"},{"version":"e55d86c67476cd1a12e37e9f98a29d917bf6a3282f2ad3181811f67bb65953e8","signature":"a699dd75ea055e2e30c838b2a18080c037a19365b64c6883df885a9513a7ce7e"},"9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","c4cfc9a6e2ebb8bc8c0e2392dfc4056993ced3b35069ebf132ac18ca7a562881","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","df36874d9e56aff601e921c4b3971d37cf66d14f6455935ce821e6cad13b1823","68915895d4a136df5cf5f90aaa41d8e1e47ec047e7781a150b5d0cf273dbb7a9","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"76527127c8b749bee5977408861ce3ee56ec19ddcea8704c628f98ca610283e6","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","cb4f3f03480e1727eae46400606cecaa97f550186ff8fa909ebc00db4180531b",{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","0830071706fa0e477fb5e95f0955cc1062b5948b146b7d4e03a126f12ad6085f",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","4c8525f256873c7ba3135338c647eaf0ca7115a1a2805ae2d0056629461186ce","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","6738101ae8e56cd3879ab3f99630ada7d78097fc9fd334df7e766216778ca219","57ddc4e066366bbe04f497f9afce1c88e088dbd09be0618e072754450de3acbb","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","5343f3c160282dfbaab9af350119a0c3b59b7076ef0117bb5995a66e240dab28",{"version":"127bf414ca8ced28c9738b91a935121009d03bbc136668db980bd1ba18976b2b","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"204dbe6c72467fb14bbe8f06510b11fb541b6ce29580c6e10ebd3bdb2eb0c1f9","8d48b8f8a377ade8dd1f000625bc276eea067f2529cc9cafdf082d17142107d6","ce013414484233b24f42c0fcfca48a60bb66ab4e13c82953662305e8f1ee4925","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"ae3fe461989bbd951344efc1f1fe932360ce7392e6126bdb225a82a1bbaf15ee","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","eb96a2321f717bccc3e49e104e299152984b927ea4546b559ae631c06565819c","ed19da84b7dbf00952ad0b98ce5c194f1903bcf7c94d8103e8e0d63b271543ae","e98185f4249720ace1921d59c1ff4612fa5c633a183fc9bf28e2e7b8e3c7fd51","6168414aa12d33d0fcfac4f9870aa81ce27e136db6faf182001a5f3792e1d720","686e548ae30250d62532c8cacb43fccc922b693408371bd3503563c4a0f28eed","75bdc1b420f0ffc6cc6fd0b6694d89f5072bf755b4e6c7e65a2fda797ca0bb8a","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","13cc3979e1f548aacaa23911f2d6e69c1a2999266c4a1952806de1e9593bdaaa","bb4ed283cfb3db7ec1d4bb79c37f5e96d39b340f1f4de995c4b0b836c8d5fa05","5006668996956580886022c05108e32c742823e1b5652aff7914917233731518","3a9b877f47119ac64aab98c61cae91a304ddeb6e8285ccd824a6aa665ffaeb95","aff59cc6a1f2049bc6ac37cdd5a7d449584f28e7ee5ba240bd903aefdaef6418","77224b06a9d39e8710eca2050acadd9f9e062b068d74aa98e38a6854c272d35e","dcb9aa62f2662b999047096125adfa905cca0c988d7f5130e38ab41afeb96a3f","c757372a092924f5c16eaf11a1475b80b95bb4dae49fe3242d2ad908f97d5abe","017cfb3f6986b6b449fda402cce0f7da77820cb7000d5faf5a8b62587684031a","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","3898e3dbe94b6fe529fbe8f0faee1309c1923100516d7a014b301955e52ece77","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","bb654d426b82e0846cd4bd7de91d637039ecdfd63c94447373490178f80846fe","db90f54098b237753ac9c846e39cd49aa538dcad07a2e1c68a138f3c0f8e621d","92ad68795c32309fb43576cacb38bd2677deeed38f5730dcd4a8c5e65463ae15","6e41751646fe275206d052a2e5ba87d27dd0df4dcbca134fc3fd2dc4d3d410d2","eecb2ea10a1500dcc6bdeff14be1fb43806f63a9b8562e16e1b4fc8baa8dfa8d","221a6ab66d611349faaf80af49c7a34d95623787610fd153fed4da0811abdcae","f3d84d6f83cf131e4db335dc8100898adbeb01dd4cf4e2fe695ab220eac98be4","6521aaade4e1d23cbc4b665083b004aeaca23f3347ba2422f88d1828968a0056","e79130cf2ba010f2b79747bf43b086252ad041b130768331a1144c0a86185877","e9709ed827c40789c669736fc78e2ab603605e8e81325d1e6d7a5eb451810dd0","dafce7a7b279977940b6b4b50017625e4f922f73094433d2875994bdc0b27e87","6fc76efbb61d3336833ef44ff3f37552667f26c2a73b368f3b4b259f19f2c234","479496e5bb48f2f5e981ef646665bc09fd9ab080e86e9ea882ca4369411604af","6c559dee3c6251c261b67df08e01d4cbc89cbd7a63300150c636705733cebfff","9b5a5e0d06f8646aa2978afb1b5bb5e608649751e9cfc7290e86be42605ba42f","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","f60e3e3060207ac982da13363181fd7ee4beecc19a7c569f0d6bb034331066c2","17230b34bb564a3a2e36f9d3985372ccab4ad1722df2c43f7c5c2b553f68e5db","87ed0f84f0691d5c724b23159db96342e6b04ac69201b02c65936f4281ce1fbe","13868c5792808236b17dfe2803eafce911ea4d09d3b2fda95391891a494f988f","0dfe35191a04e8f9dc7caeb9f52f2ee07402736563d12cbccd15fb5f31ac877f","fa5c2d3fcd8e227e180815df0a0903ed4b116400452af8a75ac5b68e5e1de9da","5f7614d60b32dc66e5d665eafd10d7619eedca3a20f0e876e9ec73141735e364","e91ad231af87f864b3f07cd0e39b1cf6c133988156f087c1c3ccb0a5491c9115","cc256fd958b33576ed32c7338c64adb0d08fc0c2c6525010202fab83f32745da","bf0b1297461549a0e32cd57dffb992c63d7c7134fe0f9e15d359abcc88dbd28c","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","31c502014e5ba046d5cb060136929b73fd53f0f989aa37b2b0424644cb0d93ef","76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778","fab58e600970e66547644a44bc9918e3223aa2cbd9e8763cec004b2cfb48827e","b4358a89fcd9c579f84a6c68e2ce44ca91b07e4db3f8f403c2b7a72c1a1e04b6"],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noEmitOnError":true,"outDir":"./","sourceMap":true,"strict":true,"target":5},"fileIdsList":[[85,112,119],[112,119],[85,112,119,122],[82,85,111,112,119,124,125,126],[112],[112,129],[85,112,119,122,133,140],[82,85,112,119,134,135],[112,123,135,136,139],[83,112,119],[82,112,119],[112,151],[112,117,119,151],[82,85,86,90,96,111,112,119,120,131,133,141,143,144,150],[112,138],[112,137],[85,111,112,119,157,158],[67,112],[70,112],[71,76,112],[72,82,83,90,100,111,112],[72,73,82,90,112],[74,112],[75,76,83,91,112],[76,100,108,112],[77,79,82,90,112],[78,112],[79,80,112],[81,82,112],[82,112],[82,83,84,100,111,112],[82,83,84,100,103,112],[112,116],[85,90,100,111,112],[82,83,85,86,90,100,108,111,112],[85,87,100,108,111,112],[67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118],[82,88,112],[89,111,112],[79,82,90,100,112],[91,112],[92,112],[70,93,112],[94,110,112,116],[95,112],[96,112],[82,97,98,112],[97,99,112,114],[82,100,101,102,103,112],[100,102,112],[100,101,112],[103,112],[104,112],[82,106,107,112],[106,107,112],[76,90,100,108,112],[109,112],[90,110,112],[71,85,96,111,112],[76,112],[100,112,113],[112,114],[112,115],[71,76,82,84,93,100,111,112,114,116],[100,112,117],[112,119,161,163,167,168,169,170,171,172],[100,112,119],[82,112,119,161,163,164,166,173],[82,90,100,111,112,119,160,161,162,164,165,166,173],[100,112,119,163,164],[100,112,119,163,165],[112,119,161,163,164,166,173],[100,112,119,165],[82,90,100,108,112,119,162,164,166],[82,112,119,161,163,164,165,166,173],[82,100,112,119,161,162,163,164,165,166,173],[82,100,112,119,161,163,164,166,173],[85,100,112,119,166],[82,100,108,112,119,176,177,180,181],[83,85,87,90,100,111,112,119,128,183,184],[85,100,112,119],[85,112,119,138],[112,186],[71,83,85,100,112,119,132],[112,189],[82,85,87,100,108,111,112,117,119],[112,119,177,178,179],[100,112,119,177],[57,112],[55,57,112],[55,57,63,112],[55,57,58,59,60,112],[55,56,57,59,60,61,62,64,65,112],[57,70,112],[56,112],[57],[57,63],[55,56,57,59,60,61,62,64,65],[56]],"referencedMap":[[120,1],[121,2],[123,3],[127,4],[128,5],[130,6],[129,5],[122,1],[131,5],[132,5],[141,7],[136,8],[140,9],[142,10],[143,5],[125,5],[144,5],[145,5],[146,5],[147,5],[148,5],[149,2],[133,5],[124,11],[152,12],[150,12],[153,13],[151,14],[154,12],[155,5],[137,15],[138,16],[156,5],[158,5],[159,17],[67,18],[68,18],[70,19],[71,20],[72,21],[73,22],[74,23],[75,24],[76,25],[77,26],[78,27],[79,28],[80,28],[81,29],[82,30],[83,31],[84,32],[69,33],[118,5],[85,34],[86,35],[87,36],[119,37],[88,38],[89,39],[90,40],[91,41],[92,42],[93,43],[94,44],[95,45],[96,46],[97,47],[98,47],[99,48],[100,49],[102,50],[101,51],[103,52],[104,53],[105,5],[106,54],[107,55],[108,56],[109,57],[110,58],[111,59],[112,60],[113,61],[114,62],[115,63],[116,64],[117,65],[173,66],[160,67],[167,68],[163,69],[161,70],[164,71],[168,72],[169,68],[166,73],[165,74],[170,75],[171,76],[172,77],[162,78],[174,5],[175,5],[181,79],[182,67],[135,5],[134,5],[185,80],[183,81],[126,81],[139,82],[187,83],[186,5],[189,84],[190,85],[184,5],[191,5],[192,86],[188,5],[63,5],[157,81],[180,87],[177,2],[179,88],[178,2],[176,5],[11,5],[13,5],[12,5],[2,5],[14,5],[15,5],[16,5],[17,5],[18,5],[19,5],[20,5],[21,5],[3,5],[4,5],[25,5],[22,5],[23,5],[24,5],[26,5],[27,5],[28,5],[5,5],[29,5],[30,5],[31,5],[32,5],[6,5],[33,5],[34,5],[35,5],[36,5],[7,5],[37,5],[42,5],[43,5],[38,5],[39,5],[40,5],[41,5],[8,5],[47,5],[44,5],[45,5],[46,5],[48,5],[9,5],[49,5],[50,5],[51,5],[52,5],[53,5],[1,5],[10,5],[54,5],[58,89],[56,90],[62,90],[59,89],[65,89],[64,91],[61,92],[66,93],[55,5],[60,94],[57,95]],"exportedModulesMap":[[120,1],[121,2],[123,3],[127,4],[128,5],[130,6],[129,5],[122,1],[131,5],[132,5],[141,7],[136,8],[140,9],[142,10],[143,5],[125,5],[144,5],[145,5],[146,5],[147,5],[148,5],[149,2],[133,5],[124,11],[152,12],[150,12],[153,13],[151,14],[154,12],[155,5],[137,15],[138,16],[156,5],[158,5],[159,17],[67,18],[68,18],[70,19],[71,20],[72,21],[73,22],[74,23],[75,24],[76,25],[77,26],[78,27],[79,28],[80,28],[81,29],[82,30],[83,31],[84,32],[69,33],[118,5],[85,34],[86,35],[87,36],[119,37],[88,38],[89,39],[90,40],[91,41],[92,42],[93,43],[94,44],[95,45],[96,46],[97,47],[98,47],[99,48],[100,49],[102,50],[101,51],[103,52],[104,53],[105,5],[106,54],[107,55],[108,56],[109,57],[110,58],[111,59],[112,60],[113,61],[114,62],[115,63],[116,64],[117,65],[173,66],[160,67],[167,68],[163,69],[161,70],[164,71],[168,72],[169,68],[166,73],[165,74],[170,75],[171,76],[172,77],[162,78],[174,5],[175,5],[181,79],[182,67],[135,5],[134,5],[185,80],[183,81],[126,81],[139,82],[187,83],[186,5],[189,84],[190,85],[184,5],[191,5],[192,86],[188,5],[63,5],[157,81],[180,87],[177,2],[179,88],[178,2],[176,5],[11,5],[13,5],[12,5],[2,5],[14,5],[15,5],[16,5],[17,5],[18,5],[19,5],[20,5],[21,5],[3,5],[4,5],[25,5],[22,5],[23,5],[24,5],[26,5],[27,5],[28,5],[5,5],[29,5],[30,5],[31,5],[32,5],[6,5],[33,5],[34,5],[35,5],[36,5],[7,5],[37,5],[42,5],[43,5],[38,5],[39,5],[40,5],[41,5],[8,5],[47,5],[44,5],[45,5],[46,5],[48,5],[9,5],[49,5],[50,5],[51,5],[52,5],[53,5],[1,5],[10,5],[54,5],[58,96],[56,96],[62,96],[59,96],[65,96],[64,97],[61,96],[66,98],[60,96],[57,99]],"semanticDiagnosticsPerFile":[120,121,123,127,128,130,129,122,131,132,141,136,140,142,143,125,144,145,146,147,148,149,133,124,152,150,153,151,154,155,137,138,156,158,159,67,68,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,69,118,85,86,87,119,88,89,90,91,92,93,94,95,96,97,98,99,100,102,101,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,173,160,167,163,161,164,168,169,166,165,170,171,172,162,174,175,181,182,135,134,185,183,126,139,187,186,189,190,184,191,192,188,63,157,180,177,179,178,176,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,37,42,43,38,39,40,41,8,47,44,45,46,48,9,49,50,51,52,53,1,10,54,58,56,62,59,65,64,61,66,55,60,57],"latestChangedDtsFile":"./index.d.ts"},"version":"4.8.2"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { FingerCrossedLoggerHandlerOptions } from './handlers/FingerCrossedLoggerHandler';
|
|
2
|
+
export declare type LogFn = ((errorOrMessage: unknown, attributes?: LoggerAttributes) => void);
|
|
3
|
+
export interface Logger {
|
|
4
|
+
attributes: LoggerAttributes;
|
|
5
|
+
crit: LogFn;
|
|
6
|
+
error: LogFn;
|
|
7
|
+
warn: LogFn;
|
|
8
|
+
info: LogFn;
|
|
9
|
+
debug: LogFn;
|
|
10
|
+
child(attributes?: LoggerAttributes, options?: Partial<LoggerChildOptions>): Logger;
|
|
11
|
+
scope<T>(cb: (logger: Logger) => Promise<T> | T, attributes?: LoggerAttributes, options?: Partial<LoggerChildOptions>): Promise<T>;
|
|
12
|
+
close(): void;
|
|
13
|
+
addHandler(handler: LoggerHandler): void;
|
|
14
|
+
}
|
|
15
|
+
export interface LoggerHandler {
|
|
16
|
+
getMinLevel(): number;
|
|
17
|
+
handle(logEntry: LogEntry): void;
|
|
18
|
+
close(): void;
|
|
19
|
+
}
|
|
20
|
+
export declare type LoggerAttributes = {
|
|
21
|
+
error?: unknown;
|
|
22
|
+
message?: string;
|
|
23
|
+
} & {
|
|
24
|
+
[key: string | symbol]: any;
|
|
25
|
+
};
|
|
26
|
+
export declare type LogLevel = {
|
|
27
|
+
name: string;
|
|
28
|
+
value: number;
|
|
29
|
+
};
|
|
30
|
+
export declare type LogEntry = {
|
|
31
|
+
level: LogLevel;
|
|
32
|
+
time: Date;
|
|
33
|
+
isoTime: string;
|
|
34
|
+
message: string;
|
|
35
|
+
error?: unknown;
|
|
36
|
+
ownAttributes: LoggerAttributes;
|
|
37
|
+
loggerAttributes: LoggerAttributes;
|
|
38
|
+
depth: number;
|
|
39
|
+
format: () => LogEntryFormatted;
|
|
40
|
+
};
|
|
41
|
+
export declare type LogEntryFormatted = {
|
|
42
|
+
attributes: string;
|
|
43
|
+
message: string;
|
|
44
|
+
error: string;
|
|
45
|
+
};
|
|
46
|
+
export declare type LoggerHandlerFactory = (current: LoggerHandler, globalOptions: LoggerOptions) => LoggerHandler;
|
|
47
|
+
export interface LoggerOptions {
|
|
48
|
+
fingerCrossedOptions?: Partial<FingerCrossedLoggerHandlerOptions>;
|
|
49
|
+
}
|
|
50
|
+
export interface LoggerChildOptions extends LoggerOptions {
|
|
51
|
+
handler?: LoggerHandlerFactory;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,uCAAuC,CAAA;AAEzF,oBAAY,KAAK,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC,CAAA;AAEtF,MAAM,WAAW,MAAM;IACtB,UAAU,EAAE,gBAAgB,CAAA;IAE5B,IAAI,EAAE,KAAK,CAAA;IACX,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,KAAK,CAAA;IACX,IAAI,EAAE,KAAK,CAAA;IACX,KAAK,EAAE,KAAK,CAAA;IAEZ,KAAK,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAA;IACnF,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAClI,KAAK,IAAI,IAAI,CAAA;IAEb,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAA;CACxC;AAED,MAAM,WAAW,aAAa;IAC7B,WAAW,IAAI,MAAM,CAAA;IACrB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAChC,KAAK,IAAI,IAAI,CAAA;CACb;AAED,oBAAY,gBAAgB,GAAG;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;CAC3B,CAAA;AAED,oBAAY,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,oBAAY,QAAQ,GAAG;IACtB,KAAK,EAAE,QAAQ,CAAA;IACf,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,aAAa,EAAE,gBAAgB,CAAA;IAC/B,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,iBAAiB,CAAA;CAC/B,CAAA;AACD,oBAAY,iBAAiB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtF,oBAAY,oBAAoB,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,KAAK,aAAa,CAAA;AAE1G,MAAM,WAAW,aAAa;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC,iCAAiC,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACxD,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@contember/logger",
|
|
3
|
+
"version": "1.2.0-alpha.16",
|
|
4
|
+
"license": "Apache-2.0",
|
|
5
|
+
"main": "dist/src/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "echo 'No tests'"
|
|
8
|
+
},
|
|
9
|
+
"typings": "dist/src/index.d.ts",
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"@types/node": "^18"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"chalk": "^4.1.2"
|
|
15
|
+
}
|
|
16
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { LogEntry, LoggerAttributes } from './types'
|
|
2
|
+
import { inspect } from 'node:util'
|
|
3
|
+
|
|
4
|
+
export type FormattedAttributes = {
|
|
5
|
+
formattedAttributes: Record<string, string>
|
|
6
|
+
formattedLine: string
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const formatLoggerAttributes = (parentAttributes: FormattedAttributes | undefined, ownAttributes: LoggerAttributes): FormattedAttributes => {
|
|
10
|
+
const formattedAttributes: Record<string, string> = {}
|
|
11
|
+
let formattedLine = ''
|
|
12
|
+
for (const key in ownAttributes) {
|
|
13
|
+
const value = ownAttributes[key]
|
|
14
|
+
if (value === undefined) {
|
|
15
|
+
continue
|
|
16
|
+
}
|
|
17
|
+
const formattedKey = stringify(key)
|
|
18
|
+
const formattedValue = stringify(value)
|
|
19
|
+
formattedAttributes[formattedKey] = formattedValue
|
|
20
|
+
formattedLine += `, ${formattedKey}: ${formattedValue}`
|
|
21
|
+
}
|
|
22
|
+
const parentFormattedAttributes = parentAttributes?.formattedAttributes
|
|
23
|
+
for (const key in parentFormattedAttributes) {
|
|
24
|
+
if (!(key in formattedAttributes)) {
|
|
25
|
+
const formattedValue = parentFormattedAttributes[key]
|
|
26
|
+
formattedAttributes[key] = formattedValue
|
|
27
|
+
formattedLine += `, ${key}: ${formattedValue}`
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return { formattedAttributes, formattedLine }
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const formatLogEntryAttributes = (attributes: FormattedAttributes, entry: LogEntry): string => {
|
|
34
|
+
let entryAttributes = ''
|
|
35
|
+
let reformatRest = false
|
|
36
|
+
const omitInRest: Record<string, boolean> = {}
|
|
37
|
+
|
|
38
|
+
for (const key in entry.ownAttributes) {
|
|
39
|
+
const value = entry.ownAttributes[key]
|
|
40
|
+
if (value === undefined) {
|
|
41
|
+
continue
|
|
42
|
+
}
|
|
43
|
+
const formattedKey = stringify(key)
|
|
44
|
+
const formattedValue = stringify(value)
|
|
45
|
+
entryAttributes += `, ${formattedKey}: ${formattedValue}`
|
|
46
|
+
if (key in attributes.formattedAttributes) {
|
|
47
|
+
reformatRest = true
|
|
48
|
+
omitInRest[formattedKey] = true
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (reformatRest) {
|
|
52
|
+
for (const key in attributes.formattedAttributes) {
|
|
53
|
+
if (!(key in omitInRest)) {
|
|
54
|
+
entryAttributes += `, ${key}: ${attributes.formattedAttributes[key]}`
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
entryAttributes += attributes.formattedLine
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return entryAttributes
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export const stringify = (value: unknown) => {
|
|
65
|
+
try {
|
|
66
|
+
return JSON.stringify(value)
|
|
67
|
+
} catch {
|
|
68
|
+
return JSON.stringify(inspect(value))
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { LogEntry, LoggerHandler, LoggerHandlerFactory, LogLevel } from '../types'
|
|
2
|
+
import { LogLevels } from '../levels'
|
|
3
|
+
|
|
4
|
+
export interface FingerCrossedLoggerHandlerOptions {
|
|
5
|
+
logAlwaysLevel: LogLevel
|
|
6
|
+
logWhenActivatedLevel: LogLevel
|
|
7
|
+
activationLevel: LogLevel
|
|
8
|
+
maxBufferSize: number
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class FingerCrossedLoggerHandler implements LoggerHandler {
|
|
12
|
+
private buffer: LogEntry[] = []
|
|
13
|
+
|
|
14
|
+
private active: boolean = false
|
|
15
|
+
private options: FingerCrossedLoggerHandlerOptions
|
|
16
|
+
|
|
17
|
+
constructor(
|
|
18
|
+
private readonly inner: LoggerHandler,
|
|
19
|
+
options: Partial<FingerCrossedLoggerHandlerOptions> = {},
|
|
20
|
+
) {
|
|
21
|
+
this.options = {
|
|
22
|
+
logAlwaysLevel: LogLevels.info,
|
|
23
|
+
logWhenActivatedLevel: LogLevels.debug,
|
|
24
|
+
activationLevel: LogLevels.warn,
|
|
25
|
+
maxBufferSize: 100,
|
|
26
|
+
...options,
|
|
27
|
+
}
|
|
28
|
+
if (this.options.logAlwaysLevel.value < this.options.logWhenActivatedLevel.value) {
|
|
29
|
+
this.options.logWhenActivatedLevel = this.options.logAlwaysLevel
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public static factory(options: Partial<FingerCrossedLoggerHandlerOptions> = {}): LoggerHandlerFactory {
|
|
34
|
+
return (current, globalOptions) => new FingerCrossedLoggerHandler(current, { ...globalOptions.fingerCrossedOptions, ...options })
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
getMinLevel(): number {
|
|
38
|
+
return this.options.logWhenActivatedLevel.value
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
handle(logEntry: LogEntry): void {
|
|
43
|
+
const logEntryLevel = logEntry.level.value
|
|
44
|
+
if (logEntryLevel < this.options.logWhenActivatedLevel.value) {
|
|
45
|
+
return
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (this.active) {
|
|
49
|
+
this.inner.handle(logEntry)
|
|
50
|
+
|
|
51
|
+
} else if (logEntryLevel >= this.options.activationLevel.value) {
|
|
52
|
+
this.active = true
|
|
53
|
+
this.doFlush(this.options.logWhenActivatedLevel)
|
|
54
|
+
this.inner.handle(logEntry)
|
|
55
|
+
|
|
56
|
+
} else {
|
|
57
|
+
this.buffer.push(logEntry)
|
|
58
|
+
|
|
59
|
+
if (this.buffer.length >= this.options.maxBufferSize) {
|
|
60
|
+
const first = this.buffer.shift()
|
|
61
|
+
if (first !== undefined && first.level.value >= this.options.logAlwaysLevel.value) {
|
|
62
|
+
this.inner.handle(first)
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
close(): void {
|
|
69
|
+
this.doFlush(this.options.logAlwaysLevel)
|
|
70
|
+
this.inner.close?.()
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private doFlush(minLevel: LogLevel) {
|
|
74
|
+
const entries = this.buffer
|
|
75
|
+
this.buffer = []
|
|
76
|
+
for (const entry of entries) {
|
|
77
|
+
if (entry.level.value >= minLevel.value) {
|
|
78
|
+
this.inner.handle(entry)
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { LogEntry, LoggerHandler, LogLevel } from '../types'
|
|
2
|
+
import { LogLevels } from '../levels'
|
|
3
|
+
|
|
4
|
+
export interface JsonStreamLoggerHandlerOptions {
|
|
5
|
+
logLevel: LogLevel
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export class JsonStreamLoggerHandler implements LoggerHandler {
|
|
9
|
+
private options: JsonStreamLoggerHandlerOptions
|
|
10
|
+
|
|
11
|
+
constructor(
|
|
12
|
+
private readonly stream: NodeJS.WritableStream,
|
|
13
|
+
options: Partial<JsonStreamLoggerHandlerOptions> = {},
|
|
14
|
+
) {
|
|
15
|
+
this.options = {
|
|
16
|
+
logLevel: LogLevels.debug,
|
|
17
|
+
...options,
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
handle(entry: LogEntry): void {
|
|
22
|
+
if (entry.level.value < this.options.logLevel.value) {
|
|
23
|
+
return
|
|
24
|
+
}
|
|
25
|
+
const formatted = entry.format()
|
|
26
|
+
const line = `{"time": "${entry.isoTime}", "level": "${entry.level.name}", "message": ${formatted.message}${formatted.error}${formatted.attributes}}\n`
|
|
27
|
+
this.stream.write(line)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
getMinLevel(): number {
|
|
31
|
+
return this.options.logLevel.value
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
close(): void {
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LogEntry, LoggerHandler } from '../types'
|
|
2
|
+
|
|
3
|
+
export class LoggerHandlerList implements LoggerHandler {
|
|
4
|
+
constructor(
|
|
5
|
+
private readonly transports: LoggerHandler[] = [],
|
|
6
|
+
) {
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
getMinLevel(): number {
|
|
10
|
+
return Math.min(Number.MAX_SAFE_INTEGER, ...this.transports.map(it => it.getMinLevel()))
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public addHandler(transport: LoggerHandler) {
|
|
14
|
+
this.transports.push(transport)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
handle(logEntry: LogEntry) {
|
|
18
|
+
for (const transport of this.transports) {
|
|
19
|
+
transport.handle(logEntry)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
close(): void {
|
|
24
|
+
for (const transport of this.transports) {
|
|
25
|
+
transport.close()
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import chalk from 'chalk'
|
|
2
|
+
import { inspect } from 'node:util'
|
|
3
|
+
import { LogEntry, LoggerAttributes, LoggerHandler, LogLevel } from '../types'
|
|
4
|
+
import { LogLevels } from '../levels'
|
|
5
|
+
|
|
6
|
+
export interface PrettyPrintLoggerHandlerOptions {
|
|
7
|
+
logLevel: LogLevel
|
|
8
|
+
formatters: {
|
|
9
|
+
[key: string]: (args: { value: any; formattedValue: string; key: string; chalk: typeof chalk; attributes: LoggerAttributes }) => undefined | string | { line: string }
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class PrettyPrintLoggerHandler implements LoggerHandler {
|
|
14
|
+
private readonly options: PrettyPrintLoggerHandlerOptions
|
|
15
|
+
|
|
16
|
+
constructor(
|
|
17
|
+
private readonly stream: NodeJS.WritableStream,
|
|
18
|
+
options: Partial<PrettyPrintLoggerHandlerOptions> = {},
|
|
19
|
+
) {
|
|
20
|
+
this.options = {
|
|
21
|
+
logLevel: LogLevels.debug,
|
|
22
|
+
formatters: {},
|
|
23
|
+
...options,
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getMinLevel(): number {
|
|
28
|
+
return this.options.logLevel.value
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
handle(entry: LogEntry) {
|
|
32
|
+
if (entry.level.value < this.options.logLevel.value) {
|
|
33
|
+
return
|
|
34
|
+
}
|
|
35
|
+
const startLength = entry.isoTime.length + 7
|
|
36
|
+
|
|
37
|
+
this.stream.write(`${this.formatTime(entry.isoTime)} ${this.formatLevel(entry.level)} `)
|
|
38
|
+
|
|
39
|
+
const indent = ' '.repeat(startLength)
|
|
40
|
+
this.stream.write(`${entry.message.replaceAll(/\n/g, '\n' + indent)}\n`)
|
|
41
|
+
const allAttributes = { ...entry.loggerAttributes, ...entry.ownAttributes }
|
|
42
|
+
for (const key in allAttributes) {
|
|
43
|
+
const value = allAttributes[key]
|
|
44
|
+
if (typeof key !== 'string' || value === undefined) {
|
|
45
|
+
continue
|
|
46
|
+
}
|
|
47
|
+
const formattedValue = inspect(value, {
|
|
48
|
+
depth: 5,
|
|
49
|
+
}).replaceAll(/\n/g, '\n' + indent)
|
|
50
|
+
const formattedValue2 = this.options.formatters[key]
|
|
51
|
+
? (this.options.formatters[key]({ value, key, formattedValue, chalk, attributes: allAttributes }))
|
|
52
|
+
: formattedValue
|
|
53
|
+
if (formattedValue2 === undefined) {
|
|
54
|
+
continue
|
|
55
|
+
}
|
|
56
|
+
if (typeof formattedValue2 === 'string') {
|
|
57
|
+
this.stream.write(indent + chalk.dim(`${key}: ${formattedValue2}\n`))
|
|
58
|
+
} else {
|
|
59
|
+
this.stream.write(indent + formattedValue2.line + '\n')
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (entry.error) {
|
|
63
|
+
this.stream.write(inspect(entry.error).replaceAll(/^/gm, indent) + '\n')
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
private formatTime(date: string): string {
|
|
69
|
+
const result = date.match(/^([0-9-]+)T([0-9:]+)\.(\d+)Z$/)
|
|
70
|
+
if (!result) {
|
|
71
|
+
return date
|
|
72
|
+
}
|
|
73
|
+
return chalk.dim(result[1] + 'T') + result[2] + chalk.dim('.' + result[3] + 'Z')
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
private formatLevel(level: LogLevel): string {
|
|
77
|
+
const levelText = `${level.name}${' '.repeat(5 - level.name.length)}`
|
|
78
|
+
let color: chalk.Chalk = chalk
|
|
79
|
+
if (level.value <= 10) {
|
|
80
|
+
color = color.dim
|
|
81
|
+
} else if (level.value <= 20) {
|
|
82
|
+
// nothhing
|
|
83
|
+
} else if (level.value <= 30) {
|
|
84
|
+
color = color.yellowBright
|
|
85
|
+
} else {
|
|
86
|
+
color = color.redBright
|
|
87
|
+
}
|
|
88
|
+
return color(levelText)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
close(): void {
|
|
92
|
+
}
|
|
93
|
+
}
|