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

113 lines 8.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GlobalIndex = void 0; const ModuleIndex_1 = require("./ModuleIndex"); const BaseModel_1 = require("../BaseModel"); const ModelMap_1 = require("../ModelMap"); class GlobalIndex extends BaseModel_1.BaseModel { constructor(engineModule, currentId = 0) { super(); this.currentId = currentId; this.engineModule = engineModule; this.moduleMap = new ModelMap_1.ModelMap('string'); this.moduleReverseIndex = new ModelMap_1.ModelMap('number'); this.pathReverseIndex = new ModelMap_1.ModelMap('number'); this.sourceNodeReverseIndex = new ModelMap_1.ModelMap('number'); } toBuffer() { throw new Error('GlobalIndex.toBuffer: not yet implemented'); } toJSON() { return { currentId: this.currentId, moduleMap: this.moduleMap.toJSON() || {} }; } static fromJSON(json, engineModule) { let data; if (typeof json === 'string') { data = JSON.parse(json); } else { data = json; } const result = new GlobalIndex(engineModule, data.currentId); for (const key of Object.keys(data.moduleMap)) { result.moduleMap.set(key, ModuleIndex_1.ModuleIndex.fromJSON(data.moduleMap[key], key, result)); } return result; } setReverseIndex(id, index, type) { switch (type) { case 'module': this.moduleReverseIndex.set(id, index); break; case 'path': this.pathReverseIndex.set(id, index); break; case 'sourceNode': this.sourceNodeReverseIndex.set(id, index); break; } } getModuleIndexByID(id) { return this.moduleReverseIndex.get(id); } getPathIndexByID(id) { return this.pathReverseIndex.get(id); } getSourceNodeIndexByID(id) { return this.sourceNodeReverseIndex.get(id); } newId(index, type) { const id = this.currentId++; this.setReverseIndex(id, index, type); return id; } getLangInternalIndex(indexRequestType) { const moduleIdentifier = '{node}'; let moduleIndex = this.moduleMap.get(moduleIdentifier); if (moduleIndex === undefined) { switch (indexRequestType) { case 'get': return undefined; case 'upsert': moduleIndex = new ModuleIndex_1.ModuleIndex(moduleIdentifier, this); this.moduleMap.set(moduleIdentifier, moduleIndex); } } return moduleIndex; } getModuleIndex(indexRequestType, nodeModuleIdentifier) { const moduleIdentifier = nodeModuleIdentifier !== undefined ? nodeModuleIdentifier : '{self}'; let moduleIndex = this.moduleMap.get(moduleIdentifier); if (moduleIndex === undefined) { switch (indexRequestType) { case 'get': return undefined; case 'upsert': moduleIndex = new ModuleIndex_1.ModuleIndex(moduleIdentifier, this); this.moduleMap.set(moduleIdentifier, moduleIndex); break; default: return undefined; } } return moduleIndex; } getSourceNodeIndex(indexRequestType, identifier) { var _a, _b; let moduleIndex = undefined; if (identifier.isLangInternal()) { moduleIndex = this.getLangInternalIndex(indexRequestType); } else { moduleIndex = this.getModuleIndex(indexRequestType, (_a = identifier.nodeModule) === null || _a === void 0 ? void 0 : _a.identifier); } return (_b = moduleIndex === null || moduleIndex === void 0 ? void 0 : moduleIndex.getFilePathIndex(indexRequestType, identifier.path)) === null || _b === void 0 ? void 0 : _b.getSourceNodeIndex(indexRequestType, identifier.sourceNodeIdentifier); } } exports.GlobalIndex = GlobalIndex; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2xvYmFsSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWwvaW5kaWNlcy9HbG9iYWxJbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBMkM7QUFJM0MsNENBQXdDO0FBQ3hDLDBDQUFzQztBQWV0QyxNQUFhLFdBQVksU0FBUSxxQkFBUztJQVl6QyxZQUFZLFlBQXdCLEVBQUUsU0FBUyxHQUFHLENBQUM7UUFDbEQsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksbUJBQVEsQ0FDNUIsUUFBUSxDQUNSLENBQUE7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxtQkFBUSxDQUNyQyxRQUFRLENBQ1IsQ0FBQTtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLG1CQUFRLENBQTJCLFFBQVEsQ0FBQyxDQUFBO1FBQ3hFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLG1CQUFRLENBR3hDLFFBQVEsQ0FBQyxDQUFBO0lBQ1osQ0FBQztJQUVELFFBQVE7UUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELE1BQU07UUFDTCxPQUFPO1lBQ04sU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7U0FDeEMsQ0FBQTtJQUNGLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUNkLElBQTJCLEVBQzNCLFlBQXdCO1FBRXhCLElBQUksSUFBa0IsQ0FBQTtRQUN0QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNaLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRTVELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FDbkIsR0FBa0MsRUFDbEMseUJBQVcsQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBa0MsQ0FBQyxFQUNsRCxHQUFrQyxFQUNsQyxNQUFNLENBQ04sQ0FDRCxDQUFBO1FBQ0YsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFBO0lBQ2QsQ0FBQztJQUVELGVBQWUsQ0FDZCxFQUFVLEVBQ1YsS0FNVSxFQUNWLElBQU87UUFFUCxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2QsS0FBSyxRQUFRO2dCQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBcUIsRUFBRSxLQUFvQixDQUFDLENBQUE7Z0JBQ3hFLE1BQUs7WUFDTixLQUFLLE1BQU07Z0JBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFtQixFQUFFLEtBQWtCLENBQUMsQ0FBQTtnQkFDbEUsTUFBSztZQUNOLEtBQUssWUFBWTtnQkFDaEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FDOUIsRUFBeUIsRUFDekIsS0FBd0QsQ0FDeEQsQ0FBQTtnQkFDRCxNQUFLO1FBQ1AsQ0FBQztJQUNGLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFtQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQWlCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsc0JBQXNCLENBQ3JCLEVBQXVCO1FBRXZCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUNKLEtBR2tELEVBQ2xELElBQXFCO1FBRXJCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDckMsT0FBTyxFQUFFLENBQUE7SUFDVixDQUFDO0lBRUQsb0JBQW9CLENBR2xCLGdCQUFtQjtRQUNwQixNQUFNLGdCQUFnQixHQUFHLFFBQXVDLENBQUE7UUFDaEUsSUFBSSxXQUFXLEdBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUNyQyxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixRQUFRLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFCLEtBQUssS0FBSztvQkFDVCxPQUFPLFNBQWMsQ0FBQTtnQkFDdEIsS0FBSyxRQUFRO29CQUNaLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ25ELENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxXQUFnQixDQUFBO0lBQ3hCLENBQUM7SUFFRCxjQUFjLENBSWIsZ0JBQW1CLEVBQ25CLG9CQUFrRDtRQUVsRCxNQUFNLGdCQUFnQixHQUNyQixvQkFBb0IsS0FBSyxTQUFTO1lBQ2pDLENBQUMsQ0FBQyxvQkFBb0I7WUFDdEIsQ0FBQyxDQUFFLFFBQXdDLENBQUE7UUFFN0MsSUFBSSxXQUFXLEdBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUNyQyxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixRQUFRLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFCLEtBQUssS0FBSztvQkFDVCxPQUFPLFNBQWMsQ0FBQTtnQkFDdEIsS0FBSyxRQUFRO29CQUNaLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFBO29CQUNqRCxNQUFLO2dCQUNOO29CQUNDLE9BQU8sU0FBYyxDQUFBO1lBQ3ZCLENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxXQUFnQixDQUFBO0lBQ3hCLENBQUM7SUFFRCxrQkFBa0IsQ0FLaEIsZ0JBQW1CLEVBQUUsVUFBNEI7O1FBQ2xELElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQTtRQUMzQixJQUFJLFVBQVUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUMxRCxDQUFDO2FBQU0sQ0FBQztZQUNQLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUNoQyxnQkFBZ0IsRUFDaEIsTUFBQSxVQUFVLENBQUMsVUFBVSwwQ0FBRSxVQUFVLENBQ2pDLENBQUE7UUFDRixDQUFDO1FBRUQsT0FBTyxNQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FDZixnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLDBDQUNuRCxrQkFBa0IsQ0FDbkIsZ0JBQWdCLEVBQ2hCLFVBQVUsQ0FBQyxvQkFBb0IsQ0FDMUIsQ0FBQTtJQUNSLENBQUM7Q0FDRDtBQWhNRCxrQ0FnTUMifQ==