@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
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");
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2xvYmFsSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWwvaW5kaWNlcy9HbG9iYWxJbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBMkM7QUFJM0MsNENBQXdDO0FBQ3hDLDBDQUFzQztBQWV0QyxNQUFhLFdBQVksU0FBUSxxQkFBUztJQVl6QyxZQUFZLFlBQXdCLEVBQUUsU0FBUyxHQUFHLENBQUM7UUFDbEQsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksbUJBQVEsQ0FDNUIsUUFBUSxDQUNSLENBQUE7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxtQkFBUSxDQUNyQyxRQUFRLENBQ1IsQ0FBQTtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLG1CQUFRLENBQTJCLFFBQVEsQ0FBQyxDQUFBO1FBQ3hFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLG1CQUFRLENBR3hDLFFBQVEsQ0FBQyxDQUFBO0lBQ1osQ0FBQztJQUVELFFBQVE7UUFDUCxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELE1BQU07UUFDTCxPQUFPO1lBQ04sU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7U0FDeEMsQ0FBQTtJQUNGLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUNkLElBQTJCLEVBQzNCLFlBQXdCO1FBRXhCLElBQUksSUFBa0IsQ0FBQTtRQUN0QixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLElBQUksR0FBRyxJQUFJLENBQUMs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