From a95f556e24a153d8f8a6817aea029c49b5f59667 Mon Sep 17 00:00:00 2001 From: Ashley Harrison Date: Mon, 8 Sep 2025 16:49:57 +0100 Subject: [PATCH] Chore: Remove some `any`s (#110661) * removing some (hopefully) dead code * fix some more any * more any fixes * manually add suppressions * remove type assertion * couple more --- eslint-suppressions.json | 64 ++++--------------- .../v2schema/ImportDashboardOverviewV2.tsx | 2 +- .../ValueMatchers/BasicMatcherEditor.tsx | 18 +++--- .../transformers/spatial/optionsHelper.tsx | 2 +- .../CloudWatchLogsLanguageProvider.ts | 14 ++-- .../elasticsearch/LanguageProvider.ts | 4 +- .../components/SimulationQueryEditor.tsx | 6 +- .../components/SimulationSchemaForm.tsx | 2 +- .../grafana-testdata-datasource/datasource.ts | 2 +- .../grafana/components/QueryEditor.tsx | 2 +- .../plugins/datasource/graphite/datasource.ts | 6 +- .../datasource/graphite/graphite_query.ts | 2 +- .../datasource/influxdb/influx_series.ts | 2 +- .../plugins/datasource/influxdb/query_part.ts | 11 ++-- .../datasource/loki/LanguageProvider.ts | 4 +- .../loki/configuration/ConfigEditor.tsx | 2 +- .../plugins/datasource/opentsdb/datasource.ts | 4 +- .../AdHocFilter/AdHocFilterRenderer.tsx | 1 - .../datasource/tempo/language_provider.ts | 3 +- .../datasource/zipkin/utils/transforms.ts | 14 ++-- public/app/types/events.ts | 17 ----- public/app/types/jquery/jquery.d.ts | 8 --- public/test/core/thunk/thunkTester.ts | 4 +- public/test/specs/helpers.ts | 49 +------------- 24 files changed, 62 insertions(+), 181 deletions(-) diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 9f73a9a11c2..478996bdba1 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -2374,9 +2374,6 @@ "public/app/features/dashboard-scene/v2schema/ImportDashboardOverviewV2.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 10 - }, - "@typescript-eslint/no-explicit-any": { - "count": 1 } }, "public/app/features/dashboard-scene/v2schema/test-helpers.ts": { @@ -3472,11 +3469,6 @@ "count": 9 } }, - "public/app/features/transformers/FilterByValueTransformer/ValueMatchers/BasicMatcherEditor.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, "public/app/features/transformers/FilterByValueTransformer/ValueMatchers/types.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 @@ -3575,7 +3567,7 @@ }, "public/app/features/transformers/spatial/optionsHelper.tsx": { "@typescript-eslint/consistent-type-assertions": { - "count": 3 + "count": 2 }, "@typescript-eslint/no-explicit-any": { "count": 3 @@ -3993,7 +3985,7 @@ }, "public/app/plugins/datasource/cloudwatch/language/cloudwatch-logs/CloudWatchLogsLanguageProvider.ts": { "@typescript-eslint/no-explicit-any": { - "count": 3 + "count": 1 } }, "public/app/plugins/datasource/cloudwatch/types.ts": { @@ -4026,7 +4018,7 @@ }, "public/app/plugins/datasource/elasticsearch/LanguageProvider.ts": { "@typescript-eslint/no-explicit-any": { - "count": 4 + "count": 3 } }, "public/app/plugins/datasource/elasticsearch/QueryBuilder.ts": { @@ -4139,9 +4131,6 @@ "public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationQueryEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 - }, - "@typescript-eslint/no-explicit-any": { - "count": 2 } }, "public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationSchemaForm.tsx": { @@ -4152,9 +4141,6 @@ "public/app/plugins/datasource/grafana-testdata-datasource/datasource.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 1 - }, - "@typescript-eslint/no-explicit-any": { - "count": 1 } }, "public/app/plugins/datasource/grafana/components/AnnotationQueryEditor.tsx": { @@ -4168,9 +4154,6 @@ "public/app/plugins/datasource/grafana/components/QueryEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 - }, - "@typescript-eslint/no-explicit-any": { - "count": 1 } }, "public/app/plugins/datasource/grafana/components/TimeRegionEditor.tsx": { @@ -4201,7 +4184,7 @@ "count": 4 }, "@typescript-eslint/no-explicit-any": { - "count": 15 + "count": 10 } }, "public/app/plugins/datasource/graphite/gfunc.ts": { @@ -4217,7 +4200,7 @@ "count": 1 }, "@typescript-eslint/no-explicit-any": { - "count": 10 + "count": 9 } }, "public/app/plugins/datasource/graphite/lexer.ts": { @@ -4318,12 +4301,12 @@ }, "public/app/plugins/datasource/influxdb/influx_series.ts": { "@typescript-eslint/no-explicit-any": { - "count": 9 + "count": 8 } }, "public/app/plugins/datasource/influxdb/query_part.ts": { "@typescript-eslint/no-explicit-any": { - "count": 14 + "count": 12 } }, "public/app/plugins/datasource/influxdb/response_parser.ts": { @@ -4336,11 +4319,6 @@ "count": 1 } }, - "public/app/plugins/datasource/loki/LanguageProvider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, "public/app/plugins/datasource/loki/LogContextProvider.ts": { "no-restricted-syntax": { "count": 2 @@ -4361,11 +4339,6 @@ "count": 2 } }, - "public/app/plugins/datasource/loki/configuration/ConfigEditor.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, "public/app/plugins/datasource/loki/configuration/DerivedField.tsx": { "no-restricted-syntax": { "count": 13 @@ -4448,7 +4421,7 @@ }, "public/app/plugins/datasource/opentsdb/datasource.ts": { "@typescript-eslint/no-explicit-any": { - "count": 18 + "count": 16 } }, "public/app/plugins/datasource/parca/QueryEditor/QueryOptions.tsx": { @@ -4487,9 +4460,6 @@ } }, "public/app/plugins/datasource/tempo/_importedDependencies/components/AdHocFilter/AdHocFilterRenderer.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - }, "no-restricted-syntax": { "count": 1 } @@ -4527,11 +4497,6 @@ "count": 2 } }, - "public/app/plugins/datasource/tempo/language_provider.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, "public/app/plugins/datasource/tempo/resultTransformer.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 2 @@ -4559,11 +4524,6 @@ "count": 1 } }, - "public/app/plugins/datasource/zipkin/utils/transforms.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, "public/app/plugins/panel/annolist/AnnoListPanel.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -4913,12 +4873,12 @@ }, "public/app/types/events.ts": { "@typescript-eslint/no-explicit-any": { - "count": 9 + "count": 5 } }, "public/app/types/jquery/jquery.d.ts": { "@typescript-eslint/no-explicit-any": { - "count": 8 + "count": 3 } }, "public/app/types/store.ts": { @@ -4956,7 +4916,7 @@ }, "public/test/core/thunk/thunkTester.ts": { "@typescript-eslint/no-explicit-any": { - "count": 6 + "count": 4 } }, "public/test/global-jquery-shim.ts": { @@ -4981,7 +4941,7 @@ }, "public/test/specs/helpers.ts": { "@typescript-eslint/no-explicit-any": { - "count": 5 + "count": 1 } } } \ No newline at end of file diff --git a/public/app/features/dashboard-scene/v2schema/ImportDashboardOverviewV2.tsx b/public/app/features/dashboard-scene/v2schema/ImportDashboardOverviewV2.tsx index 6f193e243a1..21a7f9c7e3d 100644 --- a/public/app/features/dashboard-scene/v2schema/ImportDashboardOverviewV2.tsx +++ b/public/app/features/dashboard-scene/v2schema/ImportDashboardOverviewV2.tsx @@ -116,7 +116,7 @@ export function ImportDashboardOverviewV2() { if (element.kind === 'Panel') { const panel = { ...element.spec }; if (panel.data?.kind === 'QueryGroup') { - const newQueries = panel.data.spec.queries.map((query: any) => { + const newQueries = panel.data.spec.queries.map((query) => { if (query.kind === 'PanelQuery') { const queryType = query.spec.query?.kind; // Match datasource by query kind diff --git a/public/app/features/transformers/FilterByValueTransformer/ValueMatchers/BasicMatcherEditor.tsx b/public/app/features/transformers/FilterByValueTransformer/ValueMatchers/BasicMatcherEditor.tsx index a969064195c..8ac986a9bce 100644 --- a/public/app/features/transformers/FilterByValueTransformer/ValueMatchers/BasicMatcherEditor.tsx +++ b/public/app/features/transformers/FilterByValueTransformer/ValueMatchers/BasicMatcherEditor.tsx @@ -9,7 +9,7 @@ import { getVariableSuggestions, numberOrVariableValidator } from '../../utils'; import { ValueMatcherEditorConfig, ValueMatcherUIProps, ValueMatcherUIRegistryItem } from './types'; -export function basicMatcherEditor( +export function basicMatcherEditor( config: ValueMatcherEditorConfig ): React.FC> { return function Render({ options, onChange }) { @@ -46,56 +46,56 @@ export const getBasicValueMatchersUI = (): Array({ + component: basicMatcherEditor({ validator: numberOrVariableValidator, }), }, { name: 'Is greater or equal', id: ValueMatcherID.greaterOrEqual, - component: basicMatcherEditor({ + component: basicMatcherEditor({ validator: numberOrVariableValidator, }), }, { name: 'Is lower', id: ValueMatcherID.lower, - component: basicMatcherEditor({ + component: basicMatcherEditor({ validator: numberOrVariableValidator, }), }, { name: 'Is lower or equal', id: ValueMatcherID.lowerOrEqual, - component: basicMatcherEditor({ + component: basicMatcherEditor({ validator: numberOrVariableValidator, }), }, { name: 'Is equal', id: ValueMatcherID.equal, - component: basicMatcherEditor({ + component: basicMatcherEditor({ validator: () => true, }), }, { name: 'Is not equal', id: ValueMatcherID.notEqual, - component: basicMatcherEditor({ + component: basicMatcherEditor({ validator: () => true, }), }, { name: 'Is Substring', id: ValueMatcherID.substring, - component: basicMatcherEditor({ + component: basicMatcherEditor({ validator: () => true, }), }, { name: 'Is not substring', id: ValueMatcherID.notSubstring, - component: basicMatcherEditor({ + component: basicMatcherEditor({ validator: () => true, }), }, diff --git a/public/app/features/transformers/spatial/optionsHelper.tsx b/public/app/features/transformers/spatial/optionsHelper.tsx index 8b720bfe3c4..06e75acbfff 100644 --- a/public/app/features/transformers/spatial/optionsHelper.tsx +++ b/public/app/features/transformers/spatial/optionsHelper.tsx @@ -36,7 +36,7 @@ export function getTransformerOptionPane( const access: NestedValueAccess = { getValue: (path) => lodashGet(props.options, path), onChange: (path, value) => { - props.onChange(setOptionImmutably(props.options as any, path, value)); + props.onChange(setOptionImmutably(props.options, path, value)); }, }; diff --git a/public/app/plugins/datasource/cloudwatch/language/cloudwatch-logs/CloudWatchLogsLanguageProvider.ts b/public/app/plugins/datasource/cloudwatch/language/cloudwatch-logs/CloudWatchLogsLanguageProvider.ts index 1f182989d8c..ba36458e0be 100644 --- a/public/app/plugins/datasource/cloudwatch/language/cloudwatch-logs/CloudWatchLogsLanguageProvider.ts +++ b/public/app/plugins/datasource/cloudwatch/language/cloudwatch-logs/CloudWatchLogsLanguageProvider.ts @@ -35,13 +35,11 @@ export class CloudWatchLogsLanguageProvider extends LanguageProvider { datasource: CloudWatchDatasource; templateSrv: TemplateSrv; - constructor(datasource: CloudWatchDatasource, templateSrv?: TemplateSrv, initialValues?: any) { + constructor(datasource: CloudWatchDatasource, templateSrv?: TemplateSrv) { super(); this.datasource = datasource; this.templateSrv = templateSrv ?? getTemplateSrv(); - - Object.assign(this, initialValues); } // Strip syntax chars @@ -90,15 +88,17 @@ export class CloudWatchLogsLanguageProvider extends LanguageProvider { const { value } = input; // Get tokens - const tokens = value?.data.get('tokens'); + const tokens: Token[] = value?.data.get('tokens'); if (!tokens || !tokens.length) { return { suggestions: [] }; } - const curToken: Token = tokens.filter( - (token: any) => - token.offsets.start <= value!.selection?.start?.offset && token.offsets.end >= value!.selection?.start?.offset + const curToken = tokens.filter( + (token) => + token.offsets && + token.offsets.start <= value!.selection?.start?.offset && + token.offsets.end >= value!.selection?.start?.offset )[0]; const isFirstToken = !curToken.prev; diff --git a/public/app/plugins/datasource/elasticsearch/LanguageProvider.ts b/public/app/plugins/datasource/elasticsearch/LanguageProvider.ts index 963c4335f4b..bb865383ac6 100644 --- a/public/app/plugins/datasource/elasticsearch/LanguageProvider.ts +++ b/public/app/plugins/datasource/elasticsearch/LanguageProvider.ts @@ -8,11 +8,9 @@ export default class ElasticsearchLanguageProvider extends LanguageProvider { declare start: () => Promise; datasource: ElasticDatasource; - constructor(datasource: ElasticDatasource, initialValues?: any) { + constructor(datasource: ElasticDatasource) { super(); this.datasource = datasource; - - Object.assign(this, initialValues); } /** diff --git a/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationQueryEditor.tsx b/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationQueryEditor.tsx index e808ceb6178..468bfd042de 100644 --- a/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationQueryEditor.tsx +++ b/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationQueryEditor.tsx @@ -7,7 +7,7 @@ import { InlineField, InlineFieldRow, InlineSwitch, Input, Label, Select } from import { EditorProps } from '../QueryEditor'; import { SimulationQuery } from '../dataquery'; -import { SimulationSchemaForm } from './SimulationSchemaForm'; +import { SimulationSchemaForm, type Config } from './SimulationSchemaForm'; // Type string `json:"type"` // Name string `json:"name"` @@ -27,7 +27,7 @@ export const SimulationQueryEditor = ({ onChange, query, ds }: EditorProps) => { const simQuery = query.sim ?? ({} as SimulationQuery); const simKey = simQuery.key ?? {}; // keep track of updated config state to pass down to form - const [cfgValue, setCfgValue] = useState>({}); + const [cfgValue, setCfgValue] = useState({}); // This only changes once const info = useAsync(async () => { @@ -85,7 +85,7 @@ export const SimulationQueryEditor = ({ onChange, query, ds }: EditorProps) => { onChange({ ...query, sim: { ...simQuery, last: !simQuery.last } }); }; - const onSchemaFormChange = (config: Record) => { + const onSchemaFormChange = (config: Config) => { let path = simKey.type + '/' + simKey.tick + 'hz'; if (simKey.uid) { path += '/' + simKey.uid; diff --git a/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationSchemaForm.tsx b/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationSchemaForm.tsx index 2f3f0fa4092..f5d35734788 100644 --- a/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationSchemaForm.tsx +++ b/public/app/plugins/datasource/grafana-testdata-datasource/components/SimulationSchemaForm.tsx @@ -4,7 +4,7 @@ import { FormEvent, useState, ChangeEvent } from 'react'; import { DataFrameSchema, FieldSchema, GrafanaTheme2 } from '@grafana/data'; import { useStyles2, TextArea, InlineField, Input, FieldSet, InlineSwitch } from '@grafana/ui'; -type Config = Record; +export type Config = Record; interface SchemaFormProps { config: Config; diff --git a/public/app/plugins/datasource/grafana-testdata-datasource/datasource.ts b/public/app/plugins/datasource/grafana-testdata-datasource/datasource.ts index bf2dc772cc1..25d96d63f80 100644 --- a/public/app/plugins/datasource/grafana-testdata-datasource/datasource.ts +++ b/public/app/plugins/datasource/grafana-testdata-datasource/datasource.ts @@ -386,7 +386,7 @@ export class TestDataDataSource extends DataSourceWithBackend options: DataQueryRequest ): Observable { try { - const data = JSON.parse(target.rawFrameContent ?? '[]').map((v: any) => { + const data = JSON.parse(target.rawFrameContent ?? '[]').map((v: unknown) => { const f = toDataFrame(v); f.refId = target.refId; return f; diff --git a/public/app/plugins/datasource/grafana/components/QueryEditor.tsx b/public/app/plugins/datasource/grafana/components/QueryEditor.tsx index 8f799c3e35a..c1534f58378 100644 --- a/public/app/plugins/datasource/grafana/components/QueryEditor.tsx +++ b/public/app/plugins/datasource/grafana/components/QueryEditor.tsx @@ -108,7 +108,7 @@ export class UnthemedQueryEditor extends PureComponent { loadFolderInfo() { const query: DataQueryRequest = { targets: [{ queryType: GrafanaQueryType.List, refId: 'A' }], - } as any; + } as DataQueryRequest; getDataSourceSrv() .get('-- Grafana --') diff --git a/public/app/plugins/datasource/graphite/datasource.ts b/public/app/plugins/datasource/graphite/datasource.ts index d5415d0eed5..d2255c5179c 100644 --- a/public/app/plugins/datasource/graphite/datasource.ts +++ b/public/app/plugins/datasource/graphite/datasource.ts @@ -679,7 +679,7 @@ export class GraphiteDatasource private requestMetricFind( query: string, requestId: string, - range?: { from: any; until: any } + range?: { from: string | number; until: string | number } ): Promise { const params: BackendSrvRequest['params'] = {}; @@ -722,7 +722,7 @@ export class GraphiteDatasource private requestMetricExpand( query: string, requestId: string, - range?: { from: any; until: any } + range?: { from: string | number; until: string | number } ): Promise { const params: BackendSrvRequest['params'] = { query }; if (range) { @@ -901,7 +901,7 @@ export class GraphiteDatasource ); } - createFuncInstance(funcDef: string | FuncDef, options?: any): FuncInstance { + createFuncInstance(funcDef: string | FuncDef, options?: { withDefaultParams: boolean }): FuncInstance { return gfunc.createFuncInstance(funcDef, options, this.funcDefs); } diff --git a/public/app/plugins/datasource/graphite/graphite_query.ts b/public/app/plugins/datasource/graphite/graphite_query.ts index 5c23e83f695..3656452f34d 100644 --- a/public/app/plugins/datasource/graphite/graphite_query.ts +++ b/public/app/plugins/datasource/graphite/graphite_query.ts @@ -224,7 +224,7 @@ export default class GraphiteQuery { this.functions.forEach((func) => (func.added = false)); } - updateRenderedTarget(target: { refId: string | number; target: any; targetFull: any }, targets: any) { + updateRenderedTarget(target: { refId: string | number; target: string; targetFull: any }, targets: any) { // render nested query const targetsByRefId = keyBy(targets, 'refId'); diff --git a/public/app/plugins/datasource/influxdb/influx_series.ts b/public/app/plugins/datasource/influxdb/influx_series.ts index d41e9b590ec..abf69838774 100644 --- a/public/app/plugins/datasource/influxdb/influx_series.ts +++ b/public/app/plugins/datasource/influxdb/influx_series.ts @@ -187,7 +187,7 @@ export default class InfluxSeries { // // we have to keep this order both in table.columns and table.rows - each(this.series, (series: any, seriesIndex: number) => { + each(this.series, (series, seriesIndex: number) => { if (seriesIndex === 0) { const firstCol = series.columns[0]; // Check the first column's name, if it is `time`, we diff --git a/public/app/plugins/datasource/influxdb/query_part.ts b/public/app/plugins/datasource/influxdb/query_part.ts index 03a07bc1e1e..45f6ba663b9 100644 --- a/public/app/plugins/datasource/influxdb/query_part.ts +++ b/public/app/plugins/datasource/influxdb/query_part.ts @@ -2,9 +2,10 @@ import { clone, map } from 'lodash'; import { functionRenderer, QueryPart, QueryPartDef, suffixRenderer } from 'app/features/alerting/state/query_part'; -const index: any[] = []; +const index: QueryPartDef[] = []; const categories = { Aggregations: [], + GroupByTimeFunctions: [], Selectors: [], Transformations: [], Predictors: [], @@ -27,8 +28,6 @@ function register(options: any) { options.category.push(index[options.type]); } -const groupByTimeFunctions: any[] = []; - function aliasRenderer(part: { params: string[] }, innerExpr: string) { return innerExpr + ' AS ' + '"' + part.params[0] + '"'; } @@ -308,7 +307,7 @@ register({ register({ type: 'time', - category: groupByTimeFunctions, + category: categories.GroupByTimeFunctions, params: [ { name: 'interval', @@ -322,7 +321,7 @@ register({ register({ type: 'fill', - category: groupByTimeFunctions, + category: categories.GroupByTimeFunctions, params: [ { name: 'fill', @@ -440,7 +439,7 @@ register({ register({ type: 'tag', - category: groupByTimeFunctions, + category: categories.GroupByTimeFunctions, params: [{ name: 'tag', type: 'string', dynamicLookup: true }], defaultParams: ['tag'], renderer: fieldRenderer, diff --git a/public/app/plugins/datasource/loki/LanguageProvider.ts b/public/app/plugins/datasource/loki/LanguageProvider.ts index 17cbe513eaa..9b86f01796d 100644 --- a/public/app/plugins/datasource/loki/LanguageProvider.ts +++ b/public/app/plugins/datasource/loki/LanguageProvider.ts @@ -36,13 +36,11 @@ export default class LokiLanguageProvider extends LanguageProvider { private labelsPromisesCache = new LRUCache>({ max: 10 }); private detectedLabelValuesPromisesCache = new LRUCache>({ max: 10 }); - constructor(datasource: LokiDatasource, initialValues?: any) { + constructor(datasource: LokiDatasource) { super(); this.datasource = datasource; this.labelKeys = []; - - Object.assign(this, initialValues); } request = async ( diff --git a/public/app/plugins/datasource/loki/configuration/ConfigEditor.tsx b/public/app/plugins/datasource/loki/configuration/ConfigEditor.tsx index a63878dee1e..0cbd308f07b 100644 --- a/public/app/plugins/datasource/loki/configuration/ConfigEditor.tsx +++ b/public/app/plugins/datasource/loki/configuration/ConfigEditor.tsx @@ -19,7 +19,7 @@ import { QuerySettings } from './QuerySettings'; export type Props = DataSourcePluginOptionsEditorProps; const makeJsonUpdater = - (field: keyof LokiOptions) => + (field: keyof LokiOptions) => (options: DataSourceSettings, value: T): DataSourceSettings => { return { ...options, diff --git a/public/app/plugins/datasource/opentsdb/datasource.ts b/public/app/plugins/datasource/opentsdb/datasource.ts index 146e291b741..2f1109a5e9d 100644 --- a/public/app/plugins/datasource/opentsdb/datasource.ts +++ b/public/app/plugins/datasource/opentsdb/datasource.ts @@ -38,7 +38,7 @@ export default class OpenTsDatasource extends DataSourceApi 0) { for (let i = 0; i < target.filters.length; i++) { if (this.templateSrv.containsTemplate(target.filters[i].filter)) { diff --git a/public/app/plugins/datasource/tempo/_importedDependencies/components/AdHocFilter/AdHocFilterRenderer.tsx b/public/app/plugins/datasource/tempo/_importedDependencies/components/AdHocFilter/AdHocFilterRenderer.tsx index 6c658f5d18a..65b3b7ba3f3 100644 --- a/public/app/plugins/datasource/tempo/_importedDependencies/components/AdHocFilter/AdHocFilterRenderer.tsx +++ b/public/app/plugins/datasource/tempo/_importedDependencies/components/AdHocFilter/AdHocFilterRenderer.tsx @@ -12,7 +12,6 @@ interface Props { onOperatorChange: (item: SelectableValue) => void; onValueChange: (item: SelectableValue) => void; placeHolder?: string; - getTagKeysOptions?: any; disabled?: boolean; } diff --git a/public/app/plugins/datasource/tempo/language_provider.ts b/public/app/plugins/datasource/tempo/language_provider.ts index c84406e5fa7..0219f5b6a36 100644 --- a/public/app/plugins/datasource/tempo/language_provider.ts +++ b/public/app/plugins/datasource/tempo/language_provider.ts @@ -34,11 +34,10 @@ export default class TempoLanguageProvider extends LanguageProvider { tagsV2?: Scope[]; private previousRange?: TimeRange; - constructor(datasource: TempoDatasource, initialValues?: any) { + constructor(datasource: TempoDatasource) { super(); this.datasource = datasource; - Object.assign(this, initialValues); } request = async (url: string, params = {}) => { diff --git a/public/app/plugins/datasource/zipkin/utils/transforms.ts b/public/app/plugins/datasource/zipkin/utils/transforms.ts index e3c8c0a2cdf..fb7f1301e88 100644 --- a/public/app/plugins/datasource/zipkin/utils/transforms.ts +++ b/public/app/plugins/datasource/zipkin/utils/transforms.ts @@ -130,7 +130,7 @@ function valueToTag(key: string, value: T): TraceKeyValuePair | undefined /** * Transforms data frame to Zipkin response */ -export const transformToZipkin = (data: MutableDataFrame): ZipkinSpan[] => { +export const transformToZipkin = (data: MutableDataFrame): ZipkinSpan[] => { let response: ZipkinSpan[] = []; for (let i = 0; i < data.length; i++) { @@ -143,24 +143,24 @@ export const transformToZipkin = (data: MutableDataFrame): ZipkinSpan[] => { timestamp: span.startTime * 1000, duration: span.duration * 1000, ...getEndpoint(span), - annotations: span.logs.length + annotations: span.logs?.length ? span.logs.map((l: TraceLog) => ({ timestamp: l.timestamp, value: l.fields[0].value })) : undefined, - tags: span.tags.length + tags: span.tags?.length ? span.tags .filter((t: TraceKeyValuePair) => t.key !== 'kind' && t.key !== 'endpointType' && t.key !== 'shared') .reduce((tags: { [key: string]: string }, t: TraceKeyValuePair) => { if (t.key === 'error') { return { ...tags, - [t.key]: span.tags.find((t: TraceKeyValuePair) => t.key === 'errorValue').value || '', + [t.key]: span.tags?.find((t: TraceKeyValuePair) => t.key === 'errorValue')?.value || '', }; } return { ...tags, [t.key]: t.value }; }, {}) : undefined, - kind: span.tags.find((t: TraceKeyValuePair) => t.key === 'kind')?.value, - shared: span.tags.find((t: TraceKeyValuePair) => t.key === 'shared')?.value, + kind: span.tags?.find((t: TraceKeyValuePair) => t.key === 'kind')?.value, + shared: span.tags?.find((t: TraceKeyValuePair) => t.key === 'shared')?.value, }); } @@ -168,7 +168,7 @@ export const transformToZipkin = (data: MutableDataFrame): ZipkinSpan[] => { }; // Returns remote or local endpoint object -const getEndpoint = (span: any): { [key: string]: ZipkinEndpoint } | undefined => { +const getEndpoint = (span: TraceSpanRow): { [key: string]: ZipkinEndpoint } | undefined => { const key = span.serviceTags.find((t: TraceKeyValuePair) => t.key === 'endpointType')?.value === 'local' ? 'localEndpoint' diff --git a/public/app/types/events.ts b/public/app/types/events.ts index d0a3d7a9873..978dfbf811f 100644 --- a/public/app/types/events.ts +++ b/public/app/types/events.ts @@ -55,17 +55,6 @@ export interface ToggleKioskModePayload { exit?: boolean; } -export interface GraphClickedPayload { - pos: any; - panel: any; - item: any; -} - -export interface ThresholdChangedPayload { - threshold: any; - handleIndex: number; -} - export interface DashScrollPayload { restore?: boolean; animate?: boolean; @@ -79,12 +68,6 @@ export interface PanelChangeViewPayload {} */ export const templateVariableValueUpdated = eventFactory('template-variable-value-updated'); -export const graphClicked = eventFactory('graph-click'); - -/** - * @internal - */ -export const thresholdChanged = eventFactory('threshold-changed'); /** * Used for syncing queries badge count in panel edit queries tab diff --git a/public/app/types/jquery/jquery.d.ts b/public/app/types/jquery/jquery.d.ts index 84b7ed5a37d..a2bd265a73e 100644 --- a/public/app/types/jquery/jquery.d.ts +++ b/public/app/types/jquery/jquery.d.ts @@ -6,11 +6,3 @@ interface JQueryPlot { interface JQueryStatic { plot: JQueryPlot; } - -interface JQuery { - place_tt: any; - modal: any; - tagsinput: any; - typeahead: any; - tooltip: any; -} diff --git a/public/test/core/thunk/thunkTester.ts b/public/test/core/thunk/thunkTester.ts index 1fb1d0cee3c..662dcf72b3c 100644 --- a/public/test/core/thunk/thunkTester.ts +++ b/public/test/core/thunk/thunkTester.ts @@ -15,7 +15,7 @@ export interface ThunkWhen { export const thunkTester = (initialState: unknown, debug?: boolean): ThunkGiven => { const store = mockStore(initialState); let thunkUnderTest: any = null; - let dispatchedActions: Array> = []; + let dispatchedActions: PayloadAction[] = []; const givenThunk = (thunkFunction: any): ThunkWhen => { thunkUnderTest = thunkFunction; @@ -23,7 +23,7 @@ export const thunkTester = (initialState: unknown, debug?: boolean): ThunkGiven return instance; }; - const whenThunkIsDispatched = async (...args: unknown[]): Promise>> => { + const whenThunkIsDispatched = async (...args: unknown[]): Promise => { await store.dispatch(thunkUnderTest(...args)); dispatchedActions = store.getActions(); diff --git a/public/test/specs/helpers.ts b/public/test/specs/helpers.ts index cfacbb9f46e..4faf7526908 100644 --- a/public/test/specs/helpers.ts +++ b/public/test/specs/helpers.ts @@ -1,52 +1,7 @@ import { template } from 'lodash'; -import { RawTimeRange, PanelPluginMeta, dateMath } from '@grafana/data'; -import config from 'app/core/config'; +import { RawTimeRange, dateMath } from '@grafana/data'; import { ContextSrv } from 'app/core/services/context_srv'; -import { PanelModel } from 'app/features/dashboard/state/PanelModel'; - -export function ControllerTestContext(this: any) { - const self = this; - - this.datasource = {}; - this.$element = {}; - this.$sanitize = {}; - this.annotationsSrv = {}; - this.contextSrv = {}; - this.timeSrv = new TimeSrvStub(); - this.templateSrv = TemplateSrvStub(); - this.datasourceSrv = { - getMetricSources: () => {}, - get: () => { - return { - then: (callback: (ds: any) => void) => { - callback(self.datasource); - }, - }; - }, - }; - this.isUtc = false; - - this.createPanelController = (Ctrl: any) => { - return () => { - self.panel = new PanelModel({ type: 'test' }); - self.dashboard = { meta: {} }; - self.isUtc = false; - self.dashboard.getTimezone = () => { - return self.isUtc ? 'utc' : 'browser'; - }; - config.panels['test'] = { info: {} } as PanelPluginMeta; - }; - }; - - this.setIsUtc = (isUtc = false) => { - self.isUtc = isUtc; - }; -} - -export function DashboardViewStateStub(this: any) { - this.registerPanel = () => {}; -} export class TimeSrvStub { time: RawTimeRange; @@ -120,8 +75,6 @@ const allDeps = { ContextSrvStub, TemplateSrvStub, TimeSrvStub, - ControllerTestContext, - DashboardViewStateStub, }; // for legacy