private static function toSafeTrace(array $trace)
{
// Remove invariant entries as they don't provide much value:
if (isset($trace[0]['function']) && isset($trace[0]['class']) && 'GraphQL\\Utils::invariant' === $trace[0]['class'] . '::' . $trace[0]['function']) {
array_shift($trace);
} else {
if (!isset($trace[0]['file'])) {
array_shift($trace);
}
}
return array_map(function ($err) {
$safeErr = array_intersect_key($err, ['file' => true, 'line' => true]);
if (isset($err['function'])) {
$func = $err['function'];
$args = !empty($err['args']) ? array_map([__CLASS__, 'printVar'], $err['args']) : [];
$funcStr = $func . '(' . implode(", ", $args) . ')';
if (isset($err['class'])) {
$safeErr['call'] = $err['class'] . '::' . $funcStr;
} else {
$safeErr['function'] = $funcStr;
}
}
return $safeErr;
}, $trace);
}