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

138 lines 10.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModuleIndex = void 0; const PathIndex_1 = require("./PathIndex"); const BaseModel_1 = require("../BaseModel"); const ModelMap_1 = require("../ModelMap"); const UnifiedPath_1 = require("../../system/UnifiedPath"); const NodeModule_1 = require("../NodeModule"); class ModuleIndex extends BaseModel_1.BaseModel { constructor(identifier, globalIndex, id) { super(); this.children = new ModelMap_1.ModelMap('string'); this.identifier = identifier; this.globalIndex = globalIndex; this._id = id !== undefined ? id : globalIndex.newId(this, 'module'); this.pathMap = new ModelMap_1.ModelMap('string'); this.reversePathMap = new ModelMap_1.ModelMap('number'); } insertToOtherIndex(globalIndex) { return globalIndex.getModuleIndex('upsert', this.identifier); } addToPathMap(pathIndex) { if (pathIndex.id === undefined) { throw new Error('ModuleIndex.addToPathMap: given pathIndex has no id'); } this.pathMap.set(pathIndex.identifier, pathIndex); this.reversePathMap.set(pathIndex.id, pathIndex); } get id() { return this._id; } toBuffer() { throw new Error('ModuleIndex.toBuffer: not yet implemented'); } toJSON() { return { id: this.id, children: this.children.toJSON() }; } static fromJSON(json, identifier, globalIndex) { let data; if (typeof json === 'string') { data = JSON.parse(json); } else { data = json; } const result = new ModuleIndex(identifier, globalIndex, data.id); result.children = new ModelMap_1.ModelMap('string'); const id = result.id; if (id !== undefined) { globalIndex.setReverseIndex(id, result, 'module'); } if (data.children !== undefined) { for (const key of Object.keys(data.children)) { result.children.set(key, PathIndex_1.PathIndex.fromJSON(data.children[key], [key], result)); } } return result; } getFilePathIndex(indexRequestType, filePath) { const indexFromPathMap = this.pathMap.get(filePath); if (indexFromPathMap !== undefined) { return indexFromPathMap; } let currentPathIndex; let currentPathMap = this.children; const path = new UnifiedPath_1.UnifiedPath(filePath); const pathParts = path.split(); for (let i = 0; i < pathParts.length; i++) { let pathIndex = currentPathMap.get(pathParts[i]); if (pathIndex === undefined) { switch (indexRequestType) { case 'get': return undefined; case 'upsert': { let slicedPath = new UnifiedPath_1.UnifiedPath('./') .join(...pathParts.slice(0, i + 1)) .toString(); if (slicedPath.startsWith('./node:') || slicedPath === './') { slicedPath = slicedPath.slice(2); } pathIndex = new PathIndex_1.PathIndex(slicedPath, this); currentPathMap.set(pathParts[i], pathIndex); } break; default: return undefined; } } if (i === pathParts.length - 1) { if (pathIndex.id === undefined) { switch (indexRequestType) { case 'get': return undefined; case 'upsert': pathIndex.selfAssignId(); if (pathIndex.file === undefined) { pathIndex.file = new ModelMap_1.ModelMap('string'); } break; default: return undefined; } } currentPathIndex = pathIndex; } else { if (pathIndex.children === undefined) { switch (indexRequestType) { case 'get': return undefined; case 'upsert': pathIndex.children = new ModelMap_1.ModelMap('string'); break; default: return undefined; } } currentPathMap = pathIndex.children; } } return currentPathIndex; } nodeModule() { if (this.identifier !== '{self}' && this.identifier !== '{node}') { return NodeModule_1.NodeModule.fromIdentifier(this.identifier); } return undefined; } } exports.ModuleIndex = ModuleIndex; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWwvaW5kaWNlcy9Nb2R1bGVJbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFJdkMsNENBQXdDO0FBQ3hDLDBDQUFzQztBQUN0QywwREFBc0Q7QUFDdEQsOENBQTBDO0FBZTFDLE1BQWEsV0FBWSxTQUFRLHFCQUFTO0lBU3pDLFlBQ0MsVUFBdUMsRUFDdkMsV0FBd0IsRUFDeEIsRUFBb0I7UUFFcEIsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBb0MsUUFBUSxDQUFDLENBQUE7UUFDekUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLEdBQUc7WUFDUCxFQUFFLEtBQUssU0FBUztnQkFDZixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFxQixDQUFBO1FBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxtQkFBUSxDQUd6QixRQUFRLENBQUMsQ0FBQTtRQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxtQkFBUSxDQUEyQixRQUFRLENBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsV0FBd0I7UUFDMUMsT0FBTyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFvQjtRQUNoQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFBO1FBQ3ZFLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELElBQVcsRUFBRTtRQUNaLE9BQU8sSUFBSSxDQUFDLEdBQXNCLENBQUE7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELE1BQU07UUFDTCxPQUFPO1lBQ04sRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1NBQ2hDLENBQUE7SUFDRixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FDZCxJQUEyQixFQUMzQixVQUF1QyxFQUN2QyxXQUF3QjtRQUV4QixJQUFJLElBQWtCLENBQUE7UUFDdEIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksR0FBRyxJQUFJLENBQUE7UUFDWixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDaEUsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQW9DLFFBQVEsQ0FBQyxDQUFBO1FBRTNFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDcEIsSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEIsV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ2xELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUM1QixJQUFJLENBQUMsUUFBUSxDQUNlLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ2xCLEdBQUcsRUFDSCxxQkFBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQ3JELENBQUE7WUFDRixDQUFDO1FBQ0YsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFBO0lBQ2QsQ0FBQztJQUVELGdCQUFnQixDQUlmLGdCQUFtQixFQUNuQixRQUFzRDtRQUV0RCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ25ELElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEMsT0FBTyxnQkFBcUIsQ0FBQTtRQUM3QixDQUFDO1FBRUQsSUFBSSxnQkFBdUMsQ0FBQTtRQUMzQyxJQUFJLGNBQWMsR0FBZ0MsSUFBSSxDQUFDLFFBQVEsQ0FBQTtRQUUvRCxNQUFNLElBQUksR0FBRyxJQUFJLHlCQUFXLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0MsSUFBSSxTQUFTLEdBQTBCLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFFdkUsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzdCLFFBQVEsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDMUIsS0FBSyxLQUFLO3dCQUNULE9BQU8sU0FBYyxDQUFBO29CQUN0QixLQUFLLFFBQVE7d0JBQ1osQ0FBQzs0QkFDQSxJQUFJLFVBQVUsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDO2lDQUNwQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUNBQ2xDLFFBQVEsRUFBRSxDQUFBOzRCQUNaLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7Z0NBQzdELFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBdUIsQ0FBQTs0QkFDdkQsQ0FBQzs0QkFDRCxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTs0QkFDM0MsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUE7d0JBQzVDLENBQUM7d0JBQ0QsTUFBSztvQkFDTjt3QkFDQyxPQUFPLFNBQWMsQ0FBQTtnQkFDdkIsQ0FBQztZQUNGLENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ2hDLFFBQVEsZ0JBQWdCLEVBQUUsQ0FBQzt3QkFDMUIsS0FBSyxLQUFLOzRCQUNULE9BQU8sU0FBYyxDQUFBO3dCQUN0QixLQUFLLFFBQVE7NEJBQ1osU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFBOzRCQUN4QixJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0NBQ2xDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxtQkFBUSxDQUczQixRQUFRLENBQUMsQ0FBQTs0QkFDWixDQUFDOzRCQUNELE1BQUs7d0JBQ047NEJBQ0MsT0FBTyxTQUFjLENBQUE7b0JBQ3ZCLENBQUM7Z0JBQ0YsQ0FBQztnQkFDRCxnQkFBZ0IsR0FBRyxTQUFTLENBQUE7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDdEMsUUFBUSxnQkFBZ0IsRUFBRSxDQUFDO3dCQUMxQixLQUFLLEtBQUs7NEJBQ1QsT0FBTyxTQUFjLENBQUE7d0JBQ3RCLEtBQUssUUFBUTs0QkFDWixTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FHL0IsUUFBUSxDQUFDLENBQUE7NEJBQ1gsTUFBSzt3QkFDTjs0QkFDQyxPQUFPLFNBQWMsQ0FBQTtvQkFDdkIsQ0FBQztnQkFDRixDQUFDO2dCQUNELGNBQWMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFBO1lBQ3BDLENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxnQkFBcUIsQ0FBQTtJQUM3QixDQUFDO0lBRUQsVUFBVTtRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsRSxPQUFPLHVCQUFVLENBQUMsY0FBYyxDQUMvQixJQUFJLENBQUMsVUFBeUMsQ0FDOUMsQ0FBQTtRQUNGLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQTtJQUNqQixDQUFDO0NBQ0Q7QUFsTEQsa0NBa0xDIn0=