@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
94 lines • 9.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SourceNodeIdentifierHelper = void 0;
const SourceNodeRegex_1 = require("../constants/SourceNodeRegex");
// Types
const ProgramStructureTree_1 = require("../types/model/ProgramStructureTree");
const SourceNodeIdentifierPathRegex_match = new RegExp(`{${SourceNodeRegex_1.SourceNodeIdentifierPathRegexString}}`, 'g');
const REGEX_PER_PST_TYPE = {
[]: SourceNodeRegex_1.RootRegex,
[]: SourceNodeRegex_1.ConstructorDeclarationRegex,
[]: SourceNodeRegex_1.ClassDeclarationRegex,
[]: SourceNodeRegex_1.ClassExpressionRegex,
[]: SourceNodeRegex_1.MethodDefinitionRegex,
[]: SourceNodeRegex_1.GetAccessorDeclarationRegex,
[]: SourceNodeRegex_1.SetAccessorDeclarationRegex,
[]: SourceNodeRegex_1.FunctionDeclarationRegex,
[]: SourceNodeRegex_1.FunctionExpressionRegex,
[]: SourceNodeRegex_1.ObjectLiteralExpressionRegex,
[]: SourceNodeRegex_1.IfStatementRegex,
[]: SourceNodeRegex_1.IfThenStatementRegex,
[]: SourceNodeRegex_1.IfElseStatementRegex,
[]: SourceNodeRegex_1.ForStatementRegex,
[]: SourceNodeRegex_1.WhileStatementRegex,
[]: SourceNodeRegex_1.TryStatementRegex,
[]: SourceNodeRegex_1.TryBlockStatementRegex,
[]: SourceNodeRegex_1.CatchClauseStatementRegex,
[]: SourceNodeRegex_1.FinallyBlockStatementRegex,
[]: SourceNodeRegex_1.SwitchStatementRegex,
[]: SourceNodeRegex_1.BlockStatementRegex,
[]: SourceNodeRegex_1.ClassStaticBlockDeclarationRegex,
[]: SourceNodeRegex_1.SwitchCaseClauseRegex,
[]: SourceNodeRegex_1.ModuleDeclarationRegex
};
class SourceNodeIdentifierHelper {
static split(identifier) {
if (identifier[0] && identifier[0] === '{') {
// case SourceNodeIdentifier {}.{}...
const matches = identifier.match(SourceNodeIdentifierPathRegex_match);
return (matches ? matches : []);
//return identifier.split('.') as SourceNodeIdentifierPart_string[]
}
// case RegExp:
return [identifier];
}
static join(identifierParts) {
return identifierParts.join('.');
}
/**
* Validates if the given identifier part is a valid source node identifier part.
* Important! Does not validate node internal source node identifiers.
*
* @returns wether the identifier part is valid or not
*/
static validateSourceNodeIdentifierPart(identifierPart) {
return (SourceNodeRegex_1.RootRegex.test(identifierPart) ||
SourceNodeRegex_1.SourceNodeIdentifierPartRegex.test(identifierPart));
}
static parseSourceNodeIdentifierPart(identifierPart) {
for (const [type, regex] of Object.entries(REGEX_PER_PST_TYPE)) {
const match = identifierPart.match(regex);
if (match && match[1]) {
return {
type: type,
name: match[1]
};
}
}
return null;
}
static functionNameToSourceNodeIdentifier(functionName) {
const chunks = [];
let chunk = '';
let lastChar = '';
for (const char of functionName) {
if (char === '.') {
if (lastChar === '.') {
chunk += char;
}
else {
chunks.push(`{${chunk}}`);
chunk = '';
}
}
else {
chunk += char;
}
lastChar = char;
}
chunks.push(`{${chunk}}`);
return chunks.join('.');
}
}
exports.SourceNodeIdentifierHelper = SourceNodeIdentifierHelper;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU291cmNlTm9kZUlkZW50aWZpZXJIZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGVscGVyL1NvdXJjZU5vZGVJZGVudGlmaWVySGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtFQTJCcUM7QUFDckMsUUFBUTtBQUNSLDhFQUE4RTtBQU05RSxNQUFNLG1DQUFtQyxHQUFHLElBQUksTUFBTSxDQUNyRCxJQUFJLHFEQUFtQyxHQUFHLEVBQzFDLEdBQUcsQ0FDSCxDQUFBO0FBRUQsTUFBTSxrQkFBa0IsR0FBNkM7SUFDcEUsQ0FBQywrQ0FBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSwyQkFBUztJQUMxQyxDQUFDLCtDQUF3QixDQUFDLHNCQUFzQixDQUFDLEVBQ2hELDZDQUEyQjtJQUM1QixDQUFDLCtDQUF3QixDQUFDLGdCQUFnQixDQUFDLEVBQUUsdUNBQXFCO0lBQ2xFLENBQUMsK0NBQXdCLENBQUMsZUFBZSxDQUFDLEVBQUUsc0NBQW9CO0lBQ2hFLENBQUMsK0NBQXdCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSx1Q0FBcUI7SUFDbEUsQ0FBQywrQ0FBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUNoRCw2Q0FBMkI7SUFDNUIsQ0FBQywrQ0FBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUNoRCw2Q0FBMkI7SUFDNUIsQ0FBQywrQ0FBd0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLDBDQUF3QjtJQUN4RSxDQUFDLCtDQUF3QixDQUFDLGtCQUFrQixDQUFDLEVBQUUseUNBQXVCO0lBQ3RFLENBQUMsK0NBQXdCLENBQUMsdUJBQXVCLENBQUMsRUFDakQsOENBQTRCO0lBQzdCLENBQUMsK0NBQXdCLENBQUMsV0FBVyxDQUFDLEVBQUUsa0NBQWdCO0lBQ3hELENBQUMsK0NBQXdCLENBQUMsZUFBZSxDQUFDLEVBQUUsc0NBQW9CO0lBQ2hFLENBQUMsK0NBQXdCLENBQUMsZUFBZSxDQUFDLEVBQUUsc0NBQW9CO0lB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