UNPKG

@oaklean/profiler-core

Version:

Part of the @oaklean suite. It provides all basic functions to work with the `.oak` file format. It allows parsing the `.oak` file format as well as tools for analyzing the measurement values. It also provides all necessary capabilities required for prec

67 lines 6.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModuleReport = void 0; const NodeModule_1 = require("./NodeModule"); const Report_1 = require("./Report"); // Types const types_1 = require("../types"); class ModuleReport extends Report_1.Report { constructor(moduleIndex, nodeModule, kind) { super(moduleIndex, kind); this.nodeModule = nodeModule; } static merge(moduleIndex, ...args) { if (args.length === 0) { throw new Error('ModuleReport.merge: no ModuleReports were given'); } const nodeModule = args[0].nodeModule; for (const moduleReport of args) { if (nodeModule.identifier !== moduleReport.nodeModule.identifier) { throw new Error('ModuleReport.merge: all ModuleReports should be from the same module.'); } } const result = Object.assign(new ModuleReport(moduleIndex, NodeModule_1.NodeModule.fromJSON(nodeModule.toJSON()), types_1.ReportKind.accumulated), Report_1.Report.merge(moduleIndex, ...args)); return result; } toJSON() { const projectReportJSON = super.toJSON(); const result = { nodeModule: this.nodeModule.toJSON() }; return Object.assign(result, projectReportJSON); } static fromJSON(json, moduleIndex) { let data; if (typeof json === 'string') { data = JSON.parse(json); } else { data = json; } const result = Object.assign(new ModuleReport(moduleIndex, NodeModule_1.NodeModule.fromJSON(data.nodeModule), data.kind), Report_1.Report.fromJSONReport(data, moduleIndex)); return result; } toBuffer() { const nodeModuleBuffer = this.nodeModule.toBuffer(); const reportBuffer = super.toBuffer(types_1.ReportType.ModuleReport); return Buffer.concat([nodeModuleBuffer, reportBuffer]); } static consumeFromBuffer(buffer, moduleIndex) { throw new Error('ModuleReport.consumeFromBuffer: use consumeFromBuffer_ModuleReport instead'); } static consumeFromBuffer_ModuleReport(buffer, globalIndex) { const { instance: nodeModule, remainingBuffer } = NodeModule_1.NodeModule.consumeFromBuffer(buffer); const moduleIndex = globalIndex.getModuleIndex('get', nodeModule.identifier); if (moduleIndex === undefined) { throw new Error('ModuleReport.consumeFromBuffer: could not resolve module index'); } const { instance: report, remainingBuffer: newRemainingBuffer } = Report_1.Report.consumeFromBufferReport(remainingBuffer, moduleIndex); const result = Object.assign(new ModuleReport(moduleIndex, nodeModule, report.kind), report); return { instance: result, remainingBuffer: newRemainingBuffer }; } } exports.ModuleReport = ModuleReport; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlUmVwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL01vZHVsZVJlcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBeUM7QUFDekMscUNBQWlDO0FBSWpDLFFBQVE7QUFDUixvQ0FJaUI7QUFHakIsTUFBYSxZQUFhLFNBQVEsZUFBTTtJQUd2QyxZQUNDLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ3RCLElBQWdCO1FBRWhCLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQ1gsV0FBd0IsRUFDeEIsR0FBRyxJQUFvQjtRQUV2QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO1FBQ25FLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFBO1FBRXJDLEtBQUssTUFBTSxZQUFZLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakMsSUFBSSxVQUFVLENBQUMsVUFBVSxLQUFLLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUVBQXVFLENBQUMsQ0FBQTtZQUN6RixDQUFDO1FBQ0YsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzNCLElBQUksWUFBWSxDQUNmLFdBQVcsRUFDWCx1QkFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFDeEMsa0JBQVUsQ0FBQyxXQUFXLENBQ3RCLEVBQ0QsZUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FD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