@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
101 lines • 9.56 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SourceNodeIndex = void 0;
const BaseModel_1 = require("../BaseModel");
const ModelMap_1 = require("../ModelMap");
const GlobalIdentifier_1 = require("../../system/GlobalIdentifier");
const SourceNodeIdentifierHelper_1 = require("../../helper/SourceNodeIdentifierHelper");
// Types
const types_1 = require("../../types");
class SourceNodeIndex extends BaseModel_1.BaseModel {
constructor(identifier, pathIndex, type, id) {
super();
// make selfAssignId only available for instances of type SourceNodeIndex<SourceNodeIndexType.SourceNode>
this.selfAssignId = (() => {
if (!this.isSourceNode()) {
throw new Error('SourceNodeIndex.selfAssignId: can only be called on a SourceNodeIndex of type SourceNode');
}
const self = this;
self._id = this.pathIndex.moduleIndex.globalIndex.newId(this, 'sourceNode');
self.pathIndex.addToSourceNodeMap(this);
return this._id;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
});
this.identifier = identifier;
this.pathIndex = pathIndex;
this.type = type;
this._id = (this.isSourceNode()
? id === undefined
? this.selfAssignId()
: id
: undefined);
}
get presentInOriginalSourceCode() {
return this._notPresentInOriginalSourceCode === undefined ? true : false;
}
set presentInOriginalSourceCode(v) {
this._notPresentInOriginalSourceCode = v === true ? undefined : true;
}
get functionName() {
if (this._functionName === undefined) {
const parts = SourceNodeIdentifierHelper_1.SourceNodeIdentifierHelper.split(this.identifier);
const parsed = SourceNodeIdentifierHelper_1.SourceNodeIdentifierHelper.parseSourceNodeIdentifierPart(parts[parts.length - 1]);
this._functionName = parsed ? parsed.name : this.identifier;
}
return this._functionName;
}
insertToOtherIndex(globalIndex) {
const newPathIndex = this.pathIndex.insertToOtherIndex(globalIndex);
return newPathIndex.getSourceNodeIndex('upsert', this.identifier);
}
toBuffer() {
throw new Error('SourceNodeIndex.toBuffer: not yet implemented');
}
isSourceNode() {
return this.type === types_1.SourceNodeIndexType.SourceNode;
}
get id() {
return this._id;
}
toJSON() {
var _a;
const presentInOriginalSourceCode = this.presentInOriginalSourceCode
? {}
: { npiosc: true };
return Object.assign(Object.assign({ id: this.id }, presentInOriginalSourceCode), { children: (_a = this.children) === null || _a === void 0 ? void 0 : _a.toJSON() });
}
static fromJSON(json, sourceNodeParts, pathIndex, type) {
let data;
if (typeof json === 'string') {
data = JSON.parse(json);
}
else {
data = json;
}
const result = new SourceNodeIndex(SourceNodeIdentifierHelper_1.SourceNodeIdentifierHelper.join(sourceNodeParts), pathIndex, type, data.id);
result.presentInOriginalSourceCode =
data.npiosc === undefined ? true : false;
if (result.isSourceNode()) {
result.pathIndex.addToSourceNodeMap(result);
result.pathIndex.moduleIndex.globalIndex.setReverseIndex(result.id, result, 'sourceNode');
}
if (data.children) {
result.children = new ModelMap_1.ModelMap('string');
for (const key of Object.keys(data.children)) {
result.children.set(key, SourceNodeIndex.fromJSON(data.children[key], [...sourceNodeParts, key], pathIndex, data.children[key].id !== undefined
? types_1.SourceNodeIndexType.SourceNode
: types_1.SourceNodeIndexType.Intermediate));
}
}
return result;
}
globalIdentifier() {
const isLangInternal = this.pathIndex.moduleIndex ===
this.pathIndex.moduleIndex.globalIndex.getLangInternalIndex('get');
return new GlobalIdentifier_1.GlobalIdentifier(this.pathIndex.identifier, this.identifier, isLangInternal
? this.pathIndex.moduleIndex.globalIndex.engineModule
: this.pathIndex.moduleIndex.nodeModule());
}
}
exports.SourceNodeIndex = SourceNodeIndex;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU291cmNlTm9kZUluZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vZGVsL2luZGljZXMvU291cmNlTm9kZUluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLDRDQUF3QztBQUN4QywwQ0FBc0M7QUFDdEMsb0VBQWdFO0FBQ2hFLHdGQUFvRjtBQUNwRixRQUFRO0FBQ1IsdUNBU29CO0FBRXBCLE1BQWEsZUFBK0MsU0FBUSxxQkFBUztJQWM1RSxZQUNDLFVBRTBDLEVBQzFDLFNBQW9CLEVBQ3BCLElBQU8sRUFDUCxFQUF5QjtRQUV6QixLQUFLLEVBQUUsQ0FBQTtRQWlEUix5R0FBeUc7UUFDekcsaUJBQVksR0FFRCxDQUFDLEdBQUcsRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQ2QsMEZBQTBGLENBQzFGLENBQUE7WUFDRixDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBdUQsQ0FBQTtZQUNwRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQ3RELElBQXVELEVBQ3ZELFlBQVksQ0FDVyxDQUFBO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkMsT0FBTyxJQUFJLENBQUMsR0FBMkIsQ0FBQTtZQUN2Qyw4REFBOEQ7UUFDL0QsQ0FBQyxDQUFRLENBQUE7UUFqRVIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUNWLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbEIsQ0FBQyxDQUFDLEVBQUUs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