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

133 lines 10.8 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWwvaW5kZXgvTW9kdWxlSW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBSXZDLDRDQUF3QztBQUN4QywwQ0FBc0M7QUFDdEMsMERBQXNEO0FBQ3RELDhDQUEwQztBQWExQyxNQUFhLFdBQVksU0FBUSxxQkFBUztJQVN6QyxZQUNDLFVBQXVDLEVBQ3ZDLFdBQXdCLEVBQ3hCLEVBQW9CO1FBRXBCLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQW9CLFFBQVEsQ0FBQyxDQUFBO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQW9CLENBQUE7UUFDdkYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLG1CQUFRLENBQTBELFFBQVEsQ0FBQyxDQUFBO1FBQzlGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxtQkFBUSxDQUEyQixRQUFRLENBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsV0FBd0I7UUFDMUMsT0FBTyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFvQjtRQUNoQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFBO1FBQ3ZFLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELElBQVcsRUFBRTtRQUNaLE9BQU8sSUFBSSxDQUFDLEdBQXNCLENBQUE7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELE1BQU07UUFDTCxPQUFPO1lBQ04sRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1NBQ2hDLENBQUE7SUFDRixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FDZCxJQUEyQixFQUMzQixVQUF1QyxFQUN2QyxXQUF3QjtRQUV4QixJQUFJLElBQWtCLENBQUE7UUFDdEIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksR0FBRyxJQUFJLENBQUE7UUFDWixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDaEUsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQW9CLFFBQVEsQ0FBQyxDQUFBO1FBRTNELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUE7UUFDcEIsSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEIsV0FBVyxDQUFDLGVBQWUsQ0FDMUIsRUFBRSxFQUNGLE1BQU0sRUFDTixRQUFRLENBQ1IsQ0FBQTtRQUNGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxFQUNILHFCQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FDckQsQ0FBQTtZQUNGLENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUE7SUFDZCxDQUFDO0lBRUQsZ0JBQWdCLENBSWYsZ0JBQW1CLEVBQ25CLFFBQXNEO1FBRXRELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDbkQsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxPQUFPLGdCQUFxQixDQUFBO1FBQzdCLENBQUM7UUFFRCxJQUFJLGdCQUF1QyxDQUFBO1FBQzNDLElBQUksY0FBYyxHQUFnQyxJQUFJLENBQUMsUUFBUSxDQUFBO1FBRS9ELE1BQU0sSUFBSSxHQUFHLElBQUkseUJBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxJQUFJLFNBQVMsR0FBMEIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUV2RSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsUUFBUSxnQkFBZ0IsRUFBRSxDQUFDO29CQUMxQixLQUFLLEtBQUs7d0JBQ1QsT0FBTyxTQUFjLENBQUE7b0JBQ3RCLEtBQUssUUFBUTt3QkFBRSxDQUFDOzRCQUNmLElBQUksVUFBVSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTs0QkFDcEYsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQ0FDN0QsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUF1QixDQUFBOzRCQUN2RCxDQUFDOzRCQUNELFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQ3hCLFVBQVUsRUFDVixJQUFJLENBQ0osQ0FBQTs0QkFDRCxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTt3QkFDNUMsQ0FBQzt3QkFBQyxNQUFLO29CQUNQO3dCQUNDLE9BQU8sU0FBYyxDQUFBO2dCQUN2QixDQUFDO1lBQ0YsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDaEMsUUFBUSxnQkFBZ0IsRUFBRSxDQUFDO3dCQUMxQixLQUFLLEtBQUs7NEJBQ1QsT0FBTyxTQUFjLENBQUE7d0JBQ3RCLEtBQUssUUFBUTs0QkFDWixTQUFTLENBQUMsWUFBWSxFQUFFLENBQUE7NEJBQ3hCLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQ0FDbEMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLG1CQUFRLENBQStDLFFBQVEsQ0FBQyxDQUFBOzRCQUN0RixDQUFDOzRCQUNELE1BQUs7d0JBQ047NEJBQ0MsT0FBTyxTQUFjLENBQUE7b0JBQ3ZCLENBQUM7Z0JBQ0YsQ0FBQztnQkFDRCxnQkFBZ0IsR0FBRyxTQUFTLENBQUE7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDdEMsUUFBUSxnQkFBZ0IsRUFBRSxDQUFDO3dCQUMxQixLQUFLLEtBQUs7NEJBQ1QsT0FBTyxTQUFjLENBQUE7d0JBQ3RCLEtBQUssUUFBUTs0QkFDWixTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBb0IsUUFBUSxDQUFDLENBQUE7NEJBQzlELE1BQUs7d0JBQ047NEJBQ0MsT0FBTyxTQUFjLENBQUE7b0JBQ3ZCLENBQUM7Z0JBQ0YsQ0FBQztnQkFDRCxjQUFjLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQTtZQUNwQyxDQUFDO1FBQ0YsQ0FBQztRQUVELE9BQU8sZ0JBQXFCLENBQUE7SUFDN0IsQ0FBQztJQUVELFVBQVU7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEUsT0FBTyx1QkFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBeUMsQ0FBQyxDQUFBO1FBQ2pGLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQTtJQUNqQixDQUFDO0NBQ0Q7QUFyS0Qsa0NBcUtDIn0=