@skilbjo/logger 1.0.20 → 1.0.22

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/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import * as pino from "./pino";
2
+ export * from "./pino";
3
+ export declare const debugLog: pino.Logger;
4
+ export declare const infoLog: pino.Logger;
5
+ export declare const warnLog: pino.Logger;
6
+ declare const log: pino.Logger;
7
+ export default log;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@skilbjo/logger",
4
- "version": "1.0.20",
4
+ "version": "1.0.22",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
7
7
  "scripts": {
@@ -11,11 +11,9 @@
11
11
  "lint": "npm run eslint",
12
12
  "test": "jest --runInBand",
13
13
  "build": "tspc -p tsconfig.build.json",
14
- "postbuild": "jq 'del(.files)' package.json >dist/package.json"
14
+ "postbuild": "jq 'del(.files)' package.json >dist/package.json",
15
+ "prepare-npm": "jq 'del(.repository, .publishConfig, .files) | . + { publishConfig: { registry: \"https://registry.npmjs.org/\" } }' package.json >package2.json && mv package2.json dist/package.json"
15
16
  },
16
- "files": [
17
- "dist"
18
- ],
19
17
  "license": "ISC",
20
18
  "author": "skilbjo",
21
19
  "keywords": [
@@ -25,13 +23,13 @@
25
23
  ],
26
24
  "dependencies": {
27
25
  "pino": "9.4.0",
28
- "winston": "3.14.2"
26
+ "winston": "3.15.0"
29
27
  },
30
28
  "devDependencies": {
31
29
  "@commitlint/cli": "17.0.0",
32
30
  "@commitlint/config-angular": "17.0.0",
33
- "@skilbjo/config-rc": "1.0.9",
34
- "@skilbjo/eslint-config-rc": "npm:@skilbjo/config-rc@1.0.9",
31
+ "@skilbjo/config-rc": "1.0.14",
32
+ "@skilbjo/eslint-config-rc": "npm:@skilbjo/config-rc@1.0.14",
35
33
  "@types/http-errors": "2.0.4",
36
34
  "depcheck": "1.4.7",
37
35
  "eslint": "8.57.0",
package/pino.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import type { LoggerOptions, SerializedError } from 'pino';
2
+ export type LogLevels = 'debug' | 'error' | 'fatal' | 'info' | 'trace' | 'warn';
3
+ type LogFn = (object: Record<string, unknown>, message: string) => void;
4
+ type ErrorLogFn = (object: {
5
+ err: Error;
6
+ } & Partial<Record<string, unknown>>, message: string) => void;
7
+ export type Logger = {
8
+ debug: LogFn;
9
+ error: ErrorLogFn;
10
+ info: LogFn;
11
+ util: {
12
+ serialize: (error: Error) => SerializedError;
13
+ };
14
+ warn: LogFn;
15
+ };
16
+ export declare const mixin: () => Record<string, unknown>;
17
+ export declare const create: (options?: LoggerOptions, stream?: NodeJS.WriteStream) => Logger;
18
+ export {};
package/pino.js ADDED
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.create = exports.mixin = void 0;
7
+ const pino_1 = __importDefault(require("pino"));
8
+ const mixin = () => ({
9
+ lambdaName: process.env.AWS_LAMBDA_FUNCTION_NAME,
10
+ logGroup: process.env.AWS_LAMBDA_LOG_GROUP_NAME,
11
+ logStream: process.env.AWS_LAMBDA_LOG_STREAM_NAME,
12
+ requestId: process.env._X_AMZN_REQUEST_ID,
13
+ xRayTraceId: process.env._X_AMZN_TRACE_ID,
14
+ });
15
+ exports.mixin = mixin;
16
+ const create = (options, stream) => {
17
+ const pinoLogger = (0, pino_1.default)({
18
+ formatters: {
19
+ bindings: () => ({}),
20
+ level: (level) => ({ level }),
21
+ },
22
+ mixin: () => ({
23
+ lambdaName: process.env.AWS_LAMBDA_FUNCTION_NAME,
24
+ logGroup: process.env.AWS_LAMBDA_LOG_GROUP_NAME,
25
+ logStream: process.env.AWS_LAMBDA_LOG_STREAM_NAME,
26
+ requestId: process.env._X_AMZN_REQUEST_ID,
27
+ xRayTraceId: process.env._X_AMZN_TRACE_ID,
28
+ }),
29
+ timestamp: pino_1.default.stdTimeFunctions.isoTime,
30
+ ...options,
31
+ }, stream || process.stdout);
32
+ return {
33
+ debug: pinoLogger.debug.bind(pinoLogger),
34
+ error: (object, message) => pinoLogger.error(pino_1.default.stdSerializers.err(object.err), message),
35
+ info: pinoLogger.info.bind(pinoLogger),
36
+ util: {
37
+ serialize: (error) => pino_1.default.stdSerializers.err(error),
38
+ },
39
+ warn: pinoLogger.warn.bind(pinoLogger),
40
+ };
41
+ };
42
+ exports.create = create;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9waW5vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQXFCakIsTUFBTSxLQUFLLEdBQUcsR0FBNEIsRUFBRSxDQUFDLENBQUM7SUFDbkQsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCO0lBQ2hELFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QjtJQUMvQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEI7SUFDakQsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO0lBQ3pDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtDQUMxQyxDQUFDLENBQUM7QUFOVSxRQUFBLEtBQUssU0FNZjtBQUVJLE1BQU0sTUFBTSxHQUFHLENBQ3BCLE9BQXVCLEVBQ3ZCLE1BQTJCLEVBQ25CLEVBQUU7SUFDVixNQUFNLFVBQVUsR0FBRyxJQUFBLGNBQUksRUFDckI7UUFDRSxVQUFVLEVBQUU7WUFDVixRQUFRLEVBQUUsR0FBNEIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRTdDLEtBQUssRUFBRSxDQUFDLEtBQWEsRUFBMkIsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUMvRDtRQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ1osVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCO1lBQ2hELFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QjtZQUMvQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEI7WUFDakQsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO1lBQ3pDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtTQUMxQyxDQUFDO1FBQ0YsU0FBUyxFQUFFLGNBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPO1FBQ3hDLEdBQUcsT0FBTztLQUNYLEVBQ0QsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQ3pCLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxLQUFLLEVBQUUsQ0FBQyxNQUFzQixFQUFFLE9BQWUsRUFBUSxFQUFFLENBQ3ZELFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUNoRSxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3RDLElBQUksRUFBRTtZQUNKLFNBQVMsRUFBRSxDQUFDLEtBQVksRUFBbUIsRUFBRSxDQUMzQyxjQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDakM7UUFDRCxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0tBQ3ZDLENBQUM7QUFDSixDQUFDLENBQUM7QUFuQ1csUUFBQSxNQUFNLFVBbUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwaW5vIGZyb20gJ3Bpbm8nO1xuaW1wb3J0IHR5cGUgeyBMb2dnZXJPcHRpb25zLCBTZXJpYWxpemVkRXJyb3IgfSBmcm9tICdwaW5vJztcblxuZXhwb3J0IHR5cGUgTG9nTGV2ZWxzID0gJ2RlYnVnJyB8ICdlcnJvcicgfCAnZmF0YWwnIHwgJ2luZm8nIHwgJ3RyYWNlJyB8ICd3YXJuJztcblxudHlwZSBMb2dGbiA9IChvYmplY3Q6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG50eXBlIEVycm9yTG9nRm4gPSAoXG4gIG9iamVjdDogeyBlcnI6IEVycm9yIH0gJiBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PixcbiAgbWVzc2FnZTogc3RyaW5nXG4pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIExvZ2dlciA9IHtcbiAgZGVidWc6IExvZ0ZuO1xuICBlcnJvcjogRXJyb3JMb2dGbjtcbiAgaW5mbzogTG9nRm47XG4gIHV0aWw6IHtcbiAgICBzZXJpYWxpemU6IChlcnJvcjogRXJyb3IpID0+IFNlcmlhbGl6ZWRFcnJvcjtcbiAgfTtcbiAgd2FybjogTG9nRm47XG59O1xuXG5leHBvcnQgY29uc3QgbWl4aW4gPSAoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4gKHtcbiAgbGFtYmRhTmFtZTogcHJvY2Vzcy5lbnYuQVdTX0xBTUJEQV9GVU5DVElPTl9OQU1FLFxuICBsb2dHcm91cDogcHJvY2Vzcy5lbnYuQVdTX0xBTUJEQV9MT0dfR1JPVVBfTkFNRSxcbiAgbG9nU3RyZWFtOiBwcm9jZXNzLmVudi5BV1NfTEFNQkRBX0xPR19TVFJFQU1fTkFNRSxcbiAgcmVxdWVzdElkOiBwcm9jZXNzLmVudi5fWF9BTVpOX1JFUVVFU1RfSUQsXG4gIHhSYXlUcmFjZUlkOiBwcm9jZXNzLmVudi5fWF9BTVpOX1RSQUNFX0lELFxufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSAoXG4gIG9wdGlvbnM/OiBMb2dnZXJPcHRpb25zLFxuICBzdHJlYW0/OiBOb2RlSlMuV3JpdGVTdHJlYW1cbik6IExvZ2dlciA9PiB7XG4gIGNvbnN0IHBpbm9Mb2dnZXIgPSBwaW5vKFxuICAgIHtcbiAgICAgIGZvcm1hdHRlcnM6IHtcbiAgICAgICAgYmluZGluZ3M6ICgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAoe30pLFxuXG4gICAgICAgIGxldmVsOiAobGV2ZWw6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+ICh7IGxldmVsIH0pLFxuICAgICAgfSxcbiAgICAgIG1peGluOiAoKSA9PiAoe1xuICAgICAgICBsYW1iZGFOYW1lOiBwcm9jZXNzLmVudi5BV1NfTEFNQkRBX0ZVTkNUSU9OX05BTUUsXG4gICAgICAgIGxvZ0dyb3VwOiBwcm9jZXNzLmVudi5BV1NfTEFNQkRBX0xPR19HUk9VUF9OQU1FLFxuICAgICAgICBsb2dTdHJlYW06IHByb2Nlc3MuZW52LkFXU19MQU1CREFfTE9HX1NUUkVBTV9OQU1FLFxuICAgICAgICByZXF1ZXN0SWQ6IHByb2Nlc3MuZW52Ll9YX0FNWk5fUkVRVUVTVF9JRCxcbiAgICAgICAgeFJheVRyYWNlSWQ6IHByb2Nlc3MuZW52Ll9YX0FNWk5fVFJBQ0VfSUQsXG4gICAgICB9KSxcbiAgICAgIHRpbWVzdGFtcDogcGluby5zdGRUaW1lRnVuY3Rpb25zLmlzb1RpbWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0sXG4gICAgc3RyZWFtIHx8IHByb2Nlc3Muc3Rkb3V0XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBkZWJ1ZzogcGlub0xvZ2dlci5kZWJ1Zy5iaW5kKHBpbm9Mb2dnZXIpLFxuICAgIGVycm9yOiAob2JqZWN0OiB7IGVycjogRXJyb3IgfSwgbWVzc2FnZTogc3RyaW5nKTogdm9pZCA9PlxuICAgICAgcGlub0xvZ2dlci5lcnJvcihwaW5vLnN0ZFNlcmlhbGl6ZXJzLmVycihvYmplY3QuZXJyKSwgbWVzc2FnZSksXG4gICAgaW5mbzogcGlub0xvZ2dlci5pbmZvLmJpbmQocGlub0xvZ2dlciksXG4gICAgdXRpbDoge1xuICAgICAgc2VyaWFsaXplOiAoZXJyb3I6IEVycm9yKTogU2VyaWFsaXplZEVycm9yID0+XG4gICAgICAgIHBpbm8uc3RkU2VyaWFsaXplcnMuZXJyKGVycm9yKSxcbiAgICB9LFxuICAgIHdhcm46IHBpbm9Mb2dnZXIud2Fybi5iaW5kKHBpbm9Mb2dnZXIpLFxuICB9O1xufTtcbiJdfQ==
package/winston.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { LeveledLogMethod } from 'winston';
2
+ export { Logger } from 'winston';
3
+ export type LogLevels = 'debug' | 'error' | 'fatal' | 'info' | 'trace' | 'warn';
4
+ export declare const create: ({ level }?: {
5
+ level: LogLevels;
6
+ }, stream?: NodeJS.WriteStream) => {
7
+ debug: LeveledLogMethod;
8
+ error: LeveledLogMethod;
9
+ info: LeveledLogMethod;
10
+ warn: LeveledLogMethod;
11
+ };
package/winston.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.create = exports.Logger = void 0;
7
+ const winston_1 = __importDefault(require("winston"));
8
+ var winston_2 = require("winston");
9
+ Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return winston_2.Logger; } });
10
+ const create = ({ level } = { level: 'debug' }, stream // eslint-disable-line @typescript-eslint/no-unused-vars
11
+ // ) => {
12
+ ) => {
13
+ const winstonLogger = winston_1.default.createLogger({
14
+ format: winston_1.default.format.combine(winston_1.default.format.metadata(), winston_1.default.format.timestamp(), winston_1.default.format.json(), winston_1.default.format.colorize(), winston_1.default.format.prettyPrint(), winston_1.default.format.splat(), winston_1.default.format.simple()),
15
+ level,
16
+ // transports: stream || [new winston.transports.Console({})],
17
+ transports: [new winston_1.default.transports.Console({})],
18
+ });
19
+ return {
20
+ debug: winstonLogger.debug.bind(winstonLogger),
21
+ error: winstonLogger.error.bind(winstonLogger),
22
+ info: winstonLogger.info.bind(winstonLogger),
23
+ warn: winstonLogger.warn.bind(winstonLogger),
24
+ };
25
+ };
26
+ exports.create = create;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luc3Rvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy93aW5zdG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHNEQUE4QjtBQUU5QixtQ0FBaUM7QUFBeEIsaUdBQUEsTUFBTSxPQUFBO0FBSVIsTUFBTSxNQUFNLEdBQUcsQ0FDcEIsRUFBRSxLQUFLLEtBQTJCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUNwRCxNQUEyQixDQUFDLHdEQUF3RDtBQUNwRixTQUFTO0VBTVQsRUFBRTtJQUNGLE1BQU0sYUFBYSxHQUFHLGlCQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQzVCLGlCQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUN6QixpQkFBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFDMUIsaUJBQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBRXJCLGlCQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUN6QixpQkFBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFDNUIsaUJBQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQ3RCLGlCQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUN4QjtRQUNELEtBQUs7UUFDTCw4REFBOEQ7UUFDOUQsVUFBVSxFQUFFLENBQUMsSUFBSSxpQkFBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDakQsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDOUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVDLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7S0FDN0MsQ0FBQztBQUNKLENBQUMsQ0FBQztBQWhDVyxRQUFBLE1BQU0sVUFnQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMZXZlbGVkTG9nTWV0aG9kIH0gZnJvbSAnd2luc3Rvbic7XG5pbXBvcnQgd2luc3RvbiBmcm9tICd3aW5zdG9uJztcblxuZXhwb3J0IHsgTG9nZ2VyIH0gZnJvbSAnd2luc3Rvbic7XG5cbmV4cG9ydCB0eXBlIExvZ0xldmVscyA9ICdkZWJ1ZycgfCAnZXJyb3InIHwgJ2ZhdGFsJyB8ICdpbmZvJyB8ICd0cmFjZScgfCAnd2Fybic7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSAoXG4gIHsgbGV2ZWwgfTogeyBsZXZlbDogTG9nTGV2ZWxzIH0gPSB7IGxldmVsOiAnZGVidWcnIH0sXG4gIHN0cmVhbT86IE5vZGVKUy5Xcml0ZVN0cmVhbSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAvLyApID0+IHtcbik6IHtcbiAgZGVidWc6IExldmVsZWRMb2dNZXRob2Q7XG4gIGVycm9yOiBMZXZlbGVkTG9nTWV0aG9kO1xuICBpbmZvOiBMZXZlbGVkTG9nTWV0aG9kO1xuICB3YXJuOiBMZXZlbGVkTG9nTWV0aG9kO1xufSA9PiB7XG4gIGNvbnN0IHdpbnN0b25Mb2dnZXIgPSB3aW5zdG9uLmNyZWF0ZUxvZ2dlcih7XG4gICAgZm9ybWF0OiB3aW5zdG9uLmZvcm1hdC5jb21iaW5lKFxuICAgICAgd2luc3Rvbi5mb3JtYXQubWV0YWRhdGEoKSxcbiAgICAgIHdpbnN0b24uZm9ybWF0LnRpbWVzdGFtcCgpLFxuICAgICAgd2luc3Rvbi5mb3JtYXQuanNvbigpLFxuXG4gICAgICB3aW5zdG9uLmZvcm1hdC5jb2xvcml6ZSgpLFxuICAgICAgd2luc3Rvbi5mb3JtYXQucHJldHR5UHJpbnQoKSxcbiAgICAgIHdpbnN0b24uZm9ybWF0LnNwbGF0KCksXG4gICAgICB3aW5zdG9uLmZvcm1hdC5zaW1wbGUoKVxuICAgICksXG4gICAgbGV2ZWwsXG4gICAgLy8gdHJhbnNwb3J0czogc3RyZWFtIHx8IFtuZXcgd2luc3Rvbi50cmFuc3BvcnRzLkNvbnNvbGUoe30pXSxcbiAgICB0cmFuc3BvcnRzOiBbbmV3IHdpbnN0b24udHJhbnNwb3J0cy5Db25zb2xlKHt9KV0sXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgZGVidWc6IHdpbnN0b25Mb2dnZXIuZGVidWcuYmluZCh3aW5zdG9uTG9nZ2VyKSxcbiAgICBlcnJvcjogd2luc3RvbkxvZ2dlci5lcnJvci5iaW5kKHdpbnN0b25Mb2dnZXIpLFxuICAgIGluZm86IHdpbnN0b25Mb2dnZXIuaW5mby5iaW5kKHdpbnN0b25Mb2dnZXIpLFxuICAgIHdhcm46IHdpbnN0b25Mb2dnZXIud2Fybi5iaW5kKHdpbnN0b25Mb2dnZXIpLFxuICB9O1xufTtcbiJdfQ==