@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
JavaScript
;
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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