Chore: Remove frontend-platform as owners of public/app/core (#108934)

* remove frontend-platform as owners of public/app/core

* assign some things...

* more delegating

* assign more CODEOWNERS

* assign more CODEOWNERS

* assign more CODEOWNERS

* assign some more CODEOWNERS

* delete some unused files

* remove LocalStorageValueProvider and assign more CODEOWNERS

* remove WithFeatureToggle and assign more CODEOWNERS

* remove ticks as it's not used, assign more CODEOWNERS

* restore ticks, more CODEOWNERS

* finish assigning CODEOWNERS

* fix squad name
This commit is contained in:
Ashley Harrison
2025-08-05 10:09:21 +01:00
committed by GitHub
parent 608b94ac10
commit db2ba4f7e2
12 changed files with 141 additions and 141 deletions
+4 -8
View File
@@ -901,9 +901,6 @@ exports[`better eslint`] = {
[0, 0, 0, "Unexpected any. Specify a different type.", "4"],
[0, 0, 0, "Unexpected any. Specify a different type.", "5"]
],
"public/app/core/components/LocalStorageValueProvider/index.tsx:5381": [
[0, 0, 0, "Do not re-export imported variable (\`./LocalStorageValueProvider\`)", "0"]
],
"public/app/core/components/Login/LoginForm.tsx:5381": [
[0, 0, 0, "Add noMargin prop to Field components to remove built-in margins. Use layout components like Stack or Grid with the gap prop instead for consistent spacing.", "0"],
[0, 0, 0, "Add noMargin prop to Field components to remove built-in margins. Use layout components like Stack or Grid with the gap prop instead for consistent spacing.", "1"]
@@ -978,11 +975,10 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not re-export imported variable (\`JsonExplorer\`)", "0"],
[0, 0, 0, "Do not re-export imported variable (\`TimeSeries\`)", "1"],
[0, 0, 0, "Do not re-export imported variable (\`appEvents\`)", "2"],
[0, 0, 0, "Do not re-export imported variable (\`assignModelProperties\`)", "3"],
[0, 0, 0, "Do not re-export imported variable (\`colors\`)", "4"],
[0, 0, 0, "Do not re-export imported variable (\`contextSrv\`)", "5"],
[0, 0, 0, "Do not re-export imported variable (\`profiler\`)", "6"],
[0, 0, 0, "Do not re-export imported variable (\`updateLegendValues\`)", "7"]
[0, 0, 0, "Do not re-export imported variable (\`colors\`)", "3"],
[0, 0, 0, "Do not re-export imported variable (\`contextSrv\`)", "4"],
[0, 0, 0, "Do not re-export imported variable (\`profiler\`)", "5"],
[0, 0, 0, "Do not re-export imported variable (\`updateLegendValues\`)", "6"]
],
"public/app/core/navigation/types.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
+133 -12
View File
@@ -679,23 +679,143 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
# public folder
/public/app/api/ @grafana/grafana-frontend-platform
/public/app/core/ @grafana/grafana-frontend-platform
/public/app/core/components/TimePicker/ @grafana/grafana-frontend-platform
/public/app/core/components/Layers/ @grafana/dataviz-squad
/public/app/core/components/GraphNG/ @grafana/dataviz-squad
/public/app/core/components/TimeSeries/ @grafana/dataviz-squad
/public/app/core/components/TimelineChart/ @grafana/dataviz-squad
/public/app/core/actions/ @grafana/grafana-frontend-platform
/public/app/core/app_events.ts @grafana/grafana-frontend-platform
/public/app/core/components/AccessControl/ @grafana/identity-access-team
/public/app/core/components/Animations/ @grafana/grafana-frontend-platform
/public/app/core/components/AppNotifications/ @grafana/grafana-search-navigate-organise
/public/app/core/components/AppChrome/ @grafana/grafana-search-navigate-organise
/public/app/core/components/Branding/ @grafana/grafana-frontend-platform
/public/app/core/components/Breadcrumbs/ @grafana/grafana-search-navigate-organise
/public/app/core/components/BouncingLoader/ @grafana/grafana-frontend-platform
/public/app/core/components/CardButton.tsx @grafana/dashboards-squad
/public/app/core/components/CloseButton/ @grafana/grafana-frontend-platform
/public/app/core/components/ColorScale/ @grafana/dataviz-squad
/public/app/core/components/DynamicImports/ @grafana/grafana-search-navigate-organise
/public/app/core/components/EmptyListCTA/ @grafana/grafana-frontend-platform
/public/app/core/components/FolderFilter/ @grafana/sharing-squad
/public/app/core/components/Footer/ @grafana/grafana-search-navigate-organise
/public/app/core/components/ForgottenPassword/ @grafana/grafana-search-navigate-organise
/public/app/core/components/Form/ @grafana/grafana-frontend-platform
/public/app/core/components/FormPrompt/ @grafana/grafana-frontend-platform
/public/app/core/components/GraphNG/ @grafana/dataviz-squad
/public/app/core/components/help/ @grafana/grafana-search-navigate-organise
/public/app/core/components/Indent/ @grafana/grafana-search-navigate-organise
/public/app/core/components/InviteUserButton/ @grafana/sharing-squad
/public/app/core/components/Layers/ @grafana/dataviz-squad
/public/app/core/components/Login/ @grafana/grafana-search-navigate-organise
/public/app/core/components/NativeScrollbar.tsx @grafana/grafana-search-navigate-organise
/public/app/core/components/NavLandingPage/ @grafana/grafana-search-navigate-organise
/public/app/core/components/NestedFolderPicker/ @grafana/grafana-search-navigate-organise
/public/app/core/components/OptionsUI/ @grafana/dashboards-squad @grafana/dataviz-squad
/public/app/core/components/Page/ @grafana/grafana-search-navigate-organise
/public/app/core/components/PageActionBar/ @grafana/grafana-search-navigate-organise
/public/app/core/components/PageInfo/ @grafana/grafana-search-navigate-organise
/public/app/core/components/PageLoader/ @grafana/grafana-search-navigate-organise
/public/app/core/components/PageNotFound/ @grafana/grafana-search-navigate-organise
/public/app/core/components/PanelTypeFilter/ @grafana/sharing-squad
/public/app/core/components/PasswordField/ @grafana/grafana-frontend-platform
/public/app/core/components/PluginHelp/ @grafana/plugins-platform-frontend
/public/app/core/components/QueryOperationRow/ @grafana/dashboards-squad
/public/app/core/components/RolePickerDrawer/ @grafana/identity-access-team
/public/app/core/components/Select/ @grafana/grafana-frontend-platform
/public/app/core/components/SharedPreferences/ @grafana/grafana-frontend-platform
/public/app/core/components/Signup/ @grafana/grafana-search-navigate-organise
/public/app/core/components/SplitPaneWrapper/ @grafana/observability-traces-and-profiling
/public/app/core/components/SVG/ @grafana/dataviz-squad
/public/app/core/components/TagFilter/ @grafana/grafana-frontend-platform
/public/app/core/components/Theme/ @grafana/grafana-frontend-platform
/public/app/core/components/ThemeSelector/ @grafana/grafana-frontend-platform
/public/app/core/components/TimelineChart/ @grafana/dataviz-squad
/public/app/core/components/TimePicker/ @grafana/grafana-frontend-platform
/public/app/core/components/TimeSeries/ @grafana/dataviz-squad
/public/app/core/components/Upgrade/ @grafana/grafana-operator-experience-squad
/public/app/core/components/ValidationLabels/ @grafana/grafana-search-navigate-organise
/public/app/core/components/VersionHistory/ @grafana/dashboards-squad
/public/app/core/config.ts @grafana/grafana-frontend-platform
/public/app/core/constants.ts @grafana/grafana-frontend-platform
/public/app/core/context/ @grafana/grafana-frontend-platform
/public/app/core/copy/appNotification.ts @grafana/grafana-search-navigate-organise
/public/app/core/core.ts @grafana/grafana-frontend-platform
/public/app/core/crash/ @grafana/observability-traces-and-profiling
/public/app/core/history/ @grafana/observability-traces-and-profiling
/public/app/core/hooks/useBusEvent.ts @grafana/grafana-frontend-platform
/public/app/core/hooks/useCleanup.ts @grafana/grafana-frontend-platform
/public/app/core/hooks/useMediaQueryMinWidth.ts @grafana/grafana-frontend-platform
/public/app/core/hooks/useNavModel.ts @grafana/grafana-search-navigate-organise
/public/app/core/hooks/useQueryParams.ts @grafana/grafana-frontend-platform
/public/app/core/icons/ @grafana/grafana-frontend-platform
/public/app/core/lifecycle-hooks.ts @grafana/grafana-frontend-platform
/public/app/core/log_events.ts @grafana/dashboards-squad
/public/app/core/monacoEnv.ts @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend
/public/app/core/navigation/ @grafana/grafana-search-navigate-organise
/public/app/core/profiler.ts @grafana/dashboards-squad
/public/app/core/reducers/ @grafana/grafana-frontend-platform
/public/app/core/selectors/ @grafana/grafana-frontend-platform
/public/app/core/services/__mocks__/backend_srv.ts @grafana/grafana-frontend-platform
/public/app/core/services/backend_srv.ts @grafana/grafana-frontend-platform
/public/app/core/services/context_srv.ts @grafana/grafana-frontend-platform
/public/app/core/services/CorrelationsService.ts @grafana/datapro
/public/app/core/services/echo/ @grafana/grafana-frontend-platform
/public/app/core/services/FetchQueue* @grafana/grafana-frontend-platform
/public/app/core/services/impression_srv.ts @grafana/grafana-frontend-platform
/public/app/core/services/KeybindingSet* @grafana/grafana-frontend-platform
/public/app/core/services/keybindingSrv.ts @grafana/grafana-frontend-platform
/public/app/core/services/mocks/subscribeTester.ts @grafana/grafana-frontend-platform
/public/app/core/services/mousetrap/ @grafana/grafana-frontend-platform
/public/app/core/services/NewFrontendAssetsChecker* @grafana/grafana-frontend-platform
/public/app/core/services/PreferencesService.ts @grafana/grafana-frontend-platform
/public/app/core/services/ResponseQueue* @grafana/grafana-frontend-platform
/public/app/core/services/StateManagerBase.ts @grafana/grafana-frontend-platform
/public/app/core/services/theme.ts @grafana/grafana-frontend-platform
/public/app/core/specs/backend_srv.test.ts @grafana/grafana-frontend-platform
/public/app/core/specs/factors.test.ts @grafana/dashboards-squad
/public/app/core/specs/flatten.test.ts @grafana/grafana-frontend-platform
/public/app/core/specs/impression_srv.test.ts @grafana/grafana-frontend-platform
/public/app/core/specs/rangeutil.test.ts @grafana/grafana-frontend-platform
/public/app/core/specs/store.test.ts @grafana/grafana-frontend-platform
/public/app/core/specs/TableModel.test.ts @grafana/partner-datasources
/public/app/core/specs/ticks.test.ts @grafana/plugins-platform-frontend
/public/app/core/specs/time_series.test.ts @grafana/dataviz-squad
/public/app/core/store.ts @grafana/grafana-frontend-platform
/public/app/core/TableModel.ts @grafana/partner-datasources
/public/app/core/time_series2.ts @grafana/dataviz-squad
/public/app/core/trustedTypePolicies.ts @grafana/grafana-frontend-platform
/public/app/core/utils/accessControl.ts @grafana/identity-access-team
/public/app/core/utils/applyStateChanges.ts @grafana/dashboards-squad
/public/app/core/utils/arrayMove.ts @grafana/grafana-frontend-platform
/public/app/core/utils/auth.ts @grafana/identity-access-team
/public/app/core/utils/browser* @grafana/grafana-frontend-platform
/public/app/core/utils/colors.ts @grafana/grafana-frontend-platform
/public/app/core/utils/ConfigProvider.tsx @grafana/grafana-frontend-platform
/public/app/core/utils/CorsSharedWorker.ts @grafana/grafana-frontend-platform
/public/app/core/utils/CorsWorker.ts @grafana/grafana-frontend-platform
/public/app/core/utils/connectWithReduxStore.tsx @grafana/grafana-frontend-platform
/public/app/core/utils/dag* @grafana/grafana-frontend-platform
/public/app/core/utils/deferred.ts @grafana/grafana-frontend-platform
/public/app/core/utils/docsLinks.ts @grafana/grafana-frontend-platform
/public/app/core/utils/errors* @grafana/grafana-frontend-platform
/public/app/core/utils/explore* @grafana/observability-traces-and-profiling
/public/app/core/utils/factors.ts @grafana/dashboards-squad
/public/app/core/utils/fetch* @grafana/grafana-frontend-platform
/public/app/core/utils/flatten.ts @grafana/grafana-frontend-platform
/public/app/core/utils/isShallowEqual.ts @grafana/grafana-frontend-platform
/public/app/core/utils/kbn* @grafana/grafana-frontend-platform
/public/app/core/utils/navBarItem-translations.ts @grafana/grafana-search-navigate-organise
/public/app/core/utils/object* @grafana/grafana-frontend-platform
/public/app/core/utils/query* @grafana/grafana-datasources-core-services
/public/app/core/utils/richHistory* @grafana/observability-traces-and-profiling
/public/app/core/utils/set.ts @grafana/grafana-frontend-platform
/public/app/core/utils/shortLinks* @grafana/sharing-squad
/public/app/core/utils/ticks.ts @grafana/plugins-platform-frontend
/public/app/core/utils/timePicker* @grafana/grafana-frontend-platform
/public/app/core/utils/timeRegions* @grafana/dataviz-squad
/public/app/core/utils/urlToken.ts @grafana/identity-access-team
/public/app/core/utils/version.ts @grafana/partner-datasources
/public/app/dev-utils.ts @grafana/grafana-frontend-platform
/public/app/core/history/ @grafana/observability-traces-and-profiling
/public/app/features/admin/ @grafana/identity-access-team
# Temp owners until Enterprise team takes over
/public/app/features/migrate-to-cloud @grafana/grafana-frontend-platform
/public/app/features/actions/ @grafana/dataviz-squad
/public/app/features/admin/ @grafana/identity-access-team
/public/app/features/auth-config/ @grafana/identity-squad
/public/app/features/annotations/ @grafana/dashboards-squad
/public/app/features/canvas/ @grafana/dataviz-squad
@@ -719,6 +839,7 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform
/public/app/features/live/ @grafana/dashboards-squad
/public/app/features/apiserver/ @grafana/grafana-app-platform-squad
/public/app/features/manage-dashboards/ @grafana/dashboards-squad
/public/app/features/migrate-to-cloud @grafana/grafana-operator-experience-squad
/public/app/features/notifications/ @grafana/grafana-search-navigate-organise
/public/app/features/org/ @grafana/grafana-search-navigate-organise
/public/app/features/panel/ @grafana/dashboards-squad
@@ -1,50 +0,0 @@
import { useEffect, useState } from 'react';
import * as React from 'react';
import store from '../../store';
export interface Props<T> {
storageKey: string;
defaultValue: T;
children: (value: T, onSaveToStore: (value: T) => void, onDeleteFromStore: () => void) => React.ReactNode;
}
export const LocalStorageValueProvider = <T,>(props: Props<T>) => {
const { children, storageKey, defaultValue } = props;
const [state, setState] = useState({ value: store.getObject(props.storageKey, props.defaultValue) });
useEffect(() => {
const onStorageUpdate = (v: StorageEvent) => {
if (v.key === storageKey) {
setState({ value: store.getObject(props.storageKey, props.defaultValue) });
}
};
window.addEventListener('storage', onStorageUpdate);
return () => {
window.removeEventListener('storage', onStorageUpdate);
};
});
const onSaveToStore = (value: T) => {
try {
store.setObject(storageKey, value);
} catch (error) {
console.error(error);
}
setState({ value });
};
const onDeleteFromStore = () => {
try {
store.delete(storageKey);
} catch (error) {
console.log(error);
}
setState({ value: defaultValue });
};
return <>{children(state.value, onSaveToStore, onDeleteFromStore)}</>;
};
@@ -1 +0,0 @@
export { LocalStorageValueProvider } from './LocalStorageValueProvider';
@@ -1,12 +1,10 @@
import { uniqBy } from 'lodash';
import { AppEvents, DateTime, TimeRange, isDateTime, rangeUtil } from '@grafana/data';
import { AppEvents, DateTime, LocalStorageValueProvider, TimeRange, isDateTime, rangeUtil } from '@grafana/data';
import { t } from '@grafana/i18n';
import { TimeRangePickerProps, TimeRangePicker } from '@grafana/ui';
import appEvents from 'app/core/app_events';
import { LocalStorageValueProvider } from '../LocalStorageValueProvider';
const LOCAL_STORAGE_KEY = 'grafana.dashboard.timepicker.history';
const MAX_HISTORY_ITEMS = 4;
@@ -1,13 +0,0 @@
import * as React from 'react';
export interface Props {
featureToggle: boolean;
}
export const WithFeatureToggle = ({ featureToggle, children }: React.PropsWithChildren<Props>) => {
if (featureToggle === true) {
return <>{children}</>;
}
return null;
};
+1 -2
View File
@@ -4,6 +4,5 @@ import appEvents from './app_events';
import { profiler } from './profiler';
import { contextSrv } from './services/context_srv';
import TimeSeries, { updateLegendValues } from './time_series2';
import { assignModelProperties } from './utils/model_utils';
export { profiler, appEvents, colors, assignModelProperties, contextSrv, JsonExplorer, TimeSeries, updateLegendValues };
export { profiler, appEvents, colors, contextSrv, JsonExplorer, TimeSeries, updateLegendValues };
-12
View File
@@ -1,12 +0,0 @@
// eslint-disable-next-line lodash/import-scope
import _ from 'lodash';
/*
Mixins :)
*/
_.mixin({
move: (array, fromIndex, toIndex) => {
array.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);
return array;
},
});
@@ -1,22 +0,0 @@
export const mockSearch = jest.fn(() => {
return Promise.resolve([]);
});
export const mockGetDashboardTags = jest.fn(async () =>
Promise.resolve([
{ term: 'tag1', count: 2 },
{ term: 'tag2', count: 10 },
])
);
export const mockGetSortOptions = jest.fn(() =>
Promise.resolve({ sortOptions: [{ name: 'test', displayName: 'Test' }] })
);
export const SearchSrv = jest.fn().mockImplementation(() => {
return {
search: mockSearch,
getDashboardTags: mockGetDashboardTags,
getSortOptions: mockGetSortOptions,
};
});
-14
View File
@@ -1,14 +0,0 @@
export function assignModelProperties(
target: Record<string, unknown>,
source: Record<string, unknown>,
defaults: Record<string, unknown>,
removeDefaults?: undefined
) {
for (const key in defaults) {
if (!defaults.hasOwnProperty(key)) {
continue;
}
target[key] = source[key] === undefined ? defaults[key] : source[key];
}
}
@@ -1,11 +1,10 @@
import { css } from '@emotion/css';
import { FormEventHandler, KeyboardEventHandler, ReactNode } from 'react';
import { DocsId, GrafanaTheme2, TransformerRegistryItem } from '@grafana/data';
import { DocsId, GrafanaTheme2, LocalStorageValueProvider, TransformerRegistryItem } from '@grafana/data';
import { selectors } from '@grafana/e2e-selectors';
import { Trans, t } from '@grafana/i18n';
import { Card, Container, VerticalGroup, Alert, Input, useStyles2 } from '@grafana/ui';
import { LocalStorageValueProvider } from 'app/core/components/LocalStorageValueProvider';
import { getDocsLink } from 'app/core/utils/docsLinks';
import { PluginStateInfo } from 'app/features/plugins/components/PluginStateInfo';
@@ -1,8 +1,7 @@
import { DataSourceSettings } from '@grafana/data';
import { DataSourceSettings, LocalStorageValueProvider } from '@grafana/data';
import { GrafanaEdition } from '@grafana/data/internal';
import { Trans, t } from '@grafana/i18n';
import { Alert, TextLink } from '@grafana/ui';
import { LocalStorageValueProvider } from 'app/core/components/LocalStorageValueProvider';
import { config } from 'app/core/config';
const LOCAL_STORAGE_KEY = 'datasources.settings.cloudInfoBox.isDismissed';