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

156 lines 13.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PathIndex = void 0; const SourceNodeIndex_1 = require("./SourceNodeIndex"); const BaseModel_1 = require("../BaseModel"); const ModelMap_1 = require("../ModelMap"); const SourceNodeIdentifierHelper_1 = require("../../helper/SourceNodeIdentifierHelper"); const UnifiedPath_1 = require("../../system/UnifiedPath"); const GlobalIdentifier_1 = require("../../system/GlobalIdentifier"); // Types const types_1 = require("../../types"); class PathIndex extends BaseModel_1.BaseModel { constructor(identifier, moduleIndex, id) { super(); this.identifier = identifier; this.moduleIndex = moduleIndex; this._id = id; this.sourceNodeMap = new ModelMap_1.ModelMap('string'); this.reverseSourceNodeMap = new ModelMap_1.ModelMap('number'); } get containsUncommittedChanges() { return this._containsUncommittedChanges === undefined ? false : true; } set containsUncommittedChanges(v) { this._containsUncommittedChanges = v === true ? true : undefined; } insertToOtherIndex(globalIndex) { const newModuleIndex = this.moduleIndex.insertToOtherIndex(globalIndex); return newModuleIndex.getFilePathIndex('upsert', this.identifier); } toBuffer() { throw new Error('PathIndex.toBuffer: not yet implemented'); } sourceNodeIDs() { return Array.from(this.reverseSourceNodeMap.keys()); } addToSourceNodeMap(sourceNodeIndex) { this.sourceNodeMap.set(sourceNodeIndex.identifier, sourceNodeIndex); this.reverseSourceNodeMap.set(sourceNodeIndex.id, sourceNodeIndex); } set id(id) { this._id = id; } get id() { return this._id; } get pathId() { return this._id; } selfAssignId() { this.id = this.moduleIndex.globalIndex.newId(this, 'path'); this.moduleIndex.addToPathMap(this); } toJSON() { var _a, _b; const containsUncommittedChanges = this.containsUncommittedChanges ? { cucc: true } : {}; return Object.assign({ id: this._id, children: (_a = this.children) === null || _a === void 0 ? void 0 : _a.toJSON(), file: (_b = this.file) === null || _b === void 0 ? void 0 : _b.toJSON() }, containsUncommittedChanges); } static fromJSON(json, pathParts, moduleIndex) { let data; if (typeof json === 'string') { data = JSON.parse(json); } else { data = json; } let identifier; if (GlobalIdentifier_1.GlobalIdentifier.isLangInternalPath(pathParts[0])) { identifier = pathParts.join('/'); } else { identifier = UnifiedPath_1.UnifiedPath.fromPathParts(pathParts).toString(); } const result = new PathIndex(identifier, moduleIndex); result._id = data.id; result.containsUncommittedChanges = data.cucc === undefined ? false : true; if (data.children) { result.children = new ModelMap_1.ModelMap('string'); for (const key of Object.keys(data.children)) { result.children.set(key, PathIndex.fromJSON(data.children[key], [...pathParts, key], moduleIndex)); } } if (data.file) { result.file = new ModelMap_1.ModelMap('string'); for (const key of Object.keys(data.file)) { result.file.set(key, SourceNodeIndex_1.SourceNodeIndex.fromJSON(data.file[key], [key], result, data.file[key].id === undefined ? types_1.SourceNodeIndexType.Intermediate : types_1.SourceNodeIndexType.SourceNode)); } } const id = result._id; if (id !== undefined) { moduleIndex.addToPathMap(result); moduleIndex.globalIndex.setReverseIndex(id, result, 'path'); } return result; } getSourceNodeIndex(indexRequestType, sourceNodeIdentifier) { const indexFromSourceNodeMap = this.sourceNodeMap.get(sourceNodeIdentifier); if (indexFromSourceNodeMap !== undefined) { return indexFromSourceNodeMap; } let currentSourceNodeIndex; let currentSourceNodeMap = this.file; const sourceNodeIdentifierParts = SourceNodeIdentifierHelper_1.SourceNodeIdentifierHelper.split(sourceNodeIdentifier); for (let i = 0; i < sourceNodeIdentifierParts.length; i++) { let sourceNodeIndex = currentSourceNodeMap.get(sourceNodeIdentifierParts[i]); if (sourceNodeIndex === undefined) { switch (indexRequestType) { case 'get': return undefined; case 'upsert': sourceNodeIndex = new SourceNodeIndex_1.SourceNodeIndex(SourceNodeIdentifierHelper_1.SourceNodeIdentifierHelper.join(sourceNodeIdentifierParts.slice(0, i + 1)), this, types_1.SourceNodeIndexType.Intermediate); currentSourceNodeMap.set(sourceNodeIdentifierParts[i], sourceNodeIndex); break; default: return undefined; } } if (i === sourceNodeIdentifierParts.length - 1) { if (sourceNodeIndex.id === undefined) { switch (indexRequestType) { case 'get': return undefined; case 'upsert': sourceNodeIndex.type = types_1.SourceNodeIndexType.SourceNode; sourceNodeIndex.selfAssignId(); break; default: return undefined; } } currentSourceNodeIndex = sourceNodeIndex; } else { if (sourceNodeIndex.children === undefined) { switch (indexRequestType) { case 'get': return undefined; case 'upsert': sourceNodeIndex.children = new ModelMap_1.ModelMap('string'); break; default: return undefined; } } currentSourceNodeMap = sourceNodeIndex.children; } } return currentSourceNodeIndex; } } exports.PathIndex = PathIndex; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aEluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vZGVsL2luZGljZXMvUGF0aEluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUFtRDtBQUluRCw0Q0FBd0M7QUFDeEMsMENBQXNDO0FBQ3RDLHdGQUFvRjtBQUNwRiwwREFBc0Q7QUFDdEQsb0VBQWdFO0FBQ2hFLFFBQVE7QUFDUix1Q0FZb0I7QUFFcEIsTUFBYSxTQUFVLFNBQVEscUJBQVM7SUFvQnZDLFlBQ0MsVUFBd0QsRUFDeEQsV0FBd0IsRUFDeEIsRUFBa0I7UUFFbEIsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QixJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQTtRQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxtQkFBUSxDQUcvQixRQUFRLENBQUMsQ0FBQTtRQUVYLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLG1CQUFRLENBR3RDLFFBQVEsQ0FBQyxDQUFBO0lBQ1osQ0FBQztJQUdELElBQVcsMEJBQTBCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDckUsQ0FBQztJQUVELElBQVcsMEJBQTBCLENBQUMsQ0FBVTtRQUMvQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDakUsQ0FBQztJQUVELGtCQUFrQixDQUFDLFdBQXdCO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDdkUsT0FBTyxjQUFj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