All files / core/blong-gogo/src pino-pretty.ts

78.82% Statements 67/85
76.92% Branches 10/13
100% Functions 2/2
78.82% Lines 67/85

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 8628x 28x 28x 28x 28x 28x 28x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x 312x                   312x 312x                   312x 312x 312x 312x 28x 28x  
import type PinoPretty from 'pino-pretty';
import pretty from 'pino-pretty';
 
export default (options: PinoPretty.PrettyOptions) =>
    pretty({
        ...options,
        messageFormat(
            log: {
                id?: string;
                context?: string;
                prefix?: string;
                [messageKey: string]: unknown;
                config?: unknown;
                configBase?: unknown;
                req?: {
                    method: string;
                    url: string;
                    headers?: Record<string, string>;
                    body?: unknown;
                    json?: unknown;
                };
                res?: {
                    statusCode: number;
                    statusMessage: string;
                    headers?: Record<string, string>;
                    body?: unknown;
                };
                $meta?: {
                    mtid?: string;
                    method?: string;
                };
            },
            messageKey,
            levelLabel,
            {colors},
        ) {
            const {
                id,
                context,
                prefix,
                [messageKey]: message,
                config,
                configBase,
                req,
                res,
                $meta,
            } = log;
            return [
                id && colors.dim(`blong://log/${id}`),
                context && colors.greenBright(context),
                prefix,
                $meta?.mtid && colors.magenta($meta.mtid),
                $meta?.method && colors.yellow($meta.method),
                message,
                config &&
                    `\u001B]8;;blong://json/${JSON.stringify(config)}\u001B\\config\u001B]8;;\u001B\\`,
                configBase,
                req &&
                    !res &&
                    `▶ ${colors.magenta(req.method)} ${colors.yellow(req.url)}${
                        req.headers
                            ? `\n${Object.entries(req.headers)
                                  .map(
                                      ([key, value]) =>
                                          `    ${colors.blue(key)}: ${colors.green(value)}`,
                                  )
                                  .join('\n')}`
                            : ''
                    }`,
                res &&
                    `◀ ${req ? `${colors.magenta(req.method)} ${colors.yellow(req.url)} ` : ''}${colors.blueBright(res.statusCode)}${
                        res.headers
                            ? `\n${Object.entries(res.headers)
                                  .map(
                                      ([key, value]) =>
                                          `    ${colors.blue(key)}: ${colors.green(value)}`,
                                  )
                                  .join('\n')}`
                            : ''
                    }`,
            ]
                .filter(Boolean)
                .join(' ');
        },
    });