"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 metricConfig_1 = require("../utils/metricConfig"); const serviceManager_1 = require("../serviceManager"); class ProfilingHeap { constructor() { this.defaultConf = { samplingInterval: 32768 }; this.inspectorService = serviceManager_1.ServiceManager.get('inspector'); } init(config) { return tslib_1.__awaiter(this, void 0, void 0, function* () { config = metricConfig_1.default.getConfig(config, this.defaultConf); this.config = config; this.inspectorService.createSession(); this.inspectorService.connect(); return this.inspectorService.post('HeapProfiler.enable'); }); } destroy() { this.inspectorService.disconnect(); } start() { return this.inspectorService.post('HeapProfiler.startSampling', { samplingInterval: this.config.samplingInterval }); } 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* () { const chunks = []; this.inspectorService.on('HeapProfiler.addHeapSnapshotChunk', (data) => { chunks.push(data.params.chunk); }); yield this.inspectorService.post('HeapProfiler.takeHeapSnapshot', { reportProgress: false }); return chunks.join(''); }); } getProfileInfo() { return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () { let data; try { data = yield this.inspectorService.post('HeapProfiler.stopSampling'); } catch (err) { debug('Heap profiling stopped !'); return reject(err); } resolve(JSON.stringify(data.profile)); })); } } exports.default = ProfilingHeap; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsaW5nSGVhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm9maWxpbmcvcHJvZmlsaW5nSGVhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBeUI7QUFDekIsTUFBTSxLQUFLLEdBQUcsZUFBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBRXBDLHdEQUFnRDtBQUVoRCxzREFBa0Q7QUFFbEQ7SUFVRTtRQU5RLGdCQUFXLEdBQUc7WUFDcEIsZ0JBQWdCLEVBQUUsS0FBSztTQUN4QixDQUFBO1FBS0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLCtCQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3pELENBQUM7SUFFSyxJQUFJLENBQUUsTUFBTzs7WUFDakIsTUFBTSxHQUFHLHNCQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7WUFFcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFBO1lBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUMvQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtRQUMxRCxDQUFDO0tBQUE7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQzlELGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO1NBQy9DLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFSyxJQUFJOztZQUNSLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQzlCLENBQUM7S0FBQTtJQUVLLFlBQVk7O1lBQ2hCLE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUE7WUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNyRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDaEMsQ0FBQyxDQUFDLENBQUE7WUFFRixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUU7Z0JBQ2hFLGNBQWMsRUFBRSxLQUFLO2FBQ3RCLENBQUMsQ0FBQTtZQUVGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN4QixDQUFDO0tBQUE7SUFFTyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBTyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxJQUFJLENBQUE7WUFDUixJQUFJO2dCQUNGLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQTthQUNyRTtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO2dCQUNqQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNuQjtZQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQ3ZDLENBQUMsQ0FBQSxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0Y7QUEvREQsZ0NBK0RDIn0=