diff --git a/public/app/plugins/datasource/prometheus/result_transformer.test.ts b/public/app/plugins/datasource/prometheus/result_transformer.test.ts index 44add64095f..1e47b246fc0 100644 --- a/public/app/plugins/datasource/prometheus/result_transformer.test.ts +++ b/public/app/plugins/datasource/prometheus/result_transformer.test.ts @@ -510,6 +510,20 @@ describe('Prometheus Result Transformer', () => { expect(result[0].length).toBe(1); }); + it('should return with an empty array when data is empty', () => { + const result = transform( + { + data: { + status: 'success', + data: [], + }, + } as any, + options + ); + + expect(result).toHaveLength(0); + }); + it('should remove exemplars that are too close to each other', () => { const response = { status: 'success', diff --git a/public/app/plugins/datasource/prometheus/types.ts b/public/app/plugins/datasource/prometheus/types.ts index f5b1c95005c..cdf857d0b8d 100644 --- a/public/app/plugins/datasource/prometheus/types.ts +++ b/public/app/plugins/datasource/prometheus/types.ts @@ -63,7 +63,7 @@ export interface PromDataErrorResponse { data: T; } -export type PromData = PromMatrixData | PromVectorData | PromScalarData | PromExemplarData[] | null; +export type PromData = PromMatrixData | PromVectorData | PromScalarData | PromExemplarData[]; export interface Labels { [index: string]: any; @@ -120,7 +120,7 @@ export function isExemplarData(result: PromData): result is PromExemplarData[] { if (result == null || !Array.isArray(result)) { return false; } - return 'exemplars' in result[0]; + return result.length ? 'exemplars' in result[0] : false; } export type MatrixOrVectorResult = PromMatrixData['result'][0] | PromVectorData['result'][0];