mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 03:01:21 -04:00
- Originally Kibana's `http` service did not support receiving streams, that's why we used plain `fetch` for this. This has been fixed in #158678, so this PR updates the streaming helpers to use Kibana's `http` service from now on. - The PR also breaks out the response stream code into its own package and restructures it to separate client and server side code. This brings down the `aiops` bundle size by `~300KB`! 🥳 - The approach to client side throttling/buffering was also revamped: There was an issue doing the throttling inside the generator function, it always waited for the timeout. The buffering is now removed from `fetchStream`, instead `useThrottle` from `react-use` is used on the reduced `data` in `useFetchStream`. Loading log rate analysis results got a lot snappier with this update!
30 lines
940 B
TypeScript
30 lines
940 B
TypeScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License
|
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
* 2.0.
|
|
*/
|
|
|
|
import type { HttpSetup } from '@kbn/core/public';
|
|
|
|
import type {
|
|
AiopsLogRateAnalysisSchema,
|
|
AiopsLogRateAnalysisApiAction,
|
|
} from './log_rate_analysis';
|
|
import { streamReducer } from './stream_reducer';
|
|
|
|
export const AIOPS_API_ENDPOINT = {
|
|
LOG_RATE_ANALYSIS: '/internal/aiops/log_rate_analysis',
|
|
} as const;
|
|
|
|
type AiopsApiEndpointKeys = keyof typeof AIOPS_API_ENDPOINT;
|
|
export type AiopsApiEndpoint = typeof AIOPS_API_ENDPOINT[AiopsApiEndpointKeys];
|
|
|
|
export interface AiopsApiLogRateAnalysis {
|
|
http: HttpSetup;
|
|
endpoint: AiopsApiEndpoint;
|
|
apiVersion: string;
|
|
reducer: typeof streamReducer;
|
|
body: AiopsLogRateAnalysisSchema;
|
|
actions: AiopsLogRateAnalysisApiAction;
|
|
}
|