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

174 lines 15.3 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 UnifiedPath_1 = require("../../system/UnifiedPath"); const SourceNodeRegex_1 = require("../../constants/SourceNodeRegex"); // 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 (pathParts[0] === '' || SourceNodeRegex_1.LangInternalPathRegex.test(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; if (sourceNodeIdentifier[0] && sourceNodeIdentifier[0] === '{') { // case SourceNodeIdentifier {}.{}... const sourceNodeIdentifierParts = sourceNodeIdentifier.split('.'); 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(sourceNodeIdentifierParts.slice(0, i + 1).join('.'), 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; } } } else { // case RegExp: currentSourceNodeIndex = currentSourceNodeMap.get(sourceNodeIdentifier); if (currentSourceNodeIndex === undefined) { let sourceNodeIndex; switch (indexRequestType) { case 'get': return undefined; case 'upsert': sourceNodeIndex = new SourceNodeIndex_1.SourceNodeIndex(sourceNodeIdentifier, this, types_1.SourceNodeIndexType.SourceNode); break; default: return undefined; } currentSourceNodeIndex = sourceNodeIndex; currentSourceNodeMap.set(sourceNodeIdentifier, sourceNodeIndex); } } return currentSourceNodeIndex; } } exports.PathIndex = PathIndex; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0aEluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vZGVsL2luZGV4L1BhdGhJbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBbUQ7QUFJbkQsNENBQXdDO0FBQ3hDLDBDQUFzQztBQUV0QywwREFBc0Q7QUFDdEQscUVBQXVFO0FBQ3ZFLFFBQVE7QUFDUix1Q0FTb0I7QUFDcEIsTUFBYSxTQUFVLFNBQVEscUJBQVM7SUFldkMsWUFDQyxVQUF3RCxFQUN4RCxXQUF3QixFQUN4QixFQUFrQjtRQUVsQixLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLG1CQUFRLENBRWdCLFFBQVEsQ0FBQyxDQUFBO1FBRTFELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLG1CQUFRLENBRVMsUUFBUSxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUdELElBQVcsMEJBQTBCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDckUsQ0FBQztJQUVELElBQVcsMEJBQTBCLENBQUMsQ0FBVTtRQUMvQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDakUsQ0FBQztJQUVELGtCQUFrQixDQUFDLFdBQXdCO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDdkUsT0FBTyxjQUFjLENBQUMsZ0JBQWdCLENB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