@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
138 lines • 10.9 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWwvaW5kaWNlcy9Nb2R1bGVJbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFJdkMsNENBQXdDO0FBQ3hDLDBDQUFzQztBQUN0QywwREFBc0Q7QUFDdEQsOENBQTBDO0FBZTFDLE1BQWEsV0FBWSxTQUFRLHFCQUFTO0lBU3pDLFlBQ0MsVUFBdUMsRUFDdkMsV0FBd0IsRUFDeEIsRUFBb0I7UUFFcEIsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBb0MsUUFBUSxDQUFDLENBQUE7UUFDekUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDOUIsSUFBSSxDQUFDLEdBQUc7WUFDUCxFQUFFLEtBQUssU0FBUztnQkFDZixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFxQixDQUFBO1FBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxtQkFBUSxDQUd6QixRQUFRLENBQUMsQ0FBQTtRQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxtQkFBUSxDQUEyQixRQUFRLENBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsV0FBd0I7UUFDMUMsT0FBTyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFvQjtRQUNoQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFBO1FBQ3ZFLENBQUM7UUFDRCxJQUFJ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