UNPKG

@beincom/node-profile

Version:

``` npm install @beincom/node-profile # yarn add @beincom/node-profile ```

38 lines 1.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.profileExpressHandler = exports.collectProfileAfterMs = exports.collectProfile = void 0; const common_1 = require("@nestjs/common"); const pprof_1 = require("@datadog/pprof"); const collectProfile = async (profiler) => { const profile = profiler.profile().profile; profiler.stop(); return (0, pprof_1.encode)(profile); }; exports.collectProfile = collectProfile; const collectProfileAfterMs = async (profiler, args, delayMs) => { profiler.start(args); if (delayMs === 0) { return (0, exports.collectProfile)(profiler); } return new Promise((resolve) => { setTimeout(() => { resolve((0, exports.collectProfile)(profiler)); }, delayMs); }); }; exports.collectProfileAfterMs = collectProfileAfterMs; const profileExpressHandler = (profileKind, useCaseHandler) => { return async (req, res) => { common_1.Logger.log(`Fetching ${profileKind} Profile`); try { const profileBuffer = await useCaseHandler(req); res.status(200).send(profileBuffer); } catch (error) { common_1.Logger.log(`Error collecting ${profileKind}`, error); res.sendStatus(500); } }; }; exports.profileExpressHandler = profileExpressHandler; //# sourceMappingURL=profile.handler.js.map