@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
167 lines • 12 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SourceMap = void 0;
const source_map_1 = require("source-map");
const BaseModel_1 = require("./BaseModel");
const DataUrlUtils_1 = require("../helper/DataUrlUtils");
const UnifiedPath_1 = require("../system/UnifiedPath");
// Types
const SourceMap_1 = require("../types/model/SourceMap");
const SOURCE_MAPPING_URL_REGEX = /^\/\/# sourceMappingURL=(.*)$/m;
class SourceMap extends BaseModel_1.BaseModel {
constructor(sourceMapLocation, { version, file, sourceRoot, sources, sourcesContent, names, mappings, ignoreList }) {
super();
this.sourceMapLocation = sourceMapLocation;
this.version = version;
this.file = file;
this.sourceRoot = sourceRoot;
this.sources = sources;
this.sourcesContent = sourcesContent;
this.names = names;
this.mappings = mappings;
this.ignoreList = ignoreList;
}
numberOfLinesInCompiledFile() {
return __awaiter(this, void 0, void 0, function* () {
if (this._numberOfLinesInCompiledFile === undefined) {
let maxLine = 0;
(yield this.asConsumer()).eachMapping((mapping) => {
if (mapping.generatedLine > maxLine) {
maxLine = mapping.generatedLine;
}
});
this._numberOfLinesInCompiledFile = maxLine;
}
return this._numberOfLinesInCompiledFile;
});
}
copy() {
return SourceMap.fromJSON(this.toJSON());
}
toJSON() {
return {
file: this.file,
ignoreList: this.ignoreList,
version: this.version,
sources: this.sources,
sourceRoot: this.sourceRoot,
names: this.names,
mappings: this.mappings,
sourcesContent: this.sourcesContent
};
}
static fromJSON(json) {
let data;
if (typeof json === 'string') {
data = JSON.parse(json);
}
else {
data = json;
}
return new SourceMap(new UnifiedPath_1.UnifiedPath(''), data);
}
static fromJsonString(s, sourceMapLocation) {
const parsed = JSON.parse(s);
if (SourceMap.isSourceMap(parsed)) {
return new SourceMap(sourceMapLocation, parsed);
}
return null;
}
static isSourceMap(sourceMapCandidate) {
if (!sourceMapCandidate) {
return false;
}
for (const attributeName of SourceMap_1.SOURCE_MAP_REQUIRED_ATTRIBUTE_NAMES) {
if (!(attributeName in sourceMapCandidate)) {
return false;
}
}
return true;
}
static base64StringCompiledJSString(sourceCode) {
const match = SOURCE_MAPPING_URL_REGEX.exec(sourceCode);
if (match) {
const sourceMapUrl = match[1];
if (DataUrlUtils_1.DataUrlUtils.isDataUrl(sourceMapUrl)) {
return {
base64: DataUrlUtils_1.DataUrlUtils.base64StringFromDataUrl(sourceMapUrl),
sourceMapUrl
};
}
return {
base64: undefined,
sourceMapUrl
};
}
return null;
}
static fromCompiledJSString(filePath, sourceCode) {
const result = SourceMap.base64StringCompiledJSString(sourceCode);
if (result === null) {
return null;
}
if (result.base64 !== undefined) {
const jsonString = result.base64 !== null
? Buffer.from(result.base64, 'base64').toString('utf-8')
: '{}';
return SourceMap.fromJsonString(jsonString, filePath);
}
else {
// source map file
const directoryPath = filePath.dirName();
const sourceMapLocation = directoryPath.join(result.sourceMapUrl);
return {
type: 'redirect',
sourceMapLocation
};
}
}
toBase64String() {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const data = {};
for (const attributeName of SourceMap_1.SOURCE_MAP_ALL_ATTRIBUTE_NAMES) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
data[attributeName] = this[attributeName];
}
return Buffer.from(JSON.stringify(data)).toString('base64');
}
asConsumer() {
return __awaiter(this, void 0, void 0, function* () {
if (!this._consumer) {
this._consumer = yield new source_map_1.SourceMapConsumer({
version: this.version,
file: this.file,
sourceRoot: this.sourceRoot,
sources: this.sources,
sourcesContent: this.sourcesContent,
names: this.names || [],
mappings: this.mappings
});
}
return this._consumer;
});
}
getOriginalSourceLocation(line, column) {
return __awaiter(this, void 0, void 0, function* () {
const originalPosition = (yield this.asConsumer()).originalPositionFor({
line,
column
});
if (!originalPosition.source) {
return undefined;
}
return originalPosition;
});
}
}
exports.SourceMap = SourceMap;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU291cmNlTWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL1NvdXJjZU1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwyQ0FJbUI7QUFFbkIsMkNBQXVDO0FBRXZDLHlEQUFxRDtBQUNyRCx1REFBbUQ7QUFDbkQsUUFBUTtBQUNSLHdEQUlpQztBQUVqQyxNQUFNLHdCQUF3QixHQUFHLGdDQUFnQyxDQUFBO0FBTWpFLE1BQWEsU0FBVSxTQUFRLHFCQUFTO0lBZXZDLFlBQ0MsaUJBQThCLEVBQzlCLEVBQ0MsT0FBTyxFQUNQLElBQUksRUFDSixVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFVBQVUsRUFDRTtRQUViLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFBO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFBO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO0lBQzdCLENBQUM7SUFFWSwyQkFBMkI7O1lBQ3ZDLElBQUksSUFBSSxDQUFDLDRCQUE0QixLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQ2Q7Z0JBQUEsQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxF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