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