@beincom/node-profile
Version:
``` npm install @beincom/node-profile # yarn add @beincom/node-profile ```
38 lines • 1.4 kB
JavaScript
;
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