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

94 lines 9.2 kB
"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 = { [ProgramStructureTree_1.ProgramStructureTreeType.Root]: SourceNodeRegex_1.RootRegex, [ProgramStructureTree_1.ProgramStructureTreeType.ConstructorDeclaration]: SourceNodeRegex_1.ConstructorDeclarationRegex, [ProgramStructureTree_1.ProgramStructureTreeType.ClassDeclaration]: SourceNodeRegex_1.ClassDeclarationRegex, [ProgramStructureTree_1.ProgramStructureTreeType.ClassExpression]: SourceNodeRegex_1.ClassExpressionRegex, [ProgramStructureTree_1.ProgramStructureTreeType.MethodDefinition]: SourceNodeRegex_1.MethodDefinitionRegex, [ProgramStructureTree_1.ProgramStructureTreeType.GetAccessorDeclaration]: SourceNodeRegex_1.GetAccessorDeclarationRegex, [ProgramStructureTree_1.ProgramStructureTreeType.SetAccessorDeclaration]: SourceNodeRegex_1.SetAccessorDeclarationRegex, [ProgramStructureTree_1.ProgramStructureTreeType.FunctionDeclaration]: SourceNodeRegex_1.FunctionDeclarationRegex, [ProgramStructureTree_1.ProgramStructureTreeType.FunctionExpression]: SourceNodeRegex_1.FunctionExpressionRegex, [ProgramStructureTree_1.ProgramStructureTreeType.ObjectLiteralExpression]: SourceNodeRegex_1.ObjectLiteralExpressionRegex, [ProgramStructureTree_1.ProgramStructureTreeType.IfStatement]: SourceNodeRegex_1.IfStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.IfThenStatement]: SourceNodeRegex_1.IfThenStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.IfElseStatement]: SourceNodeRegex_1.IfElseStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.ForStatement]: SourceNodeRegex_1.ForStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.WhileStatement]: SourceNodeRegex_1.WhileStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.TryStatement]: SourceNodeRegex_1.TryStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.TryBlock]: SourceNodeRegex_1.TryBlockStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.CatchClause]: SourceNodeRegex_1.CatchClauseStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.FinallyBlock]: SourceNodeRegex_1.FinallyBlockStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.SwitchStatement]: SourceNodeRegex_1.SwitchStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.Block]: SourceNodeRegex_1.BlockStatementRegex, [ProgramStructureTree_1.ProgramStructureTreeType.ClassStaticBlockDeclaration]: SourceNodeRegex_1.ClassStaticBlockDeclarationRegex, [ProgramStructureTree_1.ProgramStructureTreeType.SwitchCaseClause]: SourceNodeRegex_1.SwitchCaseClauseRegex, [ProgramStructureTree_1.ProgramStructureTreeType.ModuleDeclaration]: 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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