export function parseError()

in src/extension/src/telemetry/parseError.ts [11:47]


export function parseError(error: any): IParsedError {
  let errorType = "";
  let message = "";
  let stack: string | undefined;

  if (typeof error === "object" && error !== null) {
    if (error.constructor !== Object) {
      errorType = error.constructor.name;
    }

    stack = getCallstack(error);

    error = unpackErrorFromField(error, "value");
    error = unpackErrorFromField(error, "_value");
    error = unpackErrorFromField(error, "error");
    if (Array.isArray(error.errors) && error.errors.length) {
      error = error.errors[0];
    }

    errorType = getCode(error, errorType);
    message = getMessage(error, message);
  } else if (error !== undefined && error !== null && error.toString && error.toString().trim() !== "") {
    errorType = typeof error;
    message = error.toString();
  }

  message = unpackErrorsInMessage(message);
  errorType = errorType || typeof error;
  message = message || "Unknown Error";

  return {
    errorType: errorType,
    message: message,
    stack: stack,
    isUserCancelledError: errorType === "UserCancelledError",
  };
}