Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
import { Timer, toReqResMeta, Tracer } from '@skava/tracing/dist/server';
import { logger } from '../log';
export function decorateReqRes(req, res, args) {
    const { meta, timer } = args;
    req.timer = timer;
    req.meta = meta;
    res.meta = meta;
    // @@security @@perf @@fixme < needs improvements for sending data down context to apollo client
    // const ROOT = global as any
    // ROOT.expressReq = ROOT
    const url = req.originalUrl;
    const isAsset = url.includes('.js') || url.includes('.txt');
    if (isAsset === true) {
        return;
    }
    // @todo not sure why `end` is called multiple times?!
    const tracer = Tracer.init(req, 'reference-store').start('ssr');
    const end = res.end;
    res.end = function () {
        if (tracer.isDone === true) {
            logger.warn(`[react-server]{ssr} ending again`);
        }
        else {
            logger.info('[react-server]{ssr} ending request, responding', meta);
            tracer.finish('ssr');
            tracer.isDone = true;
        }
        end.apply(this, arguments);
        // reset
        // ROOT.expressReq = undefined
    };
}
export function tracingMiddleware(req, res, next) {
    const timer = Timer.init();
    const meta = toReqResMeta(req, res, timer);
    decorateReqRes(req, res, { timer, meta });
    next();
}
// can use this in places, but changed it to only call an endpoint at beginning and end, pino logging will happen elsewhere
// import { Tracer } from '@skava/tracing/dist/server'
// const tracer = Tracer.init(req, 'reference-store').start('render')
//   tracer.meta.cache = {
//     isCached: true,
//   }
//   tracer.finish('render')
//# sourceMappingURL=tracing.js.map