PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/metro/src/Server
Просмотр файла: symbolicate.js
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
exports.default = symbolicate;
var _search = require("metro-source-map/private/Consumer/search");
var _Symbolication = require("metro-symbolicate/private/Symbolication");
function createFunctionNameGetter(module) {
const consumer = new _Symbolication.SourceMetadataMapConsumer(
{
version: 3,
mappings: "",
sources: ["dummy"],
names: [],
x_facebook_sources: [[module.functionMap]],
},
(name) => name,
);
return ({ line1Based, column0Based }) =>
consumer.functionNameFor({
line: line1Based,
column: column0Based,
source: "dummy",
});
}
async function symbolicate(stack, maps, config, extraData) {
const mapsByUrl = new Map();
for (const [url, map] of maps) {
mapsByUrl.set(url, map);
}
const functionNameGetters = new Map();
function findModule(frame) {
const map = mapsByUrl.get(frame.file);
if (!map || frame.lineNumber == null) {
return null;
}
const moduleIndex = (0, _search.greatestLowerBound)(
map,
frame.lineNumber,
(target, candidate) => target - candidate.firstLine1Based,
);
if (moduleIndex == null) {
return null;
}
return map[moduleIndex];
}
function findOriginalPos(frame, module) {
if (
module.map == null ||
frame.lineNumber == null ||
frame.column == null
) {
return null;
}
const generatedPosInModule = {
line1Based: frame.lineNumber - module.firstLine1Based + 1,
column0Based: frame.column,
};
const mappingIndex = (0, _search.greatestLowerBound)(
module.map,
generatedPosInModule,
(target, candidate) => {
if (target.line1Based === candidate[0]) {
return target.column0Based - candidate[1];
}
return target.line1Based - candidate[0];
},
);
if (mappingIndex == null) {
return null;
}
const mapping = module.map[mappingIndex];
if (mapping[0] !== generatedPosInModule.line1Based || mapping.length < 4) {
return null;
}
return {
line1Based: mapping[2],
column0Based: mapping[3],
};
}
function findFunctionName(originalPos, module) {
if (module.functionMap) {
let getFunctionName = functionNameGetters.get(module);
if (!getFunctionName) {
getFunctionName = createFunctionNameGetter(module);
functionNameGetters.set(module, getFunctionName);
}
return getFunctionName(originalPos);
}
return null;
}
function symbolicateFrame(frame) {
const module = findModule(frame);
if (!module) {
return {
...frame,
};
}
if (!Array.isArray(module.map)) {
throw new Error(
`Unexpected module with serialized source map found: ${module.path}`,
);
}
const originalPos = findOriginalPos(frame, module);
if (!originalPos) {
return {
...frame,
};
}
const methodName =
findFunctionName(originalPos, module) ?? frame.methodName;
return {
...frame,
methodName,
file: module.path,
lineNumber: originalPos.line1Based,
column: originalPos.column0Based,
};
}
async function customizeFrame(frame) {
const customizations =
(await config.symbolicator.customizeFrame(frame)) || {};
return {
...frame,
...customizations,
};
}
async function customizeStack(symbolicatedStack) {
return await config.symbolicator.customizeStack(
symbolicatedStack,
extraData,
);
}
return Promise.all(stack.map(symbolicateFrame).map(customizeFrame)).then(
customizeStack,
);
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!