diff --git a/public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx b/public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx index 26fc2afa0df..92b2335140d 100644 --- a/public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx +++ b/public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx @@ -1,29 +1,33 @@ import React, { PureComponent } from 'react'; import { dateTimeFormat } from '@grafana/data'; import { Legend, Form } from '@grafana/ui'; -import { connect, MapDispatchToProps, MapStateToProps } from 'react-redux'; +import { connect, ConnectedProps } from 'react-redux'; import { ImportDashboardForm } from './ImportDashboardForm'; import { clearLoadedDashboard, importDashboard } from '../state/actions'; -import { DashboardInputs, DashboardSource, ImportDashboardDTO } from '../state/reducers'; +import { DashboardSource, ImportDashboardDTO } from '../state/reducers'; import { StoreState } from 'app/types'; import { locationService } from '@grafana/runtime'; -interface OwnProps {} +const mapStateToProps = (state: StoreState) => { + const searchObj = locationService.getSearchObject(); -interface ConnectedProps { - dashboard: ImportDashboardDTO; - inputs: DashboardInputs; - source: DashboardSource; - meta?: any; - folder: { id: number; title?: string }; -} + return { + dashboard: state.importDashboard.dashboard, + meta: state.importDashboard.meta, + source: state.importDashboard.source, + inputs: state.importDashboard.inputs, + folder: searchObj.folderId ? { id: Number(searchObj.folderId) } : { id: 0 }, + }; +}; -interface DispatchProps { - clearLoadedDashboard: typeof clearLoadedDashboard; - importDashboard: typeof importDashboard; -} +const mapDispatchToProps = { + clearLoadedDashboard, + importDashboard, +}; -type Props = OwnProps & ConnectedProps & DispatchProps; +const connector = connect(mapStateToProps, mapDispatchToProps); + +type Props = ConnectedProps; interface State { uidReset: boolean; @@ -109,22 +113,5 @@ class ImportDashboardOverviewUnConnected extends PureComponent { } } -const mapStateToProps: MapStateToProps = (state: StoreState) => { - const searchObj = locationService.getSearchObject(); - - return { - dashboard: state.importDashboard.dashboard, - meta: state.importDashboard.meta, - source: state.importDashboard.source, - inputs: state.importDashboard.inputs, - folder: searchObj.folderId ? { id: Number(searchObj.folderId) } : { id: 0 }, - }; -}; - -const mapDispatchToProps: MapDispatchToProps = { - clearLoadedDashboard, - importDashboard, -}; - -export const ImportDashboardOverview = connect(mapStateToProps, mapDispatchToProps)(ImportDashboardOverviewUnConnected); +export const ImportDashboardOverview = connector(ImportDashboardOverviewUnConnected); ImportDashboardOverview.displayName = 'ImportDashboardOverview'; diff --git a/public/app/features/plugins/admin/hooks/usePlugins.tsx b/public/app/features/plugins/admin/hooks/usePlugins.tsx index 4bfc908a5c7..3713462b2ee 100644 --- a/public/app/features/plugins/admin/hooks/usePlugins.tsx +++ b/public/app/features/plugins/admin/hooks/usePlugins.tsx @@ -65,7 +65,7 @@ export const usePluginsByFilter = (queries: PluginsByFilterType): FilteredPlugin const { loading, error, plugins } = usePlugins(); const filteredPlugins = plugins.filter((plugin) => - Object.keys(queries).every((query: keyof PluginsByFilterType) => + (Object.keys(queries) as Array).every((query) => typeof URLFilterHandlers[query] === 'function' ? URLFilterHandlers[query](plugin, queries[query]) : true ) ); diff --git a/public/app/plugins/datasource/cloudwatch/components/LogsQueryField.test.tsx b/public/app/plugins/datasource/cloudwatch/components/LogsQueryField.test.tsx index da1a4825069..633988f48d2 100644 --- a/public/app/plugins/datasource/cloudwatch/components/LogsQueryField.test.tsx +++ b/public/app/plugins/datasource/cloudwatch/components/LogsQueryField.test.tsx @@ -7,7 +7,9 @@ import { SelectableValue } from '@grafana/data'; // eslint-disable-next-line lodash/import-scope import _, { Cancelable } from 'lodash'; -jest.spyOn(_, 'debounce').mockImplementation((func: ((...args: any) => any) & Cancelable, wait: number) => func); +jest + .spyOn(_, 'debounce') + .mockImplementation((func: (...args: any) => any, wait?: number) => func as typeof func & Cancelable); describe('CloudWatchLogsQueryField', () => { it('updates upstream query log groups on region change', async () => { diff --git a/public/app/plugins/datasource/cloudwatch/types.ts b/public/app/plugins/datasource/cloudwatch/types.ts index 2804e33ca56..9d3b78cf291 100644 --- a/public/app/plugins/datasource/cloudwatch/types.ts +++ b/public/app/plugins/datasource/cloudwatch/types.ts @@ -65,8 +65,8 @@ export interface CloudWatchJsonData extends AwsAuthDataSourceJsonData { } export interface CloudWatchSecureJsonData extends AwsAuthDataSourceSecureJsonData { - accessKey: string; - secretKey: string; + accessKey?: string; + secretKey?: string; } export interface GetQueryResultsRequest { diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.tsx b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.tsx index 1caf5b3015e..1e57a9b18a3 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.tsx +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.tsx @@ -11,7 +11,7 @@ export interface Props { onUpdateSecureJsonDataOption: ( key: keyof AzureDataSourceSecureJsonData ) => (event: React.SyntheticEvent) => void; - onResetOptionKey: (key: string) => void; + onResetOptionKey: (key: keyof AzureDataSourceSecureJsonData) => void; } export class InsightsConfig extends PureComponent { onAppInsightsResetApiKey = () => { diff --git a/public/app/plugins/datasource/testdata/components/USAQueryEditor.tsx b/public/app/plugins/datasource/testdata/components/USAQueryEditor.tsx index db733072c5e..1e9338dd930 100644 --- a/public/app/plugins/datasource/testdata/components/USAQueryEditor.tsx +++ b/public/app/plugins/datasource/testdata/components/USAQueryEditor.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { InlineFieldRow, InlineField, Select, Input } from '@grafana/ui'; +import { InlineFieldRow, InlineField, Select, MultiSelect, Input } from '@grafana/ui'; import { SelectableValue } from '@grafana/data'; import { USAQuery } from '../types'; @@ -35,26 +35,24 @@ export function USAQueryEditor({ query, onChange }: Props) { - { onChange({ ...query, states: vals.map((v) => v.value) }); }} - isMulti={true} placeholder="all" value={query.states} /> diff --git a/scripts/ci-check-strict.sh b/scripts/ci-check-strict.sh index f18ffc6d8d1..01c25971960 100755 --- a/scripts/ci-check-strict.sh +++ b/scripts/ci-check-strict.sh @@ -3,7 +3,7 @@ set -e echo -e "Collecting code stats (typescript errors & more)" -ERROR_COUNT_LIMIT=61 +ERROR_COUNT_LIMIT=50 ERROR_COUNT="$(./node_modules/.bin/tsc --project tsconfig.json --noEmit --strict true | grep -oP 'Found \K(\d+)')" if [ "$ERROR_COUNT" -gt $ERROR_COUNT_LIMIT ]; then