enum AlertType {
  'info',
}

export type ErrorThrownActionCreator = (
  error: Error,
  altText?: string,
  alertType?: AlertType
) => ErrorThrownAction

interface ErrorThrownAction {
  type: 'ERROR_THROWN'
  error: Error
  altText?: string
  alertType?: AlertType
}
export const errorThrown = (
  error: Error,
  altText?: string,
  alertType?: AlertType
): ErrorThrownAction => ({
  type: 'ERROR_THROWN',
  error,
  altText,
  alertType,
})

enum AlertType {
  'info',
}

export type ErrorThrownActionCreator = (
  error: Error,
  altText?: string,
  alertType?: AlertType
) => ErrorThrownAction

interface ErrorThrownAction {
  type: 'ERROR_THROWN'
  error: ErrorDescription
  altText?: string
  alertType?: AlertType
}
export const errorThrown = (
  error: ErrorDescription,
  altText?: string,
  alertType?: AlertType
): ErrorThrownAction => ({
  type: 'ERROR_THROWN',
  error,
  altText,
  alertType,
})

interface ErrorDescription {
  status: number
  auth: {
    links: {
      me: string
    }
  }
}

Add ErrorDescription with auth and links
Add ErrorDescription with auth and links

ErrorThrownAction triggers an AUTH_EXPIRED in middleware. AuthReducer
extracts auth links to upddate state.links. It's unclear what the shape
is of auth.links:

  Errors.test.js utilizes an auth.links of type
    arrayOf({
      name: string,
      label:string,
      login: string,
      logout: string,
      callback: string,
    })

  OrganizationsPage consumes links w/ shape of

    shape({
      organizations: string.isRequired,
      config: shape({
        auth: string.isRequired,
      }).isRequired,
    })

  UsersPage consumes links w/ shape of

     shape({
        users: string.isRequired,
      }),

  ProvidersPage consumes links w/ shape of

    shape({
        organizations: string.isRequired,
      }),

  Purgatory consumes links w/ shape of

    shape({
      me: string,
    }),

  UserNavBlock at some point expected

  shape({
    me: string,
    external: shape({
      custom: arrayOf(
        shape({
          name: string.isRequired,
          url: string.isRequired,
        })
      ),
    }),
  })
