import { HttpFetchError } from 'kibana/public' ; import Boom from '@hapi/boom' ; export interface EsErrorRootCause { type : string ; reason : string ; caused_by ? : EsErrorRootCause ; script ? : string ; } export interface EsErrorBody { error : { root_cause ? : EsErrorRootCause [ ] ; caused_by ? : EsErrorRootCause ; type : string ; reason : string ; } ; status : number ; } export interface MLResponseError { statusCode : number ; error : string ; message : string ; attributes ? : { body : EsErrorBody ; } ; } export interface ErrorMessage { message : string ; } export interface MLErrorObject { causedBy ? : string ; message : string ; statusCode ? : number ; fullError ? : EsErrorBody ; } export interface MLHttpFetchError < T > extends HttpFetchError { body : T ; } export type ErrorType = MLHttpFetchError < MLResponseError > | EsErrorBody | Boom . Boom | string | undefined ; export function isEsErrorBody ( error ) { return error && error . error ?. reason !== undefined ; } export function isErrorString ( error ) { return typeof error === 'string' ; } export function isErrorMessage ( error ) { return error && error . message !== undefined && typeof error . message === 'string' ; } export function isMLResponseError ( error ) { return typeof error . body === 'object' && 'message' in error . body ; } export function isBoomError ( error ) { return error ?. isBoom === true ; }