@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
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlUmVwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL01vZHVsZVJlcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBeUM7QUFDekMscUNBQWlDO0FBSWpDLFFBQVE7QUFDUixvQ0FJaUI7QUFHakIsTUFBYSxZQUFhLFNBQVEsZUFBTTtJQUd2QyxZQUNDLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ3RCLElBQWdCO1FBRWhCLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQ1gsV0FBd0IsRUFDeEIsR0FBRyxJQUFvQjtRQUV2QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO1FBQ25FLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFBO1FBRXJDLEtBQUssTUFBTSxZQUFZLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakMsSUFBSSxVQUFVLENBQUMsVUFBVSxLQUFLLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUVBQXVFLENBQUMsQ0FBQTtZQUN6RixDQUFDO1FBQ0YsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzNCLElBQUksWUFBWSxDQUNmLFdBQVcsRUFDWCx1QkFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFDeEMsa0JBQVUsQ0FBQyxXQUFXLENBQ3RCLEVBQ0QsZUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FDbEMsQ0FBQTtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2QsQ0FBQztJQUVELE1BQU07UUFDTCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUN4QyxNQUFNLE1BQU0sR0FBRztZQUNkLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtTQUNwQyxDQUFBO1FBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUNkLElBQTRCLEVBQzVCLFdBQXdCO1FBRXhCLElBQUksSUFBbUIsQ0FBQTtRQUN2QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNaLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUMzQixJQUFJLFlBQVksQ0FDZixXQUFXLEVBQ1gsdUJBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUNwQyxJQUFJLENBQUMsSUFBSSxDQUNULEVBQ0QsZUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQ3hDLENBQUE7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNkLENBQUM7SUFFRCxRQUFRO1FBQ1AsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ25ELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUU1RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFBO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQ3ZCLE1BQWMsRUFDZCxXQUF3QjtRQUV4QixNQUFNLElBQUksS0FBSyxDQUFDLDRFQUE0RSxDQUFDLENBQUE7SUFDOUYsQ0FBQztJQUVELE1BQU0sQ0FBQyw4QkFBOEIsQ0FDcEMsTUFBYyxFQUNkLFdBQXdCO1FBRXhCLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxHQUFHLHVCQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdEYsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRTVFLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQTtRQUNsRixDQUFDO1FBQ0QsTUFBTSxFQUNMLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLGVBQWUsRUFBRSxrQkFBa0IsRUFDbkMsR0FBRyxlQUFNLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRWhFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzNCLElBQUksWUFBWSxDQUNmLFdBQVcsRUFDWCxVQUFVLEVBQ1YsTUFBTSxDQUFDLElBQUksQ0FDWCxFQUNELE1BQU0sQ0FDTixDQUFBO1FBRUQsT0FBTztZQUNOLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLGVBQWUsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQTtJQUNGLENBQUM7Q0FDRDtBQWpIRCxvQ0FpSEMifQ==