@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
77 lines • 5.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GlobalIdentifier = void 0;
const NodeModule_1 = require("../model/NodeModule");
const SourceNodeRegex_1 = require("../constants/SourceNodeRegex");
const UnifiedPath_1 = require("../system/UnifiedPath");
const UnifiedPathRegex_1 = require("../constants/UnifiedPathRegex");
class GlobalIdentifier {
constructor(path, sourceNodeIdentifier, nodeModule) {
this.path = path;
this.sourceNodeIdentifier = sourceNodeIdentifier;
this.nodeModule = nodeModule;
}
static regexString() {
return (`^(${NodeModule_1.NodeModuleIdentifierRegexString}|)` +
`{(${UnifiedPathRegex_1.UnifiedPathRegexString}|${SourceNodeRegex_1.LangInternalPathRegexString}|)}` +
`(${SourceNodeRegex_1.SourceNodeIdentifierRegexString}|${SourceNodeRegex_1.LangInternalSourceNodeIdentifierRegexString})$`);
}
static regex() {
return new RegExp(GlobalIdentifier.regexString());
}
toJSON() {
var _a;
if (this.nodeModule) {
return {
nodeModule: (_a = this.nodeModule) === null || _a === void 0 ? void 0 : _a.toJSON(),
path: this.path,
sourceNodeIdentifier: this.sourceNodeIdentifier
};
}
else {
return {
path: this.path,
sourceNodeIdentifier: this.sourceNodeIdentifier
};
}
}
get identifier() {
const path = this.path ? this.path : '';
if (!this.nodeModule) {
return `{${path}}${this.sourceNodeIdentifier}`;
}
else {
return `${this.nodeModule.identifier}{${path}}${this.sourceNodeIdentifier}`;
}
}
isLangInternal() {
return GlobalIdentifier.isLangInternalPath(this.path);
}
static isLangInternalPath(path) {
return path === '' || SourceNodeRegex_1.LangInternalPathRegex.test(path);
}
static fromIdentifier(identifier) {
const matches = GlobalIdentifier.regex().exec(identifier);
if (!matches) {
throw new Error('GlobalIdentifier.fromIdentifier: invalid format: ' + identifier);
}
const nodeModuleIdentifier = matches[1];
const path = matches[2];
const sourceNodeIdentifier = matches[3];
let preprocessedPath;
if (GlobalIdentifier.isLangInternalPath(path)) {
preprocessedPath = path;
}
else {
preprocessedPath = new UnifiedPath_1.UnifiedPath(path).toString();
}
if (nodeModuleIdentifier === '') {
return new GlobalIdentifier(preprocessedPath, sourceNodeIdentifier);
}
else {
return new GlobalIdentifier(preprocessedPath, sourceNodeIdentifier, NodeModule_1.NodeModule.fromIdentifier(nodeModuleIdentifier));
}
}
}
exports.GlobalIdentifier = GlobalIdentifier;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2xvYmFsSWRlbnRpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zeXN0ZW0vR2xvYmFsSWRlbnRpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFHNEI7QUFDNUIsa0VBS3FDO0FBQ3JDLHVEQUFtRDtBQUNuRCxvRUFBc0U7QUFXdEUsTUFBYSxnQkFBZ0I7SUFLNUIsWUFDQyxJQUFrRCxFQUNsRCxvQkFBaUQsRUFDakQsVUFBdUI7UUFFdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFBO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO0lBQzdCLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVztRQUNqQixPQUFPLENBQ04sS0FBSyw0Q0FBK0IsSUFBSTtZQUN4QyxLQUFLLHlDQUFzQixJQUFJLDZDQUEyQixLQUFLO1lBQy9ELElBQUksaURBQStCLElBQUksNkRBQTJDLElBQUksQ0FDdEYsQ0FBQTtJQUNGLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNYLE9BQU8sSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsTUFBTTs7UUFDTCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPO2dCQUNOLFVBQVUsRUFBRSxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLE1BQU0sRUFBRTtnQkFDckMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7YUFDL0MsQ0FBQTtRQUNGLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTztnQkFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2Ysb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjthQUMvQyxDQUFBO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDYixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBdUMsQ0FBQTtRQUNwRixDQUFDO2FBQU0sQ0FBQztZQUNQLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUF1QyxDQUFBO1FBQ2pILENBQUM7SUFDRixDQUFDO0lBRUQsY0FBYztRQUNiLE9BQU8sZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RELENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBWTtRQUNyQyxPQUFPLElBQUksS0FBSyxFQUFFLElBQUksdUNBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUNwQixVQUE2QztRQUU3QyxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDekQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FDZCxtREFBbUQsR0FBRyxVQUFVLENBQ2hFLENBQUE7UUFDRixDQUFDO1FBRUQsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZCLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXZDLElBQUksZ0JBQWdCLENBQUE7UUFDcEIsSUFBSSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9DLGdCQUFnQixHQUFHLElBQStCLENBQUE7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDUCxnQkFBZ0IsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDcEQsQ0FBQztRQUVELElBQUksb0JBQW9CLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLGdCQUFnQixDQUMxQixnQkFBZ0IsRUFDaEIsb0JBQW1ELENBQ25ELENBQUE7UUFDRixDQUFDO2FBQU0sQ0FBQztZQUNQLE9BQU8sSUFBSSxnQkFBZ0IsQ0FDMUIsZ0JBQWdCLEVBQ2hCLG9CQUFtRCxFQUNuRCx1QkFBVSxDQUFDLGNBQWMsQ0FDeEIsb0JBQW1ELENBQ25ELENBQ0QsQ0FBQTtRQUNGLENBQUM7SUFDRixDQUFDO0NBQ0Q7QUEvRkQsNENBK0ZDIn0=