import { CollectorSet } from '../../plugins/usage_collection/server/collector' ; import { loggerMock } from '../../core/server/logging/logger.mock' ; const { makeUsageCollector } = new CollectorSet ( { logger : loggerMock . create ( ) , maximumWaitTimeForAllCollectorsInS : 0 , } ) ; interface MyObject { total : number ; type : boolean ; } const COMPUTED_TERM = 'computed_term' ; export interface CONSTANT_TERM_INTERFACE { [ COMPUTED_TERM ] ? : MyObject ; } interface Usage { flat ? : string ; my_str ? : string ; my_objects : MyObject ; my_array ? : MyObject [ ] ; my_str_array ? : string [ ] ; interface_terms ? : CONSTANT_TERM_INTERFACE ; my_index_signature_prop ? : { [ key ] : number ; } ; } const SOME_NUMBER = 123 ; export const myCollector = makeUsageCollector < Usage > ( { type : 'my_working_collector' , isReady : ( ) => true , fetch ( ) { const testString = '123' ; try { return { flat : 'hello' , my_str : testString , my_objects : { total : SOME_NUMBER , type : true , } , my_array : [ { total : SOME_NUMBER , type : true , } , ] , my_str_array : [ 'hello' , 'world' ] , } ; } catch ( err ) { return { my_objects : { total : 0 , type : true , } , } ; } } , schema : { flat : { type : 'keyword' , } , my_str : { type : 'text' , } , my_objects : { total : { type : 'long' , } , type : { type : 'boolean' } , } , my_array : { type : 'array' , items : { total : { type : 'long' , } , type : { type : 'boolean' } , } , } , my_str_array : { type : 'array' , items : { type : 'keyword' } } , interface_terms : { computed_term : { total : { type : 'long' } , type : { type : 'boolean' } , } , } , my_index_signature_prop : { count : { type : 'long' } , avg : { type : 'float' } , max : { type : 'long' } , min : { type : 'long' } , } , } , } ) ;