Chore: fix some more types (#72726)

fix some more types
This commit is contained in:
Ashley Harrison 2023-08-14 16:04:04 +01:00 committed by GitHub
parent 7c098c59fd
commit 963fffeef1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 98 additions and 145 deletions

View File

@ -2236,9 +2236,6 @@ exports[`better eslint`] = {
"public/app/features/dashboard/services/PublicDashboardDataSource.ts:5381": [ "public/app/features/dashboard/services/PublicDashboardDataSource.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"] [0, 0, 0, "Do not use any type assertions.", "0"]
], ],
"public/app/features/dashboard/services/TimeSrv.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
],
"public/app/features/dashboard/state/DashboardMigrator.test.ts:5381": [ "public/app/features/dashboard/state/DashboardMigrator.test.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"], [0, 0, 0, "Unexpected any. Specify a different type.", "1"],
@ -2455,8 +2452,7 @@ exports[`better eslint`] = {
], ],
"public/app/features/datasources/state/actions.ts:5381": [ "public/app/features/datasources/state/actions.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "0"],
[0, 0, 0, "Do not use any type assertions.", "1"], [0, 0, 0, "Do not use any type assertions.", "1"]
[0, 0, 0, "Do not use any type assertions.", "2"]
], ],
"public/app/features/datasources/state/navModel.ts:5381": [ "public/app/features/datasources/state/navModel.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "0"],
@ -2474,14 +2470,11 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "0"] [0, 0, 0, "Do not use any type assertions.", "0"]
], ],
"public/app/features/dimensions/editors/ResourceDimensionEditor.tsx:5381": [ "public/app/features/dimensions/editors/ResourceDimensionEditor.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "0"]
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
], ],
"public/app/features/dimensions/editors/TextDimensionEditor.tsx:5381": [ "public/app/features/dimensions/editors/TextDimensionEditor.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"], [0, 0, 0, "Do not use any type assertions.", "1"]
[0, 0, 0, "Do not use any type assertions.", "2"],
[0, 0, 0, "Unexpected any. Specify a different type.", "3"]
], ],
"public/app/features/dimensions/editors/ThresholdsEditor/ThresholdsEditor.tsx:5381": [ "public/app/features/dimensions/editors/ThresholdsEditor/ThresholdsEditor.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"] [0, 0, 0, "Do not use any type assertions.", "0"]
@ -2518,12 +2511,6 @@ exports[`better eslint`] = {
[0, 0, 0, "Unexpected any. Specify a different type.", "4"], [0, 0, 0, "Unexpected any. Specify a different type.", "4"],
[0, 0, 0, "Do not use any type assertions.", "5"] [0, 0, 0, "Do not use any type assertions.", "5"]
], ],
"public/app/features/explore/TraceView/components/TraceTimelineViewer/ListView/index.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
],
"public/app/features/explore/TraceView/components/common/BreakableText.tsx:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
],
"public/app/features/explore/TraceView/components/demo/trace-generators.ts:5381": [ "public/app/features/explore/TraceView/components/demo/trace-generators.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"] [0, 0, 0, "Do not use any type assertions.", "0"]
], ],
@ -2541,11 +2528,10 @@ exports[`better eslint`] = {
[0, 0, 0, "Unexpected any. Specify a different type.", "6"], [0, 0, 0, "Unexpected any. Specify a different type.", "6"],
[0, 0, 0, "Unexpected any. Specify a different type.", "7"], [0, 0, 0, "Unexpected any. Specify a different type.", "7"],
[0, 0, 0, "Unexpected any. Specify a different type.", "8"], [0, 0, 0, "Unexpected any. Specify a different type.", "8"],
[0, 0, 0, "Unexpected any. Specify a different type.", "9"], [0, 0, 0, "Do not use any type assertions.", "9"],
[0, 0, 0, "Do not use any type assertions.", "10"], [0, 0, 0, "Unexpected any. Specify a different type.", "10"],
[0, 0, 0, "Unexpected any. Specify a different type.", "11"], [0, 0, 0, "Do not use any type assertions.", "11"],
[0, 0, 0, "Do not use any type assertions.", "12"], [0, 0, 0, "Unexpected any. Specify a different type.", "12"]
[0, 0, 0, "Unexpected any. Specify a different type.", "13"]
], ],
"public/app/features/explore/TraceView/components/model/transform-trace-data.tsx:5381": [ "public/app/features/explore/TraceView/components/model/transform-trace-data.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"] [0, 0, 0, "Do not use any type assertions.", "0"]
@ -2583,9 +2569,6 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "1"], [0, 0, 0, "Do not use any type assertions.", "1"],
[0, 0, 0, "Do not use any type assertions.", "2"] [0, 0, 0, "Do not use any type assertions.", "2"]
], ],
"public/app/features/expressions/components/Condition.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
],
"public/app/features/expressions/guards.ts:5381": [ "public/app/features/expressions/guards.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"] [0, 0, 0, "Do not use any type assertions.", "0"]
], ],
@ -2600,9 +2583,7 @@ exports[`better eslint`] = {
], ],
"public/app/features/geo/gazetteer/gazetteer.ts:5381": [ "public/app/features/geo/gazetteer/gazetteer.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "0"],
[0, 0, 0, "Do not use any type assertions.", "1"], [0, 0, 0, "Do not use any type assertions.", "1"]
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
[0, 0, 0, "Do not use any type assertions.", "3"]
], ],
"public/app/features/geo/gazetteer/worldmap.test.ts:5381": [ "public/app/features/geo/gazetteer/worldmap.test.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"] [0, 0, 0, "Unexpected any. Specify a different type.", "0"]
@ -2613,10 +2594,7 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "2"] [0, 0, 0, "Do not use any type assertions.", "2"]
], ],
"public/app/features/inspector/InspectDataOptions.tsx:5381": [ "public/app/features/inspector/InspectDataOptions.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "0"]
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
[0, 0, 0, "Do not use any type assertions.", "2"],
[0, 0, 0, "Do not use any type assertions.", "3"]
], ],
"public/app/features/inspector/InspectDataTab.tsx:5381": [ "public/app/features/inspector/InspectDataTab.tsx:5381": [
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"] [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
@ -2625,8 +2603,7 @@ exports[`better eslint`] = {
[0, 0, 0, "Unexpected any. Specify a different type.", "0"] [0, 0, 0, "Unexpected any. Specify a different type.", "0"]
], ],
"public/app/features/inspector/InspectJSONTab.tsx:5381": [ "public/app/features/inspector/InspectJSONTab.tsx:5381": [
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"], [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
], ],
"public/app/features/inspector/InspectStatsTab.tsx:5381": [ "public/app/features/inspector/InspectStatsTab.tsx:5381": [
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"] [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"]
@ -2635,9 +2612,8 @@ exports[`better eslint`] = {
[0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"], [0, 0, 0, "Unexpected any. Specify a different type.", "1"],
[0, 0, 0, "Unexpected any. Specify a different type.", "2"], [0, 0, 0, "Unexpected any. Specify a different type.", "2"],
[0, 0, 0, "Unexpected any. Specify a different type.", "3"], [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "3"],
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "4"], [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "4"]
[0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "5"]
], ],
"public/app/features/invites/state/selectors.ts:5381": [ "public/app/features/invites/state/selectors.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"] [0, 0, 0, "Unexpected any. Specify a different type.", "0"]
@ -2646,8 +2622,7 @@ exports[`better eslint`] = {
[0, 0, 0, "Unexpected any. Specify a different type.", "0"] [0, 0, 0, "Unexpected any. Specify a different type.", "0"]
], ],
"public/app/features/library-panels/utils.ts:5381": [ "public/app/features/library-panels/utils.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "0"]
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
], ],
"public/app/features/live/centrifuge/LiveDataStream.test.ts:5381": [ "public/app/features/live/centrifuge/LiveDataStream.test.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "0"],
@ -2659,29 +2634,17 @@ exports[`better eslint`] = {
], ],
"public/app/features/live/centrifuge/LiveDataStream.ts:5381": [ "public/app/features/live/centrifuge/LiveDataStream.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Do not use any type assertions.", "1"], [0, 0, 0, "Do not use any type assertions.", "1"]
[0, 0, 0, "Unexpected any. Specify a different type.", "2"],
[0, 0, 0, "Do not use any type assertions.", "3"]
], ],
"public/app/features/live/centrifuge/channel.ts:5381": [ "public/app/features/live/centrifuge/channel.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "0"]
[0, 0, 0, "Do not use any type assertions.", "1"],
[0, 0, 0, "Do not use any type assertions.", "2"],
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
[0, 0, 0, "Do not use any type assertions.", "4"]
],
"public/app/features/live/centrifuge/service.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
[0, 0, 0, "Unexpected any. Specify a different type.", "2"]
], ],
"public/app/features/live/centrifuge/serviceWorkerProxy.ts:5381": [ "public/app/features/live/centrifuge/serviceWorkerProxy.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Do not use any type assertions.", "1"] [0, 0, 0, "Do not use any type assertions.", "1"]
], ],
"public/app/features/live/centrifuge/transferHandlers.ts:5381": [ "public/app/features/live/centrifuge/transferHandlers.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "0"]
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
], ],
"public/app/features/live/data/amendTimeSeries.ts:5381": [ "public/app/features/live/data/amendTimeSeries.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "0"],
@ -2694,19 +2657,10 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "0"] [0, 0, 0, "Do not use any type assertions.", "0"]
], ],
"public/app/features/logs/utils.ts:5381": [ "public/app/features/logs/utils.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "0"]
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
[0, 0, 0, "Do not use any type assertions.", "2"],
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
[0, 0, 0, "Do not use any type assertions.", "4"]
], ],
"public/app/features/manage-dashboards/components/ImportDashboardForm.tsx:5381": [ "public/app/features/manage-dashboards/components/ImportDashboardForm.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "0"]
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
[0, 0, 0, "Do not use any type assertions.", "2"],
[0, 0, 0, "Unexpected any. Specify a different type.", "3"],
[0, 0, 0, "Do not use any type assertions.", "4"],
[0, 0, 0, "Unexpected any. Specify a different type.", "5"]
], ],
"public/app/features/manage-dashboards/components/ImportDashboardLibraryPanelsList.tsx:5381": [ "public/app/features/manage-dashboards/components/ImportDashboardLibraryPanelsList.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"] [0, 0, 0, "Do not use any type assertions.", "0"]

View File

@ -63,7 +63,7 @@ const reducerTypes = [
{ text: 'percent_diff()', value: 'percent_diff' }, { text: 'percent_diff()', value: 'percent_diff' },
{ text: 'percent_diff_abs()', value: 'percent_diff_abs' }, { text: 'percent_diff_abs()', value: 'percent_diff_abs' },
{ text: 'count_non_null()', value: 'count_non_null' }, { text: 'count_non_null()', value: 'count_non_null' },
]; ] as const;
const noDataModes = [ const noDataModes = [
{ text: 'Alerting', value: 'alerting' }, { text: 'Alerting', value: 'alerting' },

View File

@ -238,7 +238,7 @@ export class TimeSrv {
if (interval === AutoRefreshInterval) { if (interval === AutoRefreshInterval) {
intervalMs = this.getAutoRefreshInteval().intervalMs; intervalMs = this.getAutoRefreshInteval().intervalMs;
} else { } else {
refresh = this.contextSrv.getValidInterval(interval as string); refresh = this.contextSrv.getValidInterval(interval);
intervalMs = rangeUtil.intervalToMs(refresh); intervalMs = rangeUtil.intervalToMs(refresh);
} }

View File

@ -210,7 +210,7 @@ export function loadDataSource(uid: string): ThunkResult<Promise<DataSourceSetti
export function loadDataSourceMeta(dataSource: DataSourceSettings): ThunkResult<void> { export function loadDataSourceMeta(dataSource: DataSourceSettings): ThunkResult<void> {
return async (dispatch) => { return async (dispatch) => {
const pluginInfo = (await getPluginSettings(dataSource.type)) as DataSourcePluginMeta; const pluginInfo: DataSourcePluginMeta = await getPluginSettings(dataSource.type);
const plugin = await importDataSourcePlugin(pluginInfo); const plugin = await importDataSourcePlugin(pluginInfo);
const isBackend = plugin.DataSourceClass.prototype instanceof DataSourceWithBackend; const isBackend = plugin.DataSourceClass.prototype instanceof DataSourceWithBackend;
const meta = { const meta = {

View File

@ -16,9 +16,9 @@ const resourceOptions = [
// { label: 'Mapping', value: ResourceDimensionMode.Mapping, description: 'Map the results of a value to an svg' }, // { label: 'Mapping', value: ResourceDimensionMode.Mapping, description: 'Map the results of a value to an svg' },
]; ];
const dummyFieldSettings: StandardEditorsRegistryItem<string, FieldNamePickerConfigSettings> = { const dummyFieldSettings = {
settings: {}, settings: {},
} as any; } as StandardEditorsRegistryItem<string, FieldNamePickerConfigSettings>;
export const ResourceDimensionEditor = ( export const ResourceDimensionEditor = (
props: StandardEditorProps<ResourceDimensionConfig, ResourceDimensionOptions, unknown> props: StandardEditorProps<ResourceDimensionConfig, ResourceDimensionOptions, unknown>

View File

@ -19,13 +19,13 @@ const textOptions = [
// { label: 'Template', value: TextDimensionMode.Template, description: 'use template text' }, // { label: 'Template', value: TextDimensionMode.Template, description: 'use template text' },
]; ];
const dummyFieldSettings: StandardEditorsRegistryItem<string, FieldNamePickerConfigSettings> = { const dummyFieldSettings = {
settings: {}, settings: {},
} as any; } as StandardEditorsRegistryItem<string, FieldNamePickerConfigSettings>;
const dummyStringSettings: StandardEditorsRegistryItem<string, StringFieldConfigSettings> = { const dummyStringSettings = {
settings: {}, settings: {},
} as any; } as StandardEditorsRegistryItem<string, StringFieldConfigSettings>;
type Props = StandardEditorProps<TextDimensionConfig, TextDimensionOptions>; type Props = StandardEditorProps<TextDimensionConfig, TextDimensionOptions>;

View File

@ -378,28 +378,30 @@ export default class ListView extends React.Component<TListViewProps> {
const nodes = this._itemHolderElm.childNodes; const nodes = this._itemHolderElm.childNodes;
const max = nodes.length; const max = nodes.length;
for (let i = 0; i < max; i++) { for (let i = 0; i < max; i++) {
const node = nodes[i] as HTMLElement; const node = nodes[i];
// use `.getAttribute(...)` instead of `.dataset` for jest / JSDOM if (node instanceof HTMLElement) {
const itemKey = node.getAttribute('data-item-key'); // use `.getAttribute(...)` instead of `.dataset` for jest / JSDOM
if (!itemKey) { const itemKey = node.getAttribute('data-item-key');
// eslint-disable-next-line no-console if (!itemKey) {
console.warn('itemKey not found'); // eslint-disable-next-line no-console
continue; console.warn('itemKey not found');
} continue;
// measure the first child, if it's available, otherwise the node itself }
// (likely not transferable to other contexts, and instead is specific to // measure the first child, if it's available, otherwise the node itself
// how we have the items rendered) // (likely not transferable to other contexts, and instead is specific to
const measureSrc: Element = node.firstElementChild || node; // how we have the items rendered)
const observed = measureSrc.clientHeight; const measureSrc: Element = node.firstElementChild || node;
const known = this._knownHeights.get(itemKey); const observed = measureSrc.clientHeight;
if (observed !== known) { const known = this._knownHeights.get(itemKey);
this._knownHeights.set(itemKey, observed); if (observed !== known) {
if (!isDirty) { this._knownHeights.set(itemKey, observed);
isDirty = true; if (!isDirty) {
// eslint-disable-next-line no-multi-assign isDirty = true;
lowDirtyKey = highDirtyKey = itemKey; // eslint-disable-next-line no-multi-assign
} else { lowDirtyKey = highDirtyKey = itemKey;
highDirtyKey = itemKey; } else {
highDirtyKey = itemKey;
}
} }
} }
} }

View File

@ -35,11 +35,7 @@ type Props = {
wordRegexp?: RegExp; wordRegexp?: RegExp;
}; };
// TODO typescript doesn't understand text or null as react nodes export default function BreakableText(props: Props): React.ReactElement | null {
// https://github.com/Microsoft/TypeScript/issues/21699
export default function BreakableText(
props: Props
): any /* React.ReactNode /* React.ReactElement | React.ReactElement[] \*\/ */ {
const { className, text, wordRegexp = WORD_RX } = props; const { className, text, wordRegexp = WORD_RX } = props;
const styles = useStyles2(getStyles); const styles = useStyles2(getStyles);
if (!text) { if (!text) {
@ -57,7 +53,7 @@ export default function BreakableText(
); );
match = wordRegexp.exec(text); match = wordRegexp.exec(text);
} }
return spans; return <>{spans}</>;
} }
BreakableText.defaultProps = { BreakableText.defaultProps = {

View File

@ -73,7 +73,7 @@ export function processTemplate(template: unknown, encodeFn: (unencoded: any) =>
}; };
} }
export function createTestFunction(entry?: any) { export function createTestFunction(entry?: unknown) {
if (typeof entry === 'string') { if (typeof entry === 'string') {
return (arg: unknown) => arg === entry; return (arg: unknown) => arg === entry;
} }

View File

@ -16,7 +16,10 @@ interface Props {
refIds: Array<SelectableValue<string>>; refIds: Array<SelectableValue<string>>;
} }
const reducerFunctions = alertDef.reducerTypes.map((rt) => ({ label: rt.text, value: rt.value })); const reducerFunctions = alertDef.reducerTypes.map<{
label: string;
value: ReducerType;
}>((rt) => ({ label: rt.text, value: rt.value }));
const evalOperators = alertDef.evalOperators.map((eo) => ({ label: eo.text, value: eo.value })); const evalOperators = alertDef.evalOperators.map((eo) => ({ label: eo.text, value: eo.value }));
const evalFunctions = alertDef.evalFunctions.map((ef) => ({ label: ef.text, value: ef.value })); const evalFunctions = alertDef.evalFunctions.map((ef) => ({ label: ef.text, value: ef.value }));
@ -30,10 +33,10 @@ export const Condition = ({ condition, index, onChange, onRemoveCondition, refId
}); });
}; };
const onReducerFunctionChange = (conditionFunction: SelectableValue<string>) => { const onReducerFunctionChange = (conditionFunction: SelectableValue<ReducerType>) => {
onChange({ onChange({
...condition, ...condition,
reducer: { type: conditionFunction.value! as ReducerType, params: [] }, reducer: { type: conditionFunction.value!, params: [] },
}); });
}; };
@ -83,7 +86,7 @@ export const Condition = ({ condition, index, onChange, onRemoveCondition, refId
value={evalOperators.find((ea) => ea.value === condition.operator!.type)} value={evalOperators.find((ea) => ea.value === condition.operator!.type)}
/> />
)} )}
<Select <Select<ReducerType>
options={reducerFunctions} options={reducerFunctions}
onChange={onReducerFunctionChange} onChange={onReducerFunctionChange}
width={20} width={20}

View File

@ -31,7 +31,7 @@ export function loadGazetteer(path: string, data: any): Gazetteer {
let frame: DataFrame | undefined = undefined; let frame: DataFrame | undefined = undefined;
if (Array.isArray(data)) { if (Array.isArray(data)) {
const first = data[0] as any; const first = data[0];
// Check for legacy worldmap syntax // Check for legacy worldmap syntax
if (first.latitude && first.longitude && (first.key || first.keys)) { if (first.latitude && first.longitude && (first.key || first.keys)) {
return loadWorldmapPoints(path, data); return loadWorldmapPoints(path, data);

View File

@ -40,8 +40,7 @@ export const InspectDataOptions = ({
const styles = useStyles2(getPanelInspectorStyles2); const styles = useStyles2(getPanelInspectorStyles2);
const panelTransformations = panel?.getTransformations(); const panelTransformations = panel?.getTransformations();
const showPanelTransformationsOption = const showPanelTransformationsOption = Boolean(panelTransformations?.length);
Boolean(panelTransformations?.length) && (transformId as any) !== 'join by time';
const showFieldConfigsOption = panel && !panel.plugin?.fieldConfigRegistry.isEmpty(); const showFieldConfigsOption = panel && !panel.plugin?.fieldConfigRegistry.isEmpty();
let dataSelect = dataFrames; let dataSelect = dataFrames;
@ -49,11 +48,11 @@ export const InspectDataOptions = ({
dataSelect = data!; dataSelect = data!;
} }
const choices = dataSelect.map((frame, index) => { const choices = dataSelect.map<SelectableValue<number>>((frame, index) => {
return { return {
value: index, value: index,
label: `${getFrameDisplayName(frame)} (${index})`, label: `${getFrameDisplayName(frame)} (${index})`,
} as SelectableValue<number>; };
}); });
const selectableOptions = [...transformationOptions, ...choices]; const selectableOptions = [...transformationOptions, ...choices];

View File

@ -188,7 +188,7 @@ async function getJSONObject(show: ShowContent, panel?: PanelModel, data?: Panel
return { note: t('dashboard.inspect-json.unknown', 'Unknown Object: {{show}}', { show }) }; return { note: t('dashboard.inspect-json.unknown', 'Unknown Object: {{show}}', { show }) };
} }
function getPrettyJSON(obj: any): string { function getPrettyJSON(obj: unknown): string {
let r = ''; let r = '';
try { try {
r = JSON.stringify(obj, getCircularReplacer(), 2); r = JSON.stringify(obj, getCircularReplacer(), 2);

View File

@ -208,14 +208,6 @@ export class QueryInspector extends PureComponent<Props, State> {
return 1; return 1;
}; };
setMockedResponse = (evt: any) => {
const mockedResponse = evt.target.value;
this.setState((prevState) => ({
...prevState,
mockedResponse,
}));
};
renderExecutedQueries(executedQueries: ExecutedQueryInfo[]) { renderExecutedQueries(executedQueries: ExecutedQueryInfo[]) {
if (!executedQueries.length) { if (!executedQueries.length) {
return null; return null;

View File

@ -20,7 +20,7 @@ export async function saveAndRefreshLibraryPanel(panel: PanelModel, folderUid: s
return savedPanel; return savedPanel;
} }
function toPanelSaveModel(panel: PanelModel): any { function toPanelSaveModel(panel: PanelModel) {
let { scopedVars, ...panelSaveModel } = panel.getSaveModel(); let { scopedVars, ...panelSaveModel } = panel.getSaveModel();
panelSaveModel = { panelSaveModel = {
libraryPanel: { libraryPanel: {

View File

@ -103,7 +103,7 @@ type InternalStreamMessage<T = InternalStreamMessageType> = T extends InternalSt
const reduceNewValuesSameSchemaMessages = ( const reduceNewValuesSameSchemaMessages = (
packets: Array<InternalStreamMessage<InternalStreamMessageType.NewValuesSameSchema>> packets: Array<InternalStreamMessage<InternalStreamMessageType.NewValuesSameSchema>>
) => ({ ) => ({
values: packets.reduce((acc, { values }) => { values: packets.reduce<unknown[][]>((acc, { values }) => {
for (let i = 0; i < values.length; i++) { for (let i = 0; i < values.length; i++) {
if (!acc[i]) { if (!acc[i]) {
acc[i] = []; acc[i] = [];
@ -113,7 +113,7 @@ const reduceNewValuesSameSchemaMessages = (
} }
} }
return acc; return acc;
}, [] as unknown[][]), }, []),
type: InternalStreamMessageType.NewValuesSameSchema, type: InternalStreamMessageType.NewValuesSameSchema,
}); });
@ -149,7 +149,7 @@ export class LiveDataStream<T = unknown> {
} }
}; };
private onError = (err: any) => { private onError = (err: unknown) => {
console.log('LiveQuery [error]', { err }, this.deps.channelId); console.log('LiveQuery [error]', { err }, this.deps.channelId);
this.stream.next({ this.stream.next({
type: InternalStreamMessageType.Error, type: InternalStreamMessageType.Error,

View File

@ -64,7 +64,7 @@ export class CentrifugeLiveChannel<T = any> {
try { try {
if (ctx.data) { if (ctx.data) {
if (ctx.data.schema) { if (ctx.data.schema) {
this.lastMessageWithSchema = ctx.data as DataFrameJSON; this.lastMessageWithSchema = ctx.data;
} }
this.stream.next({ this.stream.next({
@ -97,7 +97,7 @@ export class CentrifugeLiveChannel<T = any> {
delete this.currentStatus.error; delete this.currentStatus.error;
if (ctx.data?.schema) { if (ctx.data?.schema) {
this.lastMessageWithSchema = ctx.data as DataFrameJSON; this.lastMessageWithSchema = ctx.data;
} }
this.sendStatus(ctx.data); this.sendStatus(ctx.data);
}) })
@ -119,7 +119,7 @@ export class CentrifugeLiveChannel<T = any> {
}); });
} }
private sendStatus(message?: any) { private sendStatus(message?: unknown) {
const copy = { ...this.currentStatus }; const copy = { ...this.currentStatus };
if (message) { if (message) {
copy.message = message; copy.message = message;
@ -138,7 +138,7 @@ export class CentrifugeLiveChannel<T = any> {
* Get the stream of events and * Get the stream of events and
*/ */
getStream() { getStream() {
return new Observable((subscriber) => { return new Observable<LiveChannelEvent<T>>((subscriber) => {
const initialMessage = { ...this.currentStatus }; const initialMessage = { ...this.currentStatus };
if (this.lastMessageWithSchema?.schema) { if (this.lastMessageWithSchema?.schema) {
// send just schema instead of schema+data to avoid having data gaps // send just schema instead of schema+data to avoid having data gaps
@ -157,7 +157,7 @@ export class CentrifugeLiveChannel<T = any> {
setTimeout(this.disconnectIfNoListeners, 250); setTimeout(this.disconnectIfNoListeners, 250);
} }
}; };
}) as Observable<LiveChannelEvent<T>>; });
} }
/** /**

View File

@ -1,4 +1,11 @@
import { Centrifuge, State } from 'centrifuge'; import {
Centrifuge,
ConnectedContext,
ConnectingContext,
DisconnectedContext,
ServerPublicationContext,
State,
} from 'centrifuge';
import { BehaviorSubject, Observable, share, startWith } from 'rxjs'; import { BehaviorSubject, Observable, share, startWith } from 'rxjs';
import { import {
@ -104,15 +111,15 @@ export class CentrifugeService implements CentrifugeSrv {
// Internal functions // Internal functions
//---------------------------------------------------------- //----------------------------------------------------------
private onConnect = (context: any) => { private onConnect = (context: ConnectedContext) => {
this.connectionState.next(true); this.connectionState.next(true);
}; };
private onDisconnect = (context: any) => { private onDisconnect = (context: ConnectingContext | DisconnectedContext) => {
this.connectionState.next(false); this.connectionState.next(false);
}; };
private onServerSideMessage = (context: any) => { private onServerSideMessage = (context: ServerPublicationContext) => {
console.log('Publication from server-side channel', context); console.log('Publication from server-side channel', context);
}; };

View File

@ -4,8 +4,8 @@ import { Subscriber } from 'rxjs';
// Observers, ie. functions passed to `observable.subscribe(...)`, are converted to a subclass of `Subscriber` before they are sent to the source Observable. // Observers, ie. functions passed to `observable.subscribe(...)`, are converted to a subclass of `Subscriber` before they are sent to the source Observable.
// The conversion happens internally in the RxJS library - this transfer handler is catches them and wraps them with a proxy // The conversion happens internally in the RxJS library - this transfer handler is catches them and wraps them with a proxy
const subscriberTransferHandler: any = { const subscriberTransferHandler: any = {
canHandle(value: any): boolean { canHandle(value: unknown): boolean {
return value && value instanceof Subscriber; return Boolean(value && value instanceof Subscriber);
}, },
serialize(value: Function): [MessagePort, Transferable[]] { serialize(value: Function): [MessagePort, Transferable[]] {

View File

@ -30,13 +30,13 @@ export function getLogLevel(line: string): LogLevel {
let level = LogLevel.unknown; let level = LogLevel.unknown;
let currentIndex: number | undefined = undefined; let currentIndex: number | undefined = undefined;
for (const key of Object.keys(LogLevel)) { for (const [key, value] of Object.entries(LogLevel)) {
const regexp = new RegExp(`\\b${key}\\b`, 'i'); const regexp = new RegExp(`\\b${key}\\b`, 'i');
const result = regexp.exec(line); const result = regexp.exec(line);
if (result) { if (result) {
if (currentIndex === undefined || result.index < currentIndex) { if (currentIndex === undefined || result.index < currentIndex) {
level = (LogLevel as any)[key]; level = value;
currentIndex = result.index; currentIndex = result.index;
} }
} }
@ -45,7 +45,7 @@ export function getLogLevel(line: string): LogLevel {
} }
export function getLogLevelFromKey(key: string | number): LogLevel { export function getLogLevelFromKey(key: string | number): LogLevel {
const level = (LogLevel as any)[key.toString().toLowerCase()]; const level = LogLevel[key.toString().toLowerCase() as keyof typeof LogLevel];
if (level) { if (level) {
return level; return level;
} }
@ -59,7 +59,7 @@ export function calculateLogsLabelStats(rows: LogRowModel[], label: string): Log
const rowCount = rowsWithLabel.length; const rowCount = rowsWithLabel.length;
// Get label value counts for eligible rows // Get label value counts for eligible rows
const countsByValue = countBy(rowsWithLabel, (row) => (row as LogRowModel).labels[label]); const countsByValue = countBy(rowsWithLabel, (row) => row.labels[label]);
return getSortedCounts(countsByValue, rowCount); return getSortedCounts(countsByValue, rowCount);
} }

View File

@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react'; import React, { BaseSyntheticEvent, useEffect, useState } from 'react';
import { selectors } from '@grafana/e2e-selectors'; import { selectors } from '@grafana/e2e-selectors';
import { ExpressionDatasourceRef } from '@grafana/runtime/src/utils/DataSourceWithBackend'; import { ExpressionDatasourceRef } from '@grafana/runtime/src/utils/DataSourceWithBackend';
@ -60,7 +60,7 @@ export const ImportDashboardForm = ({
*/ */
useEffect(() => { useEffect(() => {
if (isSubmitted && (errors.title || errors.uid)) { if (isSubmitted && (errors.title || errors.uid)) {
onSubmit(getValues(), {} as any); onSubmit(getValues(), {} as BaseSyntheticEvent);
} }
}, [errors, getValues, isSubmitted, onSubmit]); }, [errors, getValues, isSubmitted, onSubmit]);
const newLibraryPanels = inputs?.libraryPanels?.filter((i) => i.state === LibraryPanelInputState.New) ?? []; const newLibraryPanels = inputs?.libraryPanels?.filter((i) => i.state === LibraryPanelInputState.New) ?? [];
@ -113,7 +113,7 @@ export const ImportDashboardForm = ({
if (input.pluginId === ExpressionDatasourceRef.type) { if (input.pluginId === ExpressionDatasourceRef.type) {
return null; return null;
} }
const dataSourceOption = `dataSources[${index}]`; const dataSourceOption = `dataSources.${index}` as const;
const current = watchDataSources ?? []; const current = watchDataSources ?? [];
return ( return (
<Field <Field
@ -124,7 +124,7 @@ export const ImportDashboardForm = ({
error={errors.dataSources && errors.dataSources[index] && 'A data source is required'} error={errors.dataSources && errors.dataSources[index] && 'A data source is required'}
> >
<InputControl <InputControl
name={dataSourceOption as any} name={dataSourceOption}
render={({ field: { ref, ...field } }) => ( render={({ field: { ref, ...field } }) => (
<DataSourcePicker <DataSourcePicker
{...field} {...field}
@ -142,7 +142,7 @@ export const ImportDashboardForm = ({
})} })}
{inputs.constants && {inputs.constants &&
inputs.constants.map((input: DashboardInput, index) => { inputs.constants.map((input: DashboardInput, index) => {
const constantIndex = `constants[${index}]`; const constantIndex = `constants.${index}` as const;
return ( return (
<Field <Field
label={input.label} label={input.label}
@ -150,7 +150,7 @@ export const ImportDashboardForm = ({
invalid={errors.constants && !!errors.constants[index]} invalid={errors.constants && !!errors.constants[index]}
key={constantIndex} key={constantIndex}
> >
<Input {...register(constantIndex as any, { required: true })} defaultValue={input.value} /> <Input {...register(constantIndex, { required: true })} defaultValue={input.value} />
</Field> </Field>
); );
})} })}