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

112 lines 9.15 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"); const SourceNodeRegex_1 = require("../../constants/SourceNodeRegex"); 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.path === '' || SourceNodeRegex_1.LangInternalPathRegex.test(identifier.path)) { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2xvYmFsSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWwvaW5kZXgvR2xvYmFsSW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBQTJDO0FBSTNDLDRDQUF3QztBQUN4QywwQ0FBc0M7QUFHdEMscUVBQXVFO0FBYXZFLE1BQWEsV0FBWSxTQUFRLHFCQUFTO0lBU3pDLFlBQVksWUFBd0IsRUFBRSxTQUFTLEdBQUcsQ0FBQztRQUNsRCxLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxtQkFBUSxDQUEyQyxRQUFRLENBQUMsQ0FBQTtRQUNqRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxtQkFBUSxDQUFzQixRQUFRLENBQUMsQ0FBQTtRQUNyRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxtQkFBUSxDQUFvQixRQUFRLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxtQkFBUSxDQUEwRCxRQUFRLENBQUMsQ0FBQTtJQUM5RyxDQUFDO0lBRUQsUUFBUTtRQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBRUQsTUFBTTtRQUNMLE9BQU87WUFDTixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtTQUN4QyxDQUFBO0lBQ0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQ2QsSUFBMkIsRUFDM0IsWUFBd0I7UUFFeEIsSUFBSSxJQUFrQixDQUFBO1FBQ3RCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxH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