@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
JavaScript
"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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