in src/SourceMapToolkit.CallstackDeminifier/StackFrameDeminifier.cs [31:89]
public StackFrameDeminificationResult DeminifyStackFrame(StackFrame stackFrame, string callerSymbolName, bool preferSourceMapsSymbols = false)
{
if (stackFrame == null)
{
throw new ArgumentNullException(nameof(stackFrame));
}
SourceMap sourceMap = _sourceMapStore.GetSourceMapForUrl(stackFrame.FilePath);
SourcePosition generatedSourcePosition = stackFrame.SourcePosition;
StackFrameDeminificationResult result = null;
if (_methodNameDeminifier != null)
{
result = _methodNameDeminifier.DeminifyStackFrame(stackFrame, callerSymbolName);
}
if (result == null || result.DeminificationError == DeminificationError.NoSourceCodeProvided)
{
result = new StackFrameDeminificationResult
{
DeminificationError = DeminificationError.None,
DeminifiedStackFrame = new StackFrame { MethodName = callerSymbolName }
};
}
if (result.DeminificationError == DeminificationError.None)
{
MappingEntry? generatedSourcePositionMappingEntry =
sourceMap?.GetMappingEntryForGeneratedSourcePosition(generatedSourcePosition);
if (generatedSourcePositionMappingEntry == null)
{
if (sourceMap == null)
{
result.DeminificationError = DeminificationError.NoSourceMap;
}
else if (sourceMap.ParsedMappings == null)
{
result.DeminificationError = DeminificationError.SourceMapFailedToParse;
}
else
{
result.DeminificationError = DeminificationError.NoMatchingMapingInSourceMap;
}
}
else
{
if (preferSourceMapsSymbols)
{
result.DeminifiedStackFrame.MethodName = generatedSourcePositionMappingEntry.Value.OriginalName;
}
result.DeminifiedStackFrame.FilePath = generatedSourcePositionMappingEntry.Value.OriginalFileName;
result.DeminifiedStackFrame.SourcePosition = generatedSourcePositionMappingEntry.Value.OriginalSourcePosition;
result.DeminifiedSymbolName = generatedSourcePositionMappingEntry.Value.OriginalName;
}
}
return result;
}