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

167 lines 12 kB
"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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