Current File : //lib/node_modules/pm2/node_modules/@pm2/io/build/main/src/profiling/profilingHeapFallback.js |
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const debug_1 = require("debug");
const debug = debug_1.default('axm:profiling');
const module_1 = require("../utils/module");
const configuration_1 = require("../configuration");
class ProfilingHeapFallback {
constructor() {
this.MODULE_NAME = 'v8-profiler-node8';
this.FALLBACK_MODULE_NAME = 'v8-profiler';
}
init() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
let path;
let moduleName = this.MODULE_NAME;
try {
path = yield module_1.default.getModulePath(this.MODULE_NAME);
}
catch (e) {
try {
moduleName = this.FALLBACK_MODULE_NAME;
path = yield module_1.default.getModulePath(this.FALLBACK_MODULE_NAME);
}
catch (err) {
configuration_1.default.configureModule({
heapdump: false
});
throw new Error('Profiler not loaded !');
}
}
this.profiler = module_1.default.loadModule(path, moduleName);
const enable = !(this.profiler instanceof Error);
configuration_1.default.configureModule({
heapdump: enable
});
});
}
destroy() {
debug('Profiler destroyed !');
}
start() {
this.snapshot = this.profiler.takeSnapshot('km-heap-snapshot');
}
stop() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return this.getProfileInfo();
});
}
takeSnapshot() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
this.start();
return this.stop();
});
}
getProfileInfo() {
return new Promise(resolve => {
let buffer = '';
this.snapshot.serialize((data, length) => {
buffer += data;
}, () => {
this.snapshot.delete();
resolve(buffer);
});
}).then((buffer) => {
return buffer;
});
}
}
exports.default = ProfilingHeapFallback;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsaW5nSGVhcEZhbGxiYWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb2ZpbGluZy9wcm9maWxpbmdIZWFwRmFsbGJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQXlCO0FBQ3pCLE1BQU0sS0FBSyxHQUFHLGVBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUVwQyw0Q0FBbUM7QUFDbkMsb0RBQTRDO0FBRTVDO0lBQUE7UUFJVSxnQkFBVyxHQUFHLG1CQUFtQixDQUFBO1FBQ2pDLHlCQUFvQixHQUFHLGFBQWEsQ0FBQTtJQStEOUMsQ0FBQztJQTdETyxJQUFJOztZQUNSLElBQUksSUFBSSxDQUFBO1lBQ1IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtZQUVqQyxJQUFJO2dCQUNGLElBQUksR0FBRyxNQUFNLGdCQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTthQUNuRDtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLElBQUk7b0JBQ0YsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQTtvQkFDdEMsSUFBSSxHQUFHLE1BQU0sZ0JBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUE7aUJBQzVEO2dCQUFDLE9BQU8sR0FBRyxFQUFFO29CQUNaLHVCQUFhLENBQUMsZUFBZSxDQUFDO3dCQUM1QixRQUFRLEVBQUcsS0FBSztxQkFDakIsQ0FBQyxDQUFBO29CQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtpQkFDekM7YUFDRjtZQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBRWxELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxZQUFZLEtBQUssQ0FBQyxDQUFBO1lBRWhELHVCQUFhLENBQUMsZUFBZSxDQUFDO2dCQUM1QixRQUFRLEVBQUcsTUFBTTthQUNsQixDQUFDLENBQUE7UUFDSixDQUFDO0tBQUE7SUFFRCxPQUFPO1FBQ0wsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUVLLElBQUk7O1lBQ1IsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDOUIsQ0FBQztLQUFBO0lBRUssWUFBWTs7WUFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDcEIsQ0FBQztLQUFBO0lBRU8sY0FBYztRQUNwQixPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzNCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUNyQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDZixNQUFNLElBQUksSUFBSSxDQUFBO1lBQ2hCLENBQUMsRUFDRCxHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtnQkFFdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pCLENBQUMsQ0FDRixDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakIsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQXBFRCx3Q0FvRUMifQ==