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

127 lines 9.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CPUProfileSourceLocation = exports.RegExpTestRegex = void 0; const SourceNodeIdentifierHelper_1 = require("../SourceNodeIdentifierHelper"); const SourceNodeRegex_1 = require("../../constants/SourceNodeRegex"); const UnifiedPath_1 = require("../../system/UnifiedPath"); const UrlProtocolHelper_1 = require("../UrlProtocolHelper"); // Types const types_1 = require("../../types"); exports.RegExpTestRegex = new RegExp(`^${SourceNodeRegex_1.LangInternalSourceNodeRegExpRegexString}$`); class CPUProfileSourceLocation { constructor(rootDir, locationId, callFrame) { this._index = locationId; this._callFrame = callFrame; // ensure scriptId is a string, sometimes it is a number this._callFrame.scriptId = this._callFrame.scriptId.toString(); this._rootDir = rootDir; this._isEmpty = false; // determine the type of the source location if (this.callFrame.scriptId === '0' || this.callFrame.url.startsWith('node:')) { this._type = types_1.CPUProfileSourceLocationType.LANG_INTERNAL; } else if (this.callFrame.url.startsWith('wasm://')) { this._type = types_1.CPUProfileSourceLocationType.WASM; } else if (this.callFrame.url.startsWith('webpack://') || this.callFrame.url.startsWith('webpack-internal://')) { this._type = types_1.CPUProfileSourceLocationType.WEBPACK; } else { this._type = types_1.CPUProfileSourceLocationType.DEFAULT; this._isEmpty = this.callFrame.url === ''; } // determine the script id this._scriptID = this.callFrame.scriptId.toString(); // determine the pure url this._rawUrl = this.callFrame.url; } get rootDir() { return this._rootDir; } get callFrame() { return this._callFrame; } get index() { return this._index; } get sourceLocation() { const { lineNumber, columnNumber } = this.callFrame; return { lineNumber, columnNumber }; } get isLangInternal() { return this._type === types_1.CPUProfileSourceLocationType.LANG_INTERNAL; } get isEmpty() { return this._isEmpty; } get isWASM() { return this._type === types_1.CPUProfileSourceLocationType.WASM; } get isWebpack() { return this._type === types_1.CPUProfileSourceLocationType.WEBPACK; } get scriptID() { return this._scriptID; } get rawUrl() { return this._rawUrl; } get rawFunctionName() { return this.callFrame.functionName; } get absoluteUrl() { if (this._absoluteUrl === undefined) { let url; if (this.rawUrl.startsWith('file://')) { // remove the 'file://' prefix url = new UnifiedPath_1.UnifiedPath(this.rawUrl.slice(7)); } else if (this.isWebpack) { // extract the file path from a webpack-internal url const result = UrlProtocolHelper_1.UrlProtocolHelper.parseWebpackSourceUrl(this.rawUrl); if (result !== null) { url = new UnifiedPath_1.UnifiedPath(result.filePath); } else { throw new Error('Could not parse webpack-internal url: ' + this.rawUrl); } } else { url = new UnifiedPath_1.UnifiedPath(this.rawUrl); } if (url.isRelative()) { this._absoluteUrl = this.rootDir.join(url); } else { this._absoluteUrl = url; } } return this._absoluteUrl; } get relativeUrl() { if (this._relativeUrl === undefined) { this._relativeUrl = this.rootDir.pathTo(this.absoluteUrl); } return this._relativeUrl; } get sourceNodeIdentifier() { if (this._sourceNodeIdentifier === undefined) { if (exports.RegExpTestRegex.test(this.rawFunctionName)) { this._sourceNodeIdentifier = this .rawFunctionName; } else { this._sourceNodeIdentifier = SourceNodeIdentifierHelper_1.SourceNodeIdentifierHelper.functionNameToSourceNodeIdentifier(this.rawFunctionName); } } return this._sourceNodeIdentifier; } } exports.CPUProfileSourceLocation = CPUProfileSourceLocation; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ1BVUHJvZmlsZVNvdXJjZUxvY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2hlbHBlci9DUFVQcm9maWxlL0NQVVByb2ZpbGVTb3VyY2VMb2NhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw4RUFBMEU7QUFDMUUscUVBQXlGO0FBQ3pGLDBEQUFzRDtBQUN0RCw0REFBd0Q7QUFDeEQsUUFBUTtBQUNSLHVDQUlvQjtBQUVQLFFBQUEsZUFBZSxHQUFHLElBQUksTUFBTSxDQUN4QyxJQUFJLHlEQUF1QyxHQUFHLENBQzlDLENBQUE7QUFFRCxNQUFhLHdCQUF3QjtJQWdCcEMsWUFDQyxPQUFvQixFQUNwQixVQUFrQixFQUNsQixTQUFnQztRQUVoQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQTtRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtRQUMzQix3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUE7UUFFckIsNENBQTRDO1FBQzVDLElBQ0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEtBQUssR0FBRztZQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQ3JDLENBQUM7WUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLG9DQUE0QixDQUFDLGFBQWEsQ0FBQTtRQUN4RCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLG9DQUE0QixDQUFDLElBQUks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