diff --git a/.changeset/orange-trees-peel.md b/.changeset/orange-trees-peel.md
new file mode 100644
index 0000000000..344dd88cb9
--- /dev/null
+++ b/.changeset/orange-trees-peel.md
@@ -0,0 +1,14 @@
+---
+'@backstage/catalog-model': patch
+'@backstage/core-components': patch
+'@backstage/integration': patch
+'@backstage/plugin-auth-node': patch
+'@backstage/plugin-gcalendar': patch
+'@backstage/plugin-periskop': patch
+'@backstage/plugin-permission-common': patch
+'@backstage/plugin-scaffolder-backend': patch
+'@backstage/plugin-techdocs': patch
+'@backstage/plugin-xcmetrics': patch
+---
+
+Internal refactor of imports to avoid circular dependencies
diff --git a/packages/catalog-model/src/location/helpers.ts b/packages/catalog-model/src/location/helpers.ts
index 8f8acc3b1d..6f9800c5a2 100644
--- a/packages/catalog-model/src/location/helpers.ts
+++ b/packages/catalog-model/src/location/helpers.ts
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-import { ANNOTATION_SOURCE_LOCATION } from '.';
import { Entity, stringifyEntityRef } from '../entity';
-import { ANNOTATION_LOCATION } from './annotation';
+import { ANNOTATION_LOCATION, ANNOTATION_SOURCE_LOCATION } from './annotation';
/**
* Parses a string form location reference.
diff --git a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.test.tsx b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.test.tsx
index c61069f810..2fea7fa5e1 100644
--- a/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.test.tsx
+++ b/packages/core-components/src/components/OverflowTooltip/OverflowTooltip.test.tsx
@@ -16,8 +16,7 @@
import React from 'react';
import { render } from '@testing-library/react';
-
-import { OverflowTooltip } from '.';
+import { OverflowTooltip } from './OverflowTooltip';
describe('', () => {
it('renders without exploding', async () => {
diff --git a/packages/core-components/src/components/Table/Table.stories.tsx b/packages/core-components/src/components/Table/Table.stories.tsx
index b057d0a12c..807d58057d 100644
--- a/packages/core-components/src/components/Table/Table.stories.tsx
+++ b/packages/core-components/src/components/Table/Table.stories.tsx
@@ -17,8 +17,8 @@
import { makeStyles } from '@material-ui/core/styles';
import React from 'react';
import { Link } from '../Link';
-import { SubvalueCell, Table, TableColumn } from '.';
-import { TableFilter } from './Table';
+import { SubvalueCell } from './SubvalueCell';
+import { Table, TableColumn, TableFilter } from './Table';
export default {
title: 'Data Display/Table',
diff --git a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx
index f9348ffa9a..a6bfc79040 100644
--- a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx
+++ b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx
@@ -14,11 +14,11 @@
* limitations under the License.
*/
-import React from 'react';
import { renderInTestApp } from '@backstage/test-utils';
-import { HeaderTabs } from '.';
-import { makeStyles } from '@material-ui/core/styles';
import Badge from '@material-ui/core/Badge';
+import { makeStyles } from '@material-ui/core/styles';
+import React from 'react';
+import { HeaderTabs } from './HeaderTabs';
const mockTabs = [
{ id: 'overview', label: 'Overview' },
diff --git a/packages/core-components/src/layout/Page/Page.stories.tsx b/packages/core-components/src/layout/Page/Page.stories.tsx
index 12ddd51d04..289f0a6c0d 100644
--- a/packages/core-components/src/layout/Page/Page.stories.tsx
+++ b/packages/core-components/src/layout/Page/Page.stories.tsx
@@ -14,22 +14,13 @@
* limitations under the License.
*/
+import { wrapInTestApp } from '@backstage/test-utils';
import Box from '@material-ui/core/Box';
import Chip from '@material-ui/core/Chip';
import Grid from '@material-ui/core/Grid';
import Link from '@material-ui/core/Link';
import Typography from '@material-ui/core/Typography';
import React, { useState } from 'react';
-import { wrapInTestApp } from '@backstage/test-utils';
-import {
- Content,
- ContentHeader,
- Header,
- HeaderLabel,
- HeaderTabs,
- InfoCard,
- Page,
-} from '..';
import {
GaugeCard,
StatusOK,
@@ -38,6 +29,13 @@ import {
TableColumn,
TrendLine,
} from '../../components';
+import { Content } from '../Content';
+import { ContentHeader } from '../ContentHeader';
+import { Header } from '../Header';
+import { HeaderLabel } from '../HeaderLabel';
+import { HeaderTabs } from '../HeaderTabs';
+import { InfoCard } from '../InfoCard';
+import { Page } from '../Page';
export default {
title: 'Plugins/Examples',
diff --git a/packages/core-components/src/layout/Sidebar/Bar.test.tsx b/packages/core-components/src/layout/Sidebar/Bar.test.tsx
index 87e62f15e0..fb92e491f8 100644
--- a/packages/core-components/src/layout/Sidebar/Bar.test.tsx
+++ b/packages/core-components/src/layout/Sidebar/Bar.test.tsx
@@ -22,15 +22,11 @@ import MenuBookIcon from '@material-ui/icons/MenuBook';
import { screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import React from 'react';
-import {
- Sidebar,
- SidebarExpandButton,
- SidebarItem,
- SidebarSearchField,
- SidebarPinStateProvider,
- SidebarSubmenu,
- SidebarSubmenuItem,
-} from '.';
+import { Sidebar } from './Bar';
+import { SidebarExpandButton, SidebarItem, SidebarSearchField } from './Items';
+import { SidebarPinStateProvider } from './SidebarPinStateContext';
+import { SidebarSubmenu } from './SidebarSubmenu';
+import { SidebarSubmenuItem } from './SidebarSubmenuItem';
async function renderScalableSidebar() {
await renderInTestApp(
diff --git a/packages/core-components/src/layout/Sidebar/Items.tsx b/packages/core-components/src/layout/Sidebar/Items.tsx
index 4bc972e272..fe8dede499 100644
--- a/packages/core-components/src/layout/Sidebar/Items.tsx
+++ b/packages/core-components/src/layout/Sidebar/Items.tsx
@@ -53,16 +53,13 @@ import {
SidebarItemWithSubmenuContext,
SidebarConfig,
} from './config';
-import {
- SidebarSubmenuItemProps,
- SidebarSubmenuProps,
- SidebarSubmenu,
-} from '.';
+import { SidebarSubmenuProps, SidebarSubmenu } from './SidebarSubmenu';
import DoubleArrowLeft from './icons/DoubleArrowLeft';
import DoubleArrowRight from './icons/DoubleArrowRight';
import { isLocationMatch } from './utils';
import { Location } from 'history';
import { useSidebarOpenState } from './SidebarOpenStateContext';
+import { SidebarSubmenuItemProps } from './SidebarSubmenuItem';
/** @public */
export type SidebarItemClassKey =
@@ -214,7 +211,7 @@ function useMemoStyles(sidebarConfig: SidebarConfig) {
/**
* Evaluates the routes of the SubmenuItems & nested DropdownItems.
- * The reeveluation is only triggered, if the `locationPathname` changes, as `useElementFilter` uses memorization.
+ * The reevaluation is only triggered, if the `locationPathname` changes, as `useElementFilter` uses memorization.
*
* @param submenu SidebarSubmenu component
* @param location Location
diff --git a/packages/core-components/src/layout/Sidebar/MobileSidebar.test.tsx b/packages/core-components/src/layout/Sidebar/MobileSidebar.test.tsx
index 8dd06b6e2b..7012afabf1 100644
--- a/packages/core-components/src/layout/Sidebar/MobileSidebar.test.tsx
+++ b/packages/core-components/src/layout/Sidebar/MobileSidebar.test.tsx
@@ -21,13 +21,11 @@ import LayersIcon from '@material-ui/icons/Layers';
import LibraryBooks from '@material-ui/icons/LibraryBooks';
import { fireEvent } from '@testing-library/react';
import React from 'react';
-import {
- MobileSidebar,
- Sidebar,
- SidebarGroup,
- SidebarItem,
- SidebarPage,
-} from '.';
+import { Sidebar } from './Bar';
+import { SidebarItem } from './Items';
+import { MobileSidebar } from './MobileSidebar';
+import { SidebarPage } from './Page';
+import { SidebarGroup } from './SidebarGroup';
const MobileSidebarWithGroups = () => (
diff --git a/packages/core-components/src/layout/Sidebar/Sidebar.stories.tsx b/packages/core-components/src/layout/Sidebar/Sidebar.stories.tsx
index 9b5d76a32c..8daf7b69b6 100644
--- a/packages/core-components/src/layout/Sidebar/Sidebar.stories.tsx
+++ b/packages/core-components/src/layout/Sidebar/Sidebar.stories.tsx
@@ -24,19 +24,19 @@ import CloudQueueIcon from '@material-ui/icons/CloudQueue';
import AcUnitIcon from '@material-ui/icons/AcUnit';
import AppsIcon from '@material-ui/icons/Apps';
import React, { ComponentType } from 'react';
+import { SidebarPage } from './Page';
+import { Sidebar } from './Bar';
+import { SidebarGroup } from './SidebarGroup';
import {
- Sidebar,
SidebarDivider,
- SidebarGroup,
SidebarExpandButton,
- SidebarIntro,
SidebarItem,
- SidebarPage,
SidebarSearchField,
SidebarSpace,
- SidebarSubmenu,
- SidebarSubmenuItem,
-} from '.';
+} from './Items';
+import { SidebarIntro } from './Intro';
+import { SidebarSubmenu } from './SidebarSubmenu';
+import { SidebarSubmenuItem } from './SidebarSubmenuItem';
const routeRef = createRouteRef({
id: 'storybook.test-route',
diff --git a/packages/core-components/src/layout/Sidebar/SidebarGroup.test.tsx b/packages/core-components/src/layout/Sidebar/SidebarGroup.test.tsx
index b8f1eb5ebc..ce60b8cb8a 100644
--- a/packages/core-components/src/layout/Sidebar/SidebarGroup.test.tsx
+++ b/packages/core-components/src/layout/Sidebar/SidebarGroup.test.tsx
@@ -20,8 +20,10 @@ import LayersIcon from '@material-ui/icons/Layers';
import LibraryBooks from '@material-ui/icons/LibraryBooks';
import { fireEvent } from '@testing-library/react';
import React from 'react';
+import { SidebarItem } from './Items';
import { MobileSidebarContext } from './MobileSidebar';
-import { SidebarGroup, SidebarItem, SidebarPage } from '.';
+import { SidebarPage } from './Page';
+import { SidebarGroup } from './SidebarGroup';
const SidebarGroupWithItems = () => (
diff --git a/packages/core-components/src/layout/Sidebar/SidebarGroup.tsx b/packages/core-components/src/layout/Sidebar/SidebarGroup.tsx
index cb9c786ea9..5254199563 100644
--- a/packages/core-components/src/layout/Sidebar/SidebarGroup.tsx
+++ b/packages/core-components/src/layout/Sidebar/SidebarGroup.tsx
@@ -22,10 +22,10 @@ import BottomNavigationAction, {
import { makeStyles } from '@material-ui/core/styles';
import React, { useContext } from 'react';
import { useLocation } from 'react-router-dom';
-import { useSidebarPinState } from '.';
import { Link } from '../../components';
import { SidebarConfigContext, SidebarConfig } from './config';
import { MobileSidebarContext } from './MobileSidebar';
+import { useSidebarPinState } from './SidebarPinStateContext';
/**
* Props for the `SidebarGroup`
diff --git a/packages/integration/src/gerrit/GerritIntegration.ts b/packages/integration/src/gerrit/GerritIntegration.ts
index d57b54df8e..6ea426e407 100644
--- a/packages/integration/src/gerrit/GerritIntegration.ts
+++ b/packages/integration/src/gerrit/GerritIntegration.ts
@@ -20,7 +20,7 @@ import {
GerritIntegrationConfig,
readGerritIntegrationConfigs,
} from './config';
-import { parseGerritGitilesUrl, builldGerritGitilesUrl } from './core';
+import { parseGerritGitilesUrl, buildGerritGitilesUrl } from './core';
/**
* A Gerrit based integration.
@@ -61,7 +61,7 @@ export class GerritIntegration implements ScmIntegration {
let updated;
if (url.startsWith('/')) {
const { branch, project } = parseGerritGitilesUrl(this.config, base);
- return builldGerritGitilesUrl(this.config, project, branch, url);
+ return buildGerritGitilesUrl(this.config, project, branch, url);
}
if (url) {
updated = new URL(url, base);
diff --git a/packages/integration/src/gerrit/core.test.ts b/packages/integration/src/gerrit/core.test.ts
index 351e7ce58e..e226492edb 100644
--- a/packages/integration/src/gerrit/core.test.ts
+++ b/packages/integration/src/gerrit/core.test.ts
@@ -20,7 +20,7 @@ import fetch from 'cross-fetch';
import { setupRequestMockHandlers } from '@backstage/test-utils';
import { GerritIntegrationConfig } from './config';
import {
- builldGerritGitilesUrl,
+ buildGerritGitilesUrl,
getGerritBranchApiUrl,
getGerritCloneRepoUrl,
getGerritRequestOptions,
@@ -33,14 +33,14 @@ describe('gerrit core', () => {
const worker = setupServer();
setupRequestMockHandlers(worker);
- describe('builldGerritGitilesUrl', () => {
+ describe('buildGerritGitilesUrl', () => {
it('can create an url from arguments', () => {
const config: GerritIntegrationConfig = {
host: 'gerrit.com',
gitilesBaseUrl: 'https://gerrit.com/gitiles',
};
expect(
- builldGerritGitilesUrl(config, 'repo', 'dev', 'catalog-info.yaml'),
+ buildGerritGitilesUrl(config, 'repo', 'dev', 'catalog-info.yaml'),
).toEqual(
'https://gerrit.com/gitiles/repo/+/refs/heads/dev/catalog-info.yaml',
);
diff --git a/packages/integration/src/gerrit/core.ts b/packages/integration/src/gerrit/core.ts
index cd2b919e09..0403d8fc75 100644
--- a/packages/integration/src/gerrit/core.ts
+++ b/packages/integration/src/gerrit/core.ts
@@ -13,8 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
import { trimStart } from 'lodash';
-import { GerritIntegrationConfig } from '.';
+import { GerritIntegrationConfig } from './config';
const GERRIT_BODY_PREFIX = ")]}'";
@@ -79,7 +80,7 @@ export function parseGerritGitilesUrl(
* @param filePath - The absolute file path.
* @public
*/
-export function builldGerritGitilesUrl(
+export function buildGerritGitilesUrl(
config: GerritIntegrationConfig,
project: string,
branch: string,
diff --git a/plugins/auth-node/src/DefaultIdentityClient.ts b/plugins/auth-node/src/DefaultIdentityClient.ts
index 499fc62929..b8f6b73865 100644
--- a/plugins/auth-node/src/DefaultIdentityClient.ts
+++ b/plugins/auth-node/src/DefaultIdentityClient.ts
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { AuthenticationError } from '@backstage/errors';
import {
@@ -24,12 +25,12 @@ import {
jwtVerify,
} from 'jose';
import { GetKeyFunction } from 'jose/dist/types/types';
-
import {
BackstageIdentityResponse,
IdentityApiGetIdentityRequest,
} from './types';
-import { getBearerTokenFromAuthorizationHeader, IdentityApi } from '.';
+import { getBearerTokenFromAuthorizationHeader } from './getBearerTokenFromAuthorizationHeader';
+import { IdentityApi } from './IdentityApi';
const CLOCK_MARGIN_S = 10;
diff --git a/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.test.tsx b/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.test.tsx
index 23476b5c3e..8f527a635d 100644
--- a/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.test.tsx
+++ b/plugins/azure-sites/src/components/AzureSitesOverviewTableComponent/AzureSitesOverviewTable.test.tsx
@@ -30,8 +30,8 @@ import {
import { setupServer } from 'msw/node';
import { DateTime } from 'luxon';
import { siteMock } from '../../mocks/mocks';
-import { azureSiteApiRef } from '../..';
import { AzureSitesOverviewTable } from './AzureSitesOverviewTable';
+import { azureSiteApiRef } from '../../api';
const errorApiMock = { post: jest.fn(), error$: jest.fn() };
const identityApiMock = (getCredentials: any) => ({
diff --git a/plugins/gcalendar/src/components/CalendarCard/HomePageCalendar.test.tsx b/plugins/gcalendar/src/components/CalendarCard/HomePageCalendar.test.tsx
index dbaa9051b6..8f563c63eb 100644
--- a/plugins/gcalendar/src/components/CalendarCard/HomePageCalendar.test.tsx
+++ b/plugins/gcalendar/src/components/CalendarCard/HomePageCalendar.test.tsx
@@ -13,17 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import React from 'react';
+import React from 'react';
import { googleAuthApiRef, storageApiRef } from '@backstage/core-plugin-api';
import {
MockStorageApi,
TestApiProvider,
renderInTestApp,
} from '@backstage/test-utils';
-
-import { HomePageCalendar } from '.';
-import { gcalendarApiRef, gcalendarPlugin } from '../..';
+import { HomePageCalendar } from './HomePageCalendar';
+import { gcalendarApiRef } from '../../api';
+import { gcalendarPlugin } from '../../plugin';
describe('', () => {
const primaryCalendar = {
diff --git a/plugins/gcalendar/src/components/CalendarCard/SignInContent.tsx b/plugins/gcalendar/src/components/CalendarCard/SignInContent.tsx
index 922c18da49..544d761102 100644
--- a/plugins/gcalendar/src/components/CalendarCard/SignInContent.tsx
+++ b/plugins/gcalendar/src/components/CalendarCard/SignInContent.tsx
@@ -13,13 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
import React from 'react';
-
import { Box, Button, styled } from '@material-ui/core';
-
import { CalendarEvent } from './CalendarEvent';
import { eventsMock } from './signInEventMock';
-import { GCalendarEvent } from '../..';
+import { GCalendarEvent } from '../../api';
type Props = {
handleAuthClick: React.MouseEventHandler;
diff --git a/plugins/periskop/src/components/EntityPeriskopErrorsCard/EntityPeriskopErrorsCard.tsx b/plugins/periskop/src/components/EntityPeriskopErrorsCard/EntityPeriskopErrorsCard.tsx
index cd4aa6da0f..73a06693b1 100644
--- a/plugins/periskop/src/components/EntityPeriskopErrorsCard/EntityPeriskopErrorsCard.tsx
+++ b/plugins/periskop/src/components/EntityPeriskopErrorsCard/EntityPeriskopErrorsCard.tsx
@@ -34,7 +34,7 @@ import {
Link,
} from '@backstage/core-components';
import useAsync from 'react-use/lib/useAsync';
-import { periskopApiRef } from '../..';
+import { periskopApiRef } from '../../plugin';
import { AggregatedError, NotFoundInInstance } from '../../types';
/**
diff --git a/plugins/permission-common/src/types/api.ts b/plugins/permission-common/src/types/api.ts
index 5e7a2bb349..322195a63f 100644
--- a/plugins/permission-common/src/types/api.ts
+++ b/plugins/permission-common/src/types/api.ts
@@ -15,8 +15,7 @@
*/
import { JsonPrimitive } from '@backstage/types';
-import { ResourcePermission } from '.';
-import { Permission } from './permission';
+import { Permission, ResourcePermission } from './permission';
/**
* A request with a UUID identifier, so that batched responses can be matched up with the original
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.test.ts
index 5518662e45..bc9b797000 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.test.ts
@@ -23,7 +23,7 @@ import {
import { ConfigReader } from '@backstage/config';
import { getVoidLogger } from '@backstage/backend-common';
import { PassThrough } from 'stream';
-import { TemplateAction } from '../..';
+import { TemplateAction } from '../../types';
const mockOctokit = {
rest: {
diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.test.ts
index 0798b04a93..97fdb3d634 100644
--- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.test.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.test.ts
@@ -23,7 +23,7 @@ import {
import { ConfigReader } from '@backstage/config';
import { getVoidLogger } from '@backstage/backend-common';
import { PassThrough } from 'stream';
-import { TemplateAction } from '../..';
+import { TemplateAction } from '../../types';
const mockOctokit = {
rest: {
diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts
index 9e60bc7727..7a015c111f 100644
--- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts
+++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts
@@ -13,20 +13,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { JsonObject, Observable } from '@backstage/types';
-import ObservableImpl from 'zen-observable';
+
import { TaskSpec } from '@backstage/plugin-scaffolder-common';
+import { JsonObject, Observable } from '@backstage/types';
import { Logger } from 'winston';
+import ObservableImpl from 'zen-observable';
import {
+ SerializedTask,
+ SerializedTaskEvent,
+ TaskBroker,
+ TaskBrokerDispatchOptions,
TaskCompletionState,
TaskContext,
TaskSecrets,
TaskStore,
- TaskBroker,
- SerializedTaskEvent,
- SerializedTask,
} from './types';
-import { TaskBrokerDispatchOptions } from '.';
/**
* TaskManager
diff --git a/plugins/techdocs-backend/src/cache/cacheMiddleware.test.ts b/plugins/techdocs-backend/src/cache/cacheMiddleware.test.ts
index 0a21eddc15..4dd993a163 100644
--- a/plugins/techdocs-backend/src/cache/cacheMiddleware.test.ts
+++ b/plugins/techdocs-backend/src/cache/cacheMiddleware.test.ts
@@ -17,7 +17,8 @@
import { getVoidLogger } from '@backstage/backend-common';
import express from 'express';
import request from 'supertest';
-import { createCacheMiddleware, TechDocsCache } from '.';
+import { createCacheMiddleware } from './cacheMiddleware';
+import { TechDocsCache } from './TechDocsCache';
/**
* Mocks cached HTTP response.
diff --git a/plugins/techdocs/src/reader/transformers/addGitFeedbackLink.ts b/plugins/techdocs/src/reader/transformers/addGitFeedbackLink.ts
index 3fca7ddeb9..9239573bd1 100644
--- a/plugins/techdocs/src/reader/transformers/addGitFeedbackLink.ts
+++ b/plugins/techdocs/src/reader/transformers/addGitFeedbackLink.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import type { Transformer } from './index';
+import type { Transformer } from './transformer';
import {
replaceGithubUrlType,
ScmIntegrationRegistry,
diff --git a/plugins/techdocs/src/reader/transformers/addSidebarToggle.ts b/plugins/techdocs/src/reader/transformers/addSidebarToggle.ts
index 69256d3ed6..789c9179d5 100644
--- a/plugins/techdocs/src/reader/transformers/addSidebarToggle.ts
+++ b/plugins/techdocs/src/reader/transformers/addSidebarToggle.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import type { Transformer } from './index';
+import type { Transformer } from './transformer';
import MenuIcon from '@material-ui/icons/Menu';
import React from 'react';
import ReactDOM from 'react-dom';
diff --git a/plugins/techdocs/src/reader/transformers/scrollIntoNavigation.test.ts b/plugins/techdocs/src/reader/transformers/scrollIntoNavigation.test.ts
index 965f2d4771..e57b256fb8 100644
--- a/plugins/techdocs/src/reader/transformers/scrollIntoNavigation.test.ts
+++ b/plugins/techdocs/src/reader/transformers/scrollIntoNavigation.test.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { scrollIntoNavigation } from '.';
+import { scrollIntoNavigation } from './scrollIntoNavigation';
import { createTestShadowDom, FIXTURES } from '../../test-utils';
jest.useFakeTimers();
diff --git a/plugins/xcmetrics/src/utils/buildData.ts b/plugins/xcmetrics/src/utils/buildData.ts
index df6fad996e..bbfcbcbf57 100644
--- a/plugins/xcmetrics/src/utils/buildData.ts
+++ b/plugins/xcmetrics/src/utils/buildData.ts
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import { formatDuration } from '.';
+import { formatDuration } from './format';
import { BuildCount, BuildTime } from '../api';
export const getErrorRatios = (buildCounts?: BuildCount[]) => {