import { ElasticsearchClient } from 'kibana/server' ; import type { Id , ListItemSchema } from '@kbn/securitysolution-io-ts-list-types' ; import { transformElasticToListItem } from '../utils' ; import { findSourceType } from '../utils/find_source_type' ; import { SearchEsListItemSchema } from '../../schemas/elastic_response' ; interface GetListItemOptions { id : Id ; esClient : ElasticsearchClient ; listItemIndex : string ; } export const getListItem = async ( { id , esClient , listItemIndex , } ) : Promise < ListItemSchema | null > => { const { body : listItemES } = await esClient . search < SearchEsListItemSchema > ( { body : { query : { term : { _id : id , } , } , } , ignore_unavailable : true , index : listItemIndex , seq_no_primary_term : true , } ) ; if ( listItemES . hits . hits . length ) { const type = findSourceType ( listItemES . hits . hits [ 0 ] . _source ) ; if ( type != null ) { const listItems = transformElasticToListItem ( { response : listItemES , type } ) ; return listItems [ 0 ] ; } else { return null ; } } else { return null ; } } ;