From b17a37d2e1b64c37f89e85448bbb549379137070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=B8vring?= Date: Tue, 7 Nov 2023 21:18:52 +0100 Subject: [PATCH 1/3] Improves imports --- __test__/auth/AccessTokenService.test.ts | 4 +- __test__/auth/CompositeLogOutHandler.test.ts | 2 +- __test__/auth/CredentialsTransferrer.test.ts | 4 +- ...redentialsTransferringLogInHandler.test.ts | 2 +- .../auth/ErrorIgnoringLogOutHandler.test.ts | 2 +- .../auth/LockingAccessTokenService.test.ts | 2 +- __test__/auth/OAuthTokenRepository.test.ts | 2 +- ...yStaleRefreshingAccessTokenService.test.ts | 2 +- .../auth/UserDataCleanUpLogOutHandler.test.ts | 2 +- .../AccessTokenRefreshingGitHubClient.test.ts | 2 +- ...GitHubOrganizationSessionValidator.test.ts | 2 +- .../KeyValueUserDataRepository.test.ts | 2 +- __test__/common/utils/ZodJSONCoder.test.ts | 2 +- __test__/common/utils/url.test.ts | 2 +- ...entCheckingPullRequestEventHandler.test.ts | 2 +- __test__/hooks/GitHubCommentFactory.test.ts | 2 +- ...PostCommentPullRequestEventHandler.test.ts | 2 +- ...ameCheckingPullRequestEventHandler.test.ts | 2 +- .../projects/CachingProjectDataSource.test.ts | 3 +- __test__/projects/ProjectConfigParser.test.ts | 2 +- ...SessionValidatingProjectDataSource.test.ts | 2 +- __test__/projects/getSelection.test.ts | 2 +- __test__/projects/projectNavigator.test.ts | 2 +- __test__/projects/updateWindowTitle.test.ts | 2 +- src/app/api/hooks/github/route.ts | 14 +++-- src/common/github/index.ts | 3 + src/common/index.ts | 7 +++ src/common/keyValueStore/index.ts | 2 + src/common/mutex/index.ts | 6 ++ src/common/session/Auth0Session.ts | 2 +- src/common/session/index.ts | 4 ++ src/common/userData/index.ts | 2 + src/common/utils/index.ts | 4 ++ src/composition.ts | 56 +++++++++++-------- .../auth/data/GitHubOAuthTokenRefresher.ts | 3 +- src/features/auth/data/index.ts | 2 + src/features/auth/domain/accessToken/index.ts | 4 ++ .../auth/domain/credentialsTransfer/index.ts | 2 + src/features/auth/domain/index.ts | 5 ++ src/features/auth/domain/logIn/index.ts | 2 + src/features/auth/domain/logOut/index.ts | 4 ++ src/features/auth/domain/oAuthToken/index.ts | 4 ++ .../docs/view/DocumentationViewer.tsx | 2 +- src/features/hooks/data/GitHubHookHandler.ts | 2 +- src/features/hooks/data/index.ts | 2 + src/features/hooks/domain/index.ts | 6 ++ .../projects/data/GitHubProjectDataSource.ts | 12 ++-- src/features/projects/data/index.ts | 2 + src/features/projects/data/useProjects.ts | 2 +- .../projects/domain/ProjectRepository.ts | 4 +- .../SessionValidatingProjectDataSource.ts | 6 +- src/features/projects/domain/index.ts | 12 ++++ src/features/projects/view/Documentation.tsx | 4 +- .../projects/view/DocumentationIframe.tsx | 2 +- src/features/projects/view/MainContent.tsx | 4 +- src/features/projects/view/ProjectAvatar.tsx | 2 +- src/features/projects/view/ProjectList.tsx | 2 +- .../projects/view/ProjectListItem.tsx | 2 +- src/features/projects/view/ProjectsPage.tsx | 2 +- .../projects/view/client/ProjectsPage.tsx | 7 +-- .../projects/view/toolbar/MobileToolbar.tsx | 4 +- .../view/toolbar/SpecificationSelector.tsx | 2 +- .../view/toolbar/TrailingToolbarItem.tsx | 4 +- .../projects/view/toolbar/VersionSelector.tsx | 2 +- src/features/settings/data/index.ts | 1 + .../data/useDocumentationVisualizer.ts | 2 +- src/features/settings/domain/index.ts | 1 + .../view/DocumentationVisualizationPicker.tsx | 4 +- 68 files changed, 175 insertions(+), 99 deletions(-) create mode 100644 src/common/github/index.ts create mode 100644 src/common/index.ts create mode 100644 src/common/keyValueStore/index.ts create mode 100644 src/common/mutex/index.ts create mode 100644 src/common/session/index.ts create mode 100644 src/common/userData/index.ts create mode 100644 src/common/utils/index.ts create mode 100644 src/features/auth/data/index.ts create mode 100644 src/features/auth/domain/accessToken/index.ts create mode 100644 src/features/auth/domain/credentialsTransfer/index.ts create mode 100644 src/features/auth/domain/index.ts create mode 100644 src/features/auth/domain/logIn/index.ts create mode 100644 src/features/auth/domain/logOut/index.ts create mode 100644 src/features/auth/domain/oAuthToken/index.ts create mode 100644 src/features/hooks/data/index.ts create mode 100644 src/features/hooks/domain/index.ts create mode 100644 src/features/projects/data/index.ts create mode 100644 src/features/projects/domain/index.ts create mode 100644 src/features/settings/data/index.ts create mode 100644 src/features/settings/domain/index.ts diff --git a/__test__/auth/AccessTokenService.test.ts b/__test__/auth/AccessTokenService.test.ts index 62a986c7..4ad0edbf 100644 --- a/__test__/auth/AccessTokenService.test.ts +++ b/__test__/auth/AccessTokenService.test.ts @@ -1,5 +1,5 @@ -import AccessTokenService from "../../src/features/auth/domain/accessToken/AccessTokenService" -import OAuthToken from "../../src/features/auth/domain/oAuthToken/OAuthToken" +import { AccessTokenService } from "../../src/features/auth/domain" +import { OAuthToken } from "../../src/features/auth/domain" test("It gets the access token for the user", async () => { let readUserID: string | undefined diff --git a/__test__/auth/CompositeLogOutHandler.test.ts b/__test__/auth/CompositeLogOutHandler.test.ts index 9618723c..f95757bf 100644 --- a/__test__/auth/CompositeLogOutHandler.test.ts +++ b/__test__/auth/CompositeLogOutHandler.test.ts @@ -1,4 +1,4 @@ -import CompositeLogOutHandler from "../../src/features/auth/domain/logOut/CompositeLogOutHandler" +import { CompositeLogOutHandler } from "../../src/features/auth/domain" test("It invokes all log out handlers", async () => { let didCallLogOutHandler1 = false diff --git a/__test__/auth/CredentialsTransferrer.test.ts b/__test__/auth/CredentialsTransferrer.test.ts index 7723e8c1..4a405803 100644 --- a/__test__/auth/CredentialsTransferrer.test.ts +++ b/__test__/auth/CredentialsTransferrer.test.ts @@ -1,5 +1,5 @@ -import CredentialsTransferrer from "../../src/features/auth/domain/credentialsTransfer/CredentialsTransferrer" -import OAuthToken from "../../src/features/auth/domain/oAuthToken/OAuthToken" +import { CredentialsTransferrer } from "../../src/features/auth/domain" +import { OAuthToken } from "../../src/features/auth/domain" test("It fetches refresh token for specified user", async () => { let fetchedUserId: string | undefined diff --git a/__test__/auth/CredentialsTransferringLogInHandler.test.ts b/__test__/auth/CredentialsTransferringLogInHandler.test.ts index 90b106fe..43f2d956 100644 --- a/__test__/auth/CredentialsTransferringLogInHandler.test.ts +++ b/__test__/auth/CredentialsTransferringLogInHandler.test.ts @@ -1,4 +1,4 @@ -import CredentialsTransferringLogInHandler from "../../src/features/auth/domain/logIn/CredentialsTransferringLogInHandler" +import { CredentialsTransferringLogInHandler } from "../../src/features/auth/domain" test("It transfers credentials", async () => { let didTransferCredentials = false diff --git a/__test__/auth/ErrorIgnoringLogOutHandler.test.ts b/__test__/auth/ErrorIgnoringLogOutHandler.test.ts index 5feae77c..a7bacdd0 100644 --- a/__test__/auth/ErrorIgnoringLogOutHandler.test.ts +++ b/__test__/auth/ErrorIgnoringLogOutHandler.test.ts @@ -1,4 +1,4 @@ -import ErrorIgnoringLogOutHandler from "../../src/features/auth/domain/logOut/ErrorIgnoringLogOutHandler" +import { ErrorIgnoringLogOutHandler } from "../../src/features/auth/domain" test("It ignores errors", async () => { const sut = new ErrorIgnoringLogOutHandler({ diff --git a/__test__/auth/LockingAccessTokenService.test.ts b/__test__/auth/LockingAccessTokenService.test.ts index 28dad317..30996afb 100644 --- a/__test__/auth/LockingAccessTokenService.test.ts +++ b/__test__/auth/LockingAccessTokenService.test.ts @@ -1,4 +1,4 @@ -import LockingAccessTokenService from "../../src/features/auth/domain/accessToken/LockingAccessTokenService" +import { LockingAccessTokenService } from "../../src/features/auth/domain" test("It reads access token", async () => { let didReadAccessToken = false diff --git a/__test__/auth/OAuthTokenRepository.test.ts b/__test__/auth/OAuthTokenRepository.test.ts index 3894338e..b5786016 100644 --- a/__test__/auth/OAuthTokenRepository.test.ts +++ b/__test__/auth/OAuthTokenRepository.test.ts @@ -1,4 +1,4 @@ -import OAuthTokenRepository from "../../src/features/auth/domain/oAuthToken/OAuthTokenRepository" +import { OAuthTokenRepository } from "../../src/features/auth/domain" test("It reads the auth token for the specified user", async () => { let readUserId: string | undefined diff --git a/__test__/auth/OnlyStaleRefreshingAccessTokenService.test.ts b/__test__/auth/OnlyStaleRefreshingAccessTokenService.test.ts index 016d224d..f6dedfda 100644 --- a/__test__/auth/OnlyStaleRefreshingAccessTokenService.test.ts +++ b/__test__/auth/OnlyStaleRefreshingAccessTokenService.test.ts @@ -1,4 +1,4 @@ -import OnlyStaleRefreshingAccessTokenService from "../../src/features/auth/domain/accessToken/OnlyStaleRefreshingAccessTokenService" +import { OnlyStaleRefreshingAccessTokenService } from "../../src/features/auth/domain" test("It refreshes the access token when the input access token is equal to the stored access token", async () => { let didRefreshAccessToken = false diff --git a/__test__/auth/UserDataCleanUpLogOutHandler.test.ts b/__test__/auth/UserDataCleanUpLogOutHandler.test.ts index c8db0461..6cbfc03d 100644 --- a/__test__/auth/UserDataCleanUpLogOutHandler.test.ts +++ b/__test__/auth/UserDataCleanUpLogOutHandler.test.ts @@ -1,4 +1,4 @@ -import UserDataCleanUpLogOutHandler from "../../src/features/auth/domain/logOut/UserDataCleanUpLogOutHandler" +import { UserDataCleanUpLogOutHandler } from "../../src/features/auth/domain" test("It deletes data for the read user ID", async () => { let deletedUserId: string | undefined diff --git a/__test__/common/github/AccessTokenRefreshingGitHubClient.test.ts b/__test__/common/github/AccessTokenRefreshingGitHubClient.test.ts index 59b667b4..0345ea9c 100644 --- a/__test__/common/github/AccessTokenRefreshingGitHubClient.test.ts +++ b/__test__/common/github/AccessTokenRefreshingGitHubClient.test.ts @@ -1,4 +1,4 @@ -import AccessTokenRefreshingGitHubClient from "../../../src/common/github/AccessTokenRefreshingGitHubClient" +import { AccessTokenRefreshingGitHubClient } from "../../../src/common" import { GraphQLQueryRequest, GetRepositoryContentRequest, diff --git a/__test__/common/session/GitHubOrganizationSessionValidator.test.ts b/__test__/common/session/GitHubOrganizationSessionValidator.test.ts index 105039de..5e530047 100644 --- a/__test__/common/session/GitHubOrganizationSessionValidator.test.ts +++ b/__test__/common/session/GitHubOrganizationSessionValidator.test.ts @@ -1,7 +1,7 @@ import { GetOrganizationMembershipStatusRequest } from "../../../src/common/github/IGitHubClient" -import GitHubOrganizationSessionValidator from "../../../src/common/session/GitHubOrganizationSessionValidator" +import { GitHubOrganizationSessionValidator } from "../../../src/common" test("It requests organization membership status for the specified organization", async () => { let queriedOrganizationName: string | undefined diff --git a/__test__/common/userData/KeyValueUserDataRepository.test.ts b/__test__/common/userData/KeyValueUserDataRepository.test.ts index dbf6eef6..869403b4 100644 --- a/__test__/common/userData/KeyValueUserDataRepository.test.ts +++ b/__test__/common/userData/KeyValueUserDataRepository.test.ts @@ -1,4 +1,4 @@ -import KeyValueUserDataRepository from "../../../src/common/userData/KeyValueUserDataRepository" +import { KeyValueUserDataRepository } from "../../../src/common" test("It reads the expected key", async () => { let readKey: string | undefined diff --git a/__test__/common/utils/ZodJSONCoder.test.ts b/__test__/common/utils/ZodJSONCoder.test.ts index 2958b80e..6335bbd9 100644 --- a/__test__/common/utils/ZodJSONCoder.test.ts +++ b/__test__/common/utils/ZodJSONCoder.test.ts @@ -1,5 +1,5 @@ import { z } from "zod" -import ZodJSONCoder from "../../../src/common/utils/ZodJSONCoder" +import { ZodJSONCoder } from "../../../src/common" const SampleAuthTokenSchema = z.object({ accessToken: z.string(), diff --git a/__test__/common/utils/url.test.ts b/__test__/common/utils/url.test.ts index 0cd4b46b..dd5968d6 100644 --- a/__test__/common/utils/url.test.ts +++ b/__test__/common/utils/url.test.ts @@ -2,7 +2,7 @@ import { getProjectId, getVersionId, getSpecificationId -} from "../../../src/common/utils/url" +} from "../../../src/common" test("It reads path containing project only", async () => { const url = "/foo" diff --git a/__test__/hooks/ExistingCommentCheckingPullRequestEventHandler.test.ts b/__test__/hooks/ExistingCommentCheckingPullRequestEventHandler.test.ts index 69c90250..ff56d18f 100644 --- a/__test__/hooks/ExistingCommentCheckingPullRequestEventHandler.test.ts +++ b/__test__/hooks/ExistingCommentCheckingPullRequestEventHandler.test.ts @@ -1,4 +1,4 @@ -import ExistingCommentCheckingPullRequestEventHandler from "../../src/features/hooks/domain/ExistingCommentCheckingPullRequestEventHandler" +import { ExistingCommentCheckingPullRequestEventHandler } from "../../src/features/hooks/domain" test("It fetches comments from the repository", async () => { let didFetchComments = false diff --git a/__test__/hooks/GitHubCommentFactory.test.ts b/__test__/hooks/GitHubCommentFactory.test.ts index 8347ab03..4857c717 100644 --- a/__test__/hooks/GitHubCommentFactory.test.ts +++ b/__test__/hooks/GitHubCommentFactory.test.ts @@ -1,4 +1,4 @@ -import GitHubCommentFactory from "../../src/features/hooks/domain/GitHubCommentFactory" +import { GitHubCommentFactory } from "../../src/features/hooks/domain" test("It includes a link to the documentation", async () => { const text = GitHubCommentFactory.makeDocumentationPreviewReadyComment( diff --git a/__test__/hooks/PostCommentPullRequestEventHandler.test.ts b/__test__/hooks/PostCommentPullRequestEventHandler.test.ts index 5bc4fb3c..82fb91f4 100644 --- a/__test__/hooks/PostCommentPullRequestEventHandler.test.ts +++ b/__test__/hooks/PostCommentPullRequestEventHandler.test.ts @@ -1,4 +1,4 @@ -import PostCommentPullRequestEventHandler from "../../src/features/hooks/domain/PostCommentPullRequestEventHandler" +import { PostCommentPullRequestEventHandler } from "../../src/features/hooks/domain" test("It adds a comment to the repository", async () => { let didAddComment = false diff --git a/__test__/hooks/RepositoryNameCheckingPullRequestEventHandler.test.ts b/__test__/hooks/RepositoryNameCheckingPullRequestEventHandler.test.ts index 25aab3f7..bfb42db3 100644 --- a/__test__/hooks/RepositoryNameCheckingPullRequestEventHandler.test.ts +++ b/__test__/hooks/RepositoryNameCheckingPullRequestEventHandler.test.ts @@ -1,4 +1,4 @@ -import RepositoryNameCheckingPullRequestEventHandler from "../../src/features/hooks/domain/RepositoryNameCheckingPullRequestEventHandler" +import { RepositoryNameCheckingPullRequestEventHandler } from "../../src/features/hooks/domain" test("It does not call event handler when repository name does not have \"-openapi\" suffix", async () => { let didCallEventHandler = false diff --git a/__test__/projects/CachingProjectDataSource.test.ts b/__test__/projects/CachingProjectDataSource.test.ts index 1a0f2f76..7f4974cf 100644 --- a/__test__/projects/CachingProjectDataSource.test.ts +++ b/__test__/projects/CachingProjectDataSource.test.ts @@ -1,5 +1,4 @@ -import Project from "../../src/features/projects/domain/Project" -import CachingProjectDataSource from "../../src/features/projects/domain/CachingProjectDataSource" +import { Project, CachingProjectDataSource } from "../../src/features/projects/domain" test("It caches projects read from the data source", async () => { const projects: Project[] = [{ diff --git a/__test__/projects/ProjectConfigParser.test.ts b/__test__/projects/ProjectConfigParser.test.ts index ba5c5fdc..4cb0ee0e 100644 --- a/__test__/projects/ProjectConfigParser.test.ts +++ b/__test__/projects/ProjectConfigParser.test.ts @@ -1,4 +1,4 @@ -import ProjectConfigParser from "../../src/features/projects/domain/ProjectConfigParser" +import { ProjectConfigParser } from "../../src/features/projects/domain" test("It parses an empty string", async () => { const sut = new ProjectConfigParser() diff --git a/__test__/projects/SessionValidatingProjectDataSource.test.ts b/__test__/projects/SessionValidatingProjectDataSource.test.ts index f0f96dc7..7050cb78 100644 --- a/__test__/projects/SessionValidatingProjectDataSource.test.ts +++ b/__test__/projects/SessionValidatingProjectDataSource.test.ts @@ -1,4 +1,4 @@ -import SessionValidatingProjectDataSource from "../../src/features/projects/domain/SessionValidatingProjectDataSource" +import { SessionValidatingProjectDataSource } from "../../src/features/projects/domain" test("It validates the session", async () => { let didValidateSession = false diff --git a/__test__/projects/getSelection.test.ts b/__test__/projects/getSelection.test.ts index 25c116de..b2b54c5f 100644 --- a/__test__/projects/getSelection.test.ts +++ b/__test__/projects/getSelection.test.ts @@ -1,4 +1,4 @@ -import getSelection from "../../src/features/projects/domain/getSelection" +import { getSelection } from "../../src/features/projects/domain" test("It selects the first project when there is only one project", () => { const sut = getSelection({ diff --git a/__test__/projects/projectNavigator.test.ts b/__test__/projects/projectNavigator.test.ts index a4f69daa..06c30ac1 100644 --- a/__test__/projects/projectNavigator.test.ts +++ b/__test__/projects/projectNavigator.test.ts @@ -1,4 +1,4 @@ -import projectNavigator from "../../src/features/projects/domain/projectNavigator" +import { projectNavigator } from "../../src/features/projects/domain" test("It navigates to the correct path", async () => { let pushedPath: string | undefined diff --git a/__test__/projects/updateWindowTitle.test.ts b/__test__/projects/updateWindowTitle.test.ts index 8fe93ef1..1f7692b2 100644 --- a/__test__/projects/updateWindowTitle.test.ts +++ b/__test__/projects/updateWindowTitle.test.ts @@ -1,4 +1,4 @@ -import updateWindowTitle from "../../src/features/projects/domain/updateWindowTitle" +import { updateWindowTitle } from "../../src/features/projects/domain" test("It uses default title when there is no selection", async () => { const store: { title: string } = { title: "" } diff --git a/src/app/api/hooks/github/route.ts b/src/app/api/hooks/github/route.ts index f6739101..d1fd0b6e 100644 --- a/src/app/api/hooks/github/route.ts +++ b/src/app/api/hooks/github/route.ts @@ -1,9 +1,13 @@ import { NextRequest, NextResponse } from "next/server" -import GitHubHookHandler from "@/features/hooks/data/GitHubHookHandler" -import GitHubPullRequestCommentRepository from "@/features/hooks/data/GitHubPullRequestCommentRepository" -import PostCommentPullRequestEventHandler from "@/features/hooks/domain/PostCommentPullRequestEventHandler" -import RepositoryNameCheckingPullRequestEventHandler from "@/features/hooks/domain/RepositoryNameCheckingPullRequestEventHandler" -import ExistingCommentCheckingPullRequestEventHandler from "@/features/hooks/domain/ExistingCommentCheckingPullRequestEventHandler" +import { + GitHubHookHandler, + GitHubPullRequestCommentRepository +} from "@/features/hooks/data" +import { + PostCommentPullRequestEventHandler, + RepositoryNameCheckingPullRequestEventHandler, + ExistingCommentCheckingPullRequestEventHandler +} from "@/features/hooks/domain" import { gitHubClient } from "@/composition" const { diff --git a/src/common/github/index.ts b/src/common/github/index.ts new file mode 100644 index 00000000..da9c21f3 --- /dev/null +++ b/src/common/github/index.ts @@ -0,0 +1,3 @@ +export { default as AccessTokenRefreshingGitHubClient } from "./AccessTokenRefreshingGitHubClient" +export { default as GitHubClient } from "./GitHubClient" +export type { default as IGitHubClient } from "./IGitHubClient" diff --git a/src/common/index.ts b/src/common/index.ts new file mode 100644 index 00000000..c7086817 --- /dev/null +++ b/src/common/index.ts @@ -0,0 +1,7 @@ +export * from "./errors" +export * from "./github" +export * from "./keyValueStore" +export * from "./mutex" +export * from "./session" +export * from "./userData" +export * from "./utils" diff --git a/src/common/keyValueStore/index.ts b/src/common/keyValueStore/index.ts new file mode 100644 index 00000000..23ca54d7 --- /dev/null +++ b/src/common/keyValueStore/index.ts @@ -0,0 +1,2 @@ +export type { default as IKeyValueStore } from "./IKeyValueStore" +export { default as RedisKeyValueStore } from "./RedisKeyValueStore" diff --git a/src/common/mutex/index.ts b/src/common/mutex/index.ts new file mode 100644 index 00000000..0e047424 --- /dev/null +++ b/src/common/mutex/index.ts @@ -0,0 +1,6 @@ +export type { default as IKeyedMutexFactory } from "./IKeyedMutexFactory" +export type { default as IMutex } from "./IMutex" +export type { default as IMutexFactory } from "./IMutexFactory" +export { default as RedisKeyedMutexFactory } from "./RedisKeyedMutexFactory" +export { default as SessionMutexFactory } from "./SessionMutexFactory" +export { default as withMutex } from "./withMutex" diff --git a/src/common/session/Auth0Session.ts b/src/common/session/Auth0Session.ts index 0971235b..4db56f72 100644 --- a/src/common/session/Auth0Session.ts +++ b/src/common/session/Auth0Session.ts @@ -1,5 +1,5 @@ import { getSession } from "@auth0/nextjs-auth0" -import { UnauthorizedError } from "@/common/errors" +import { UnauthorizedError } from "../../common/errors" import ISession from "./ISession" export default class Auth0Session implements ISession { diff --git a/src/common/session/index.ts b/src/common/session/index.ts new file mode 100644 index 00000000..367da4a6 --- /dev/null +++ b/src/common/session/index.ts @@ -0,0 +1,4 @@ +export { default as Auth0Session } from "./Auth0Session" +export { default as GitHubOrganizationSessionValidator } from "./GitHubOrganizationSessionValidator" +export type { default as ISession } from "./ISession" +export type { default as ISessionValidator } from "./ISessionValidator" diff --git a/src/common/userData/index.ts b/src/common/userData/index.ts new file mode 100644 index 00000000..9d4d35fc --- /dev/null +++ b/src/common/userData/index.ts @@ -0,0 +1,2 @@ +export type { default as IUserDataRepository } from "./IUserDataRepository" +export { default as KeyValueUserDataRepository } from "./KeyValueUserDataRepository" diff --git a/src/common/utils/index.ts b/src/common/utils/index.ts new file mode 100644 index 00000000..c1c3b303 --- /dev/null +++ b/src/common/utils/index.ts @@ -0,0 +1,4 @@ +export type * from "./fetcher" +export type { default as fetcher } from "./fetcher" +export * from "./url" +export { default as ZodJSONCoder } from "./ZodJSONCoder" diff --git a/src/composition.ts b/src/composition.ts index b54b36b9..4f3d771b 100644 --- a/src/composition.ts +++ b/src/composition.ts @@ -1,26 +1,36 @@ -import AccessTokenRefreshingGitHubClient from "@/common/github/AccessTokenRefreshingGitHubClient" -import AccessTokenService from "@/features/auth/domain/accessToken/AccessTokenService" -import Auth0RefreshTokenReader from "@/features/auth/data/Auth0RefreshTokenReader" -import Auth0Session from "@/common/session/Auth0Session" -import CachingProjectDataSource from "@/features/projects/domain/CachingProjectDataSource" -import CompositeLogOutHandler from "@/features/auth/domain/logOut/CompositeLogOutHandler" -import CredentialsTransferrer from "@/features/auth/domain/credentialsTransfer/CredentialsTransferrer" -import CredentialsTransferringLogInHandler from "@/features/auth/domain/logIn/CredentialsTransferringLogInHandler" -import ErrorIgnoringLogOutHandler from "@/features/auth/domain/logOut/ErrorIgnoringLogOutHandler" -import GitHubClient from "@/common/github/GitHubClient" -import GitHubOAuthTokenRefresher from "@/features/auth/data/GitHubOAuthTokenRefresher" -import GitHubOrganizationSessionValidator from "@/common/session/GitHubOrganizationSessionValidator" -import GitHubProjectDataSource from "@/features/projects/data/GitHubProjectDataSource" -import KeyValueUserDataRepository from "@/common/userData/KeyValueUserDataRepository" -import LockingAccessTokenService from "@/features/auth/domain/accessToken/LockingAccessTokenService" -import OnlyStaleRefreshingAccessTokenService from "@/features/auth/domain/accessToken/OnlyStaleRefreshingAccessTokenService" -import ProjectRepository from "@/features/projects/domain/ProjectRepository" -import RedisKeyedMutexFactory from "@/common/mutex/RedisKeyedMutexFactory" -import RedisKeyValueStore from "@/common/keyValueStore/RedisKeyValueStore" -import SessionMutexFactory from "@/common/mutex/SessionMutexFactory" -import SessionValidatingProjectDataSource from "@/features/projects/domain/SessionValidatingProjectDataSource" -import OAuthTokenRepository from "@/features/auth/domain/oAuthToken/OAuthTokenRepository" -import UserDataCleanUpLogOutHandler from "@/features/auth/domain/logOut/UserDataCleanUpLogOutHandler" +import { + AccessTokenRefreshingGitHubClient, + Auth0Session, + GitHubClient, + GitHubOrganizationSessionValidator, + KeyValueUserDataRepository, + RedisKeyedMutexFactory, + RedisKeyValueStore, + SessionMutexFactory +} from "@/common" +import { + Auth0RefreshTokenReader, + GitHubOAuthTokenRefresher +} from "@/features/auth/data" +import { + AccessTokenService, + CompositeLogOutHandler, + CredentialsTransferrer, + CredentialsTransferringLogInHandler, + ErrorIgnoringLogOutHandler, + LockingAccessTokenService, + OnlyStaleRefreshingAccessTokenService, + OAuthTokenRepository, + UserDataCleanUpLogOutHandler +} from "@/features/auth/domain" +import { + GitHubProjectDataSource +} from "@/features/projects/data" +import { + CachingProjectDataSource, + ProjectRepository, + SessionValidatingProjectDataSource +} from "@/features/projects/domain" const { AUTH0_MANAGEMENT_DOMAIN, diff --git a/src/features/auth/data/GitHubOAuthTokenRefresher.ts b/src/features/auth/data/GitHubOAuthTokenRefresher.ts index 255e8d13..08a2a998 100644 --- a/src/features/auth/data/GitHubOAuthTokenRefresher.ts +++ b/src/features/auth/data/GitHubOAuthTokenRefresher.ts @@ -1,6 +1,5 @@ import { UnauthorizedError } from "@/common/errors" -import OAuthToken from "../domain/oAuthToken/OAuthToken" -import IOAuthTokenRefresher from "../domain/oAuthToken/IOAuthTokenRefresher" +import { OAuthToken, IOAuthTokenRefresher } from "../domain" export interface GitHubOAuthTokenRefresherConfig { readonly clientId: string diff --git a/src/features/auth/data/index.ts b/src/features/auth/data/index.ts new file mode 100644 index 00000000..91e3b14e --- /dev/null +++ b/src/features/auth/data/index.ts @@ -0,0 +1,2 @@ +export { default as Auth0RefreshTokenReader } from "./Auth0RefreshTokenReader" +export { default as GitHubOAuthTokenRefresher } from "./GitHubOAuthTokenRefresher" diff --git a/src/features/auth/domain/accessToken/index.ts b/src/features/auth/domain/accessToken/index.ts new file mode 100644 index 00000000..f23b4d05 --- /dev/null +++ b/src/features/auth/domain/accessToken/index.ts @@ -0,0 +1,4 @@ +export { default as AccessTokenService } from "./AccessTokenService" +export type { default as IAccessTokenService } from "./IAccessTokenService" +export { default as LockingAccessTokenService } from "./LockingAccessTokenService" +export { default as OnlyStaleRefreshingAccessTokenService } from "./OnlyStaleRefreshingAccessTokenService" diff --git a/src/features/auth/domain/credentialsTransfer/index.ts b/src/features/auth/domain/credentialsTransfer/index.ts new file mode 100644 index 00000000..d59f555e --- /dev/null +++ b/src/features/auth/domain/credentialsTransfer/index.ts @@ -0,0 +1,2 @@ +export { default as CredentialsTransferrer } from "./CredentialsTransferrer" +export type { default as ICredentialsTransferrer } from "./ICredentialsTransferrer" diff --git a/src/features/auth/domain/index.ts b/src/features/auth/domain/index.ts new file mode 100644 index 00000000..bf537f9c --- /dev/null +++ b/src/features/auth/domain/index.ts @@ -0,0 +1,5 @@ +export * from "./accessToken" +export * from "./credentialsTransfer" +export * from "./logIn" +export * from "./logOut" +export * from "./oAuthToken" diff --git a/src/features/auth/domain/logIn/index.ts b/src/features/auth/domain/logIn/index.ts new file mode 100644 index 00000000..47d8d206 --- /dev/null +++ b/src/features/auth/domain/logIn/index.ts @@ -0,0 +1,2 @@ +export { default as CredentialsTransferringLogInHandler } from "./CredentialsTransferringLogInHandler" +export type { default as ILogInHandler } from "./ILogInHandler" diff --git a/src/features/auth/domain/logOut/index.ts b/src/features/auth/domain/logOut/index.ts new file mode 100644 index 00000000..ad96e5ac --- /dev/null +++ b/src/features/auth/domain/logOut/index.ts @@ -0,0 +1,4 @@ +export { default as CompositeLogOutHandler } from "./CompositeLogOutHandler" +export { default as ErrorIgnoringLogOutHandler } from "./ErrorIgnoringLogOutHandler" +export type { default as ILogOutHandler } from "./ILogOutHandler" +export { default as UserDataCleanUpLogOutHandler } from "./UserDataCleanUpLogOutHandler" diff --git a/src/features/auth/domain/oAuthToken/index.ts b/src/features/auth/domain/oAuthToken/index.ts new file mode 100644 index 00000000..2eae1ad1 --- /dev/null +++ b/src/features/auth/domain/oAuthToken/index.ts @@ -0,0 +1,4 @@ +export type { default as IOAuthTokenRefresher } from "./IOAuthTokenRefresher" +export type { default as IOAuthTokenRepository } from "./IOAuthTokenRepository" +export type { default as OAuthToken } from "./OAuthToken" +export { default as OAuthTokenRepository } from "./OAuthTokenRepository" diff --git a/src/features/docs/view/DocumentationViewer.tsx b/src/features/docs/view/DocumentationViewer.tsx index de3d4de1..ee8a77bb 100644 --- a/src/features/docs/view/DocumentationViewer.tsx +++ b/src/features/docs/view/DocumentationViewer.tsx @@ -2,7 +2,7 @@ import Redocly from "./Redocly" import Swagger from "./Swagger" -import DocumentationVisualizer from "@/features/settings/domain/DocumentationVisualizer" +import { DocumentationVisualizer } from "@/features/settings/domain" const DocumentationViewer = ({ visualizer, diff --git a/src/features/hooks/data/GitHubHookHandler.ts b/src/features/hooks/data/GitHubHookHandler.ts index d8ec1fc0..16ff71b7 100644 --- a/src/features/hooks/data/GitHubHookHandler.ts +++ b/src/features/hooks/data/GitHubHookHandler.ts @@ -1,6 +1,6 @@ import { NextRequest } from "next/server" import { Webhooks, EmitterWebhookEventName } from "@octokit/webhooks" -import IPullRequestEventHandler from "../domain/IPullRequestEventHandler" +import { IPullRequestEventHandler } from "../domain" interface GitHubHookHandlerConfig { readonly secret: string diff --git a/src/features/hooks/data/index.ts b/src/features/hooks/data/index.ts new file mode 100644 index 00000000..3e641922 --- /dev/null +++ b/src/features/hooks/data/index.ts @@ -0,0 +1,2 @@ +export { default as GitHubHookHandler } from "./GitHubHookHandler" +export { default as GitHubPullRequestCommentRepository } from "./GitHubPullRequestCommentRepository" \ No newline at end of file diff --git a/src/features/hooks/domain/index.ts b/src/features/hooks/domain/index.ts new file mode 100644 index 00000000..5bc8aa4a --- /dev/null +++ b/src/features/hooks/domain/index.ts @@ -0,0 +1,6 @@ +export { default as ExistingCommentCheckingPullRequestEventHandler } from "./ExistingCommentCheckingPullRequestEventHandler" +export { default as GitHubCommentFactory } from "./GitHubCommentFactory" +export type { default as IPullRequestCommentRepository } from "./IPullRequestCommentRepository" +export type { default as IPullRequestEventHandler } from "./IPullRequestEventHandler" +export { default as PostCommentPullRequestEventHandler } from "./PostCommentPullRequestEventHandler" +export { default as RepositoryNameCheckingPullRequestEventHandler } from "./RepositoryNameCheckingPullRequestEventHandler" diff --git a/src/features/projects/data/GitHubProjectDataSource.ts b/src/features/projects/data/GitHubProjectDataSource.ts index 60db94d4..a66a6f27 100644 --- a/src/features/projects/data/GitHubProjectDataSource.ts +++ b/src/features/projects/data/GitHubProjectDataSource.ts @@ -1,9 +1,11 @@ import IGitHubClient from "@/common/github/IGitHubClient" -import Project from "../domain/Project" -import IProjectConfig from "../domain/IProjectConfig" -import IProjectDataSource from "../domain/IProjectDataSource" -import Version from "../domain/Version" -import ProjectConfigParser from "../domain/ProjectConfigParser" +import { + Project, + IProjectConfig, + IProjectDataSource, + Version, + ProjectConfigParser +} from "../domain" type SearchResult = { readonly name: string diff --git a/src/features/projects/data/index.ts b/src/features/projects/data/index.ts new file mode 100644 index 00000000..8199a31a --- /dev/null +++ b/src/features/projects/data/index.ts @@ -0,0 +1,2 @@ +export { default as GitHubProjectDataSource } from "./GitHubProjectDataSource" +export { default as useProjects } from "./useProjects" diff --git a/src/features/projects/data/useProjects.ts b/src/features/projects/data/useProjects.ts index 5e1455cb..d0291c57 100644 --- a/src/features/projects/data/useProjects.ts +++ b/src/features/projects/data/useProjects.ts @@ -1,6 +1,6 @@ import useSWR from "swr" import fetcher from "@/common/utils/fetcher" -import Project from "../domain/Project" +import { Project } from "../domain" type ProjectContainer = { projects: Project[] } diff --git a/src/features/projects/domain/ProjectRepository.ts b/src/features/projects/domain/ProjectRepository.ts index 356c4a53..1fb96b0c 100644 --- a/src/features/projects/domain/ProjectRepository.ts +++ b/src/features/projects/domain/ProjectRepository.ts @@ -1,6 +1,4 @@ -import ZodJSONCoder from "@/common/utils/ZodJSONCoder" -import ISession from "@/common/session/ISession" -import IUserDataRepository from "@/common/userData/IUserDataRepository" +import { ZodJSONCoder, ISession, IUserDataRepository } from "../../../common" import IProjectRepository from "./IProjectRepository" import Project, { ProjectSchema } from "./Project" diff --git a/src/features/projects/domain/SessionValidatingProjectDataSource.ts b/src/features/projects/domain/SessionValidatingProjectDataSource.ts index 942d0859..0cb8c8c4 100644 --- a/src/features/projects/domain/SessionValidatingProjectDataSource.ts +++ b/src/features/projects/domain/SessionValidatingProjectDataSource.ts @@ -1,7 +1,5 @@ -import { InvalidSessionError } from "../../../common/errors" -import ISessionValidator from "@/common/session/ISessionValidator" -import IProjectDataSource from "../domain/IProjectDataSource" -import Project from "../domain/Project" +import { ISessionValidator, InvalidSessionError } from "../../../common" +import { IProjectDataSource ,Project } from "../domain" export default class SessionValidatingProjectDataSource implements IProjectDataSource { private readonly sessionValidator: ISessionValidator diff --git a/src/features/projects/domain/index.ts b/src/features/projects/domain/index.ts new file mode 100644 index 00000000..c70203d7 --- /dev/null +++ b/src/features/projects/domain/index.ts @@ -0,0 +1,12 @@ +export { default as CachingProjectDataSource } from "./CachingProjectDataSource" +export { default as getSelection } from "./getSelection" +export type { default as IProjectConfig } from "./IProjectConfig" +export type { default as IProjectDataSource } from "./IProjectDataSource" +export type { default as OpenApiSpecification } from "./OpenApiSpecification" +export type { default as Project } from "./Project" +export { default as ProjectConfigParser } from "./ProjectConfigParser" +export { default as projectNavigator } from "./projectNavigator" +export { default as ProjectRepository } from "./ProjectRepository" +export { default as SessionValidatingProjectDataSource } from "./SessionValidatingProjectDataSource" +export { default as updateWindowTitle } from "./updateWindowTitle" +export type { default as Version } from "./Version" diff --git a/src/features/projects/view/Documentation.tsx b/src/features/projects/view/Documentation.tsx index 37d86fba..0d80f774 100644 --- a/src/features/projects/view/Documentation.tsx +++ b/src/features/projects/view/Documentation.tsx @@ -1,7 +1,7 @@ import DocumentationViewer from "@/features/docs/view/DocumentationViewer" import DocumentationIframe from "./DocumentationIframe" -import DocumentationVisualizer from "@/features/settings/domain/DocumentationVisualizer" -import useDocumentationVisualizer from "@/features/settings/data/useDocumentationVisualizer" +import { DocumentationVisualizer } from "@/features/settings/domain" +import { useDocumentationVisualizer } from "@/features/settings/data" const Documentation = ({ url }: { url: string }) => { const [visualizer] = useDocumentationVisualizer() diff --git a/src/features/projects/view/DocumentationIframe.tsx b/src/features/projects/view/DocumentationIframe.tsx index 39ff1363..788601f4 100644 --- a/src/features/projects/view/DocumentationIframe.tsx +++ b/src/features/projects/view/DocumentationIframe.tsx @@ -1,6 +1,6 @@ import { Box } from "@mui/material" import DelayedLoadingIndicator from "@/common/loading/DelayedLoadingIndicator" -import DocumentationVisualizer from "@/features/settings/domain/DocumentationVisualizer" +import { DocumentationVisualizer } from "@/features/settings/domain" const DocumentationIframe = ({ visualizer, diff --git a/src/features/projects/view/MainContent.tsx b/src/features/projects/view/MainContent.tsx index 53bfeadb..df22698d 100644 --- a/src/features/projects/view/MainContent.tsx +++ b/src/features/projects/view/MainContent.tsx @@ -1,6 +1,4 @@ -import Project from "../domain/Project" -import Version from "../domain/Version" -import OpenApiSpecification from "../domain/OpenApiSpecification" +import { Project, Version, OpenApiSpecification } from "../domain" import DelayedLoadingIndicator from "@/common/loading/DelayedLoadingIndicator" import ErrorMessage from "./ErrorMessage" import Documentation from "./Documentation" diff --git a/src/features/projects/view/ProjectAvatar.tsx b/src/features/projects/view/ProjectAvatar.tsx index 563ca69e..2a6056d6 100644 --- a/src/features/projects/view/ProjectAvatar.tsx +++ b/src/features/projects/view/ProjectAvatar.tsx @@ -1,7 +1,7 @@ import { SxProps } from "@mui/system" import { Avatar, Box } from "@mui/material" import { alpha, useTheme } from "@mui/material/styles" -import Project from "../domain/Project" +import { Project } from "../domain" import ProjectAvatarSquircleClip from "./ProjectAvatarSquircleClip" function ProjectAvatar({ diff --git a/src/features/projects/view/ProjectList.tsx b/src/features/projects/view/ProjectList.tsx index f7710e7e..30fb06ad 100644 --- a/src/features/projects/view/ProjectList.tsx +++ b/src/features/projects/view/ProjectList.tsx @@ -1,7 +1,7 @@ import { List, Box, Typography } from "@mui/material" import ProjectListItem from "./ProjectListItem" import ProjectListItemPlaceholder from "./ProjectListItemPlaceholder" -import Project from "../domain/Project" +import { Project } from "../domain" interface ProjectListProps { readonly isLoading: boolean diff --git a/src/features/projects/view/ProjectListItem.tsx b/src/features/projects/view/ProjectListItem.tsx index b90ca1c7..c9472256 100644 --- a/src/features/projects/view/ProjectListItem.tsx +++ b/src/features/projects/view/ProjectListItem.tsx @@ -6,7 +6,7 @@ import { Typography } from "@mui/material" import MenuItemHover from "@/common/ui/MenuItemHover" -import Project from "../domain/Project" +import { Project } from "../domain" import ProjectAvatar from "./ProjectAvatar" const ProjectListItem = ({ diff --git a/src/features/projects/view/ProjectsPage.tsx b/src/features/projects/view/ProjectsPage.tsx index d4369eac..d01941f6 100644 --- a/src/features/projects/view/ProjectsPage.tsx +++ b/src/features/projects/view/ProjectsPage.tsx @@ -1,4 +1,4 @@ -import ProjectRepository from "../domain/ProjectRepository" +import { ProjectRepository } from "../domain" import ClientProjectsPage from "./client/ProjectsPage" export default async function ProjectsPage({ diff --git a/src/features/projects/view/client/ProjectsPage.tsx b/src/features/projects/view/client/ProjectsPage.tsx index 41d73044..23491848 100644 --- a/src/features/projects/view/client/ProjectsPage.tsx +++ b/src/features/projects/view/client/ProjectsPage.tsx @@ -5,15 +5,12 @@ import { useRouter } from "next/navigation" import { useTheme } from "@mui/material/styles" import useMediaQuery from "@mui/material/useMediaQuery" import SidebarContainer from "@/features/sidebar/view/client/SidebarContainer" -import Project from "../../domain/Project" +import { useProjects } from "../../data" +import { Project, getSelection, projectNavigator, updateWindowTitle } from "../../domain" import ProjectList from "../ProjectList" import MainContent from "../MainContent" import MobileToolbar from "../toolbar/MobileToolbar" import TrailingToolbarItem from "../toolbar/TrailingToolbarItem" -import getSelection from "../../domain/getSelection" -import projectNavigator from "../../domain/projectNavigator" -import updateWindowTitle from "../../domain/updateWindowTitle" -import useProjects from "../../data/useProjects" import useSidebarOpen from "@/common/state/useSidebarOpen" export default function ProjectsPage({ diff --git a/src/features/projects/view/toolbar/MobileToolbar.tsx b/src/features/projects/view/toolbar/MobileToolbar.tsx index fd92f57d..2564fb92 100644 --- a/src/features/projects/view/toolbar/MobileToolbar.tsx +++ b/src/features/projects/view/toolbar/MobileToolbar.tsx @@ -1,7 +1,5 @@ import { Stack } from "@mui/material" -import Project from "../../domain/Project" -import Version from "../../domain/Version" -import OpenApiSpecification from "../../domain/OpenApiSpecification" +import { Project, Version, OpenApiSpecification } from "../../domain" import VersionSelector from "./VersionSelector" import SpecificationSelector from "./SpecificationSelector" diff --git a/src/features/projects/view/toolbar/SpecificationSelector.tsx b/src/features/projects/view/toolbar/SpecificationSelector.tsx index 543e0e3c..c08aba1d 100644 --- a/src/features/projects/view/toolbar/SpecificationSelector.tsx +++ b/src/features/projects/view/toolbar/SpecificationSelector.tsx @@ -1,7 +1,7 @@ import { SxProps } from "@mui/system" import { SelectChangeEvent, Select, MenuItem, FormControl } from "@mui/material" import MenuItemHover from "@/common/ui/MenuItemHover" -import OpenApiSpecification from "../../domain/OpenApiSpecification" +import { OpenApiSpecification } from "../../domain" const SpecificationSelector = ({ specifications, diff --git a/src/features/projects/view/toolbar/TrailingToolbarItem.tsx b/src/features/projects/view/toolbar/TrailingToolbarItem.tsx index 96e44c12..fa6c8218 100644 --- a/src/features/projects/view/toolbar/TrailingToolbarItem.tsx +++ b/src/features/projects/view/toolbar/TrailingToolbarItem.tsx @@ -1,8 +1,6 @@ import { SxProps } from "@mui/system" import { Stack, IconButton, Typography, Link } from "@mui/material" -import Project from "../../domain/Project" -import Version from "../../domain/Version" -import OpenApiSpecification from "../../domain/OpenApiSpecification" +import { Project, Version, OpenApiSpecification } from "../../domain" import VersionSelector from "./VersionSelector" import SpecificationSelector from "./SpecificationSelector" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" diff --git a/src/features/projects/view/toolbar/VersionSelector.tsx b/src/features/projects/view/toolbar/VersionSelector.tsx index 8a47108c..d8cdc8fc 100644 --- a/src/features/projects/view/toolbar/VersionSelector.tsx +++ b/src/features/projects/view/toolbar/VersionSelector.tsx @@ -1,7 +1,7 @@ import { SxProps } from "@mui/system" import { Select, MenuItem, SelectChangeEvent, FormControl } from "@mui/material" import MenuItemHover from "@/common/ui/MenuItemHover" -import Version from "../../domain/Version" +import { Version } from "../../domain" const VersionSelector = ({ versions, diff --git a/src/features/settings/data/index.ts b/src/features/settings/data/index.ts new file mode 100644 index 00000000..f2b25c73 --- /dev/null +++ b/src/features/settings/data/index.ts @@ -0,0 +1 @@ +export { default as useDocumentationVisualizer } from "./useDocumentationVisualizer" diff --git a/src/features/settings/data/useDocumentationVisualizer.ts b/src/features/settings/data/useDocumentationVisualizer.ts index dcd8c2ba..60816461 100644 --- a/src/features/settings/data/useDocumentationVisualizer.ts +++ b/src/features/settings/data/useDocumentationVisualizer.ts @@ -1,5 +1,5 @@ import { useLocalStorage } from "usehooks-ts" -import DocumentationVisualizer from "@/features/settings/domain/DocumentationVisualizer" +import { DocumentationVisualizer } from "@/features/settings/domain" export default function useDocumentationVisualizer() { return useLocalStorage("documentationVisualizer", DocumentationVisualizer.SWAGGER) diff --git a/src/features/settings/domain/index.ts b/src/features/settings/domain/index.ts new file mode 100644 index 00000000..52b4e3b0 --- /dev/null +++ b/src/features/settings/domain/index.ts @@ -0,0 +1 @@ +export { default as DocumentationVisualizer } from "./DocumentationVisualizer" diff --git a/src/features/user/view/DocumentationVisualizationPicker.tsx b/src/features/user/view/DocumentationVisualizationPicker.tsx index c136187d..89660b66 100644 --- a/src/features/user/view/DocumentationVisualizationPicker.tsx +++ b/src/features/user/view/DocumentationVisualizationPicker.tsx @@ -2,8 +2,8 @@ import { SxProps } from "@mui/system" import { FormControl, Select, MenuItem, SelectChangeEvent } from "@mui/material" import MenuItemHover from "@/common/ui/MenuItemHover" import { softPaperSx } from "@/common/theme/theme" -import DocumentationVisualizer from "@/features/settings/domain/DocumentationVisualizer" -import useDocumentationVisualizer from "@/features/settings/data/useDocumentationVisualizer" +import { DocumentationVisualizer } from "@/features/settings/domain" +import { useDocumentationVisualizer } from "@/features/settings/data" const DocumentationVisualizationPicker = ({ sx From 77b450b11fea32ac59c382aafa6a79ac59c0850d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=B8vring?= Date: Tue, 7 Nov 2023 21:52:50 +0100 Subject: [PATCH 2/3] Fixes imports --- src/common/utils/index.ts | 4 ++-- src/features/projects/data/useProjects.ts | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/common/utils/index.ts b/src/common/utils/index.ts index c1c3b303..33352dd4 100644 --- a/src/common/utils/index.ts +++ b/src/common/utils/index.ts @@ -1,4 +1,4 @@ -export type * from "./fetcher" -export type { default as fetcher } from "./fetcher" +export * from "./fetcher" +export { default as fetcher } from "./fetcher" export * from "./url" export { default as ZodJSONCoder } from "./ZodJSONCoder" diff --git a/src/features/projects/data/useProjects.ts b/src/features/projects/data/useProjects.ts index d0291c57..a0b2cb16 100644 --- a/src/features/projects/data/useProjects.ts +++ b/src/features/projects/data/useProjects.ts @@ -1,5 +1,7 @@ +"use client" + import useSWR from "swr" -import fetcher from "@/common/utils/fetcher" +import { fetcher } from "@/common" import { Project } from "../domain" type ProjectContainer = { projects: Project[] } From 97d97834edbb75a86983a3da3b9dedaa999afe96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=B8vring?= Date: Tue, 7 Nov 2023 21:53:22 +0100 Subject: [PATCH 3/3] Isolates dangerous impors --- src/common/keyValueStore/index.ts | 1 - src/common/mutex/index.ts | 1 - src/common/session/index.ts | 1 - src/composition.ts | 7 ++++--- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/common/keyValueStore/index.ts b/src/common/keyValueStore/index.ts index 23ca54d7..83b752dd 100644 --- a/src/common/keyValueStore/index.ts +++ b/src/common/keyValueStore/index.ts @@ -1,2 +1 @@ export type { default as IKeyValueStore } from "./IKeyValueStore" -export { default as RedisKeyValueStore } from "./RedisKeyValueStore" diff --git a/src/common/mutex/index.ts b/src/common/mutex/index.ts index 0e047424..e8631c9d 100644 --- a/src/common/mutex/index.ts +++ b/src/common/mutex/index.ts @@ -1,6 +1,5 @@ export type { default as IKeyedMutexFactory } from "./IKeyedMutexFactory" export type { default as IMutex } from "./IMutex" export type { default as IMutexFactory } from "./IMutexFactory" -export { default as RedisKeyedMutexFactory } from "./RedisKeyedMutexFactory" export { default as SessionMutexFactory } from "./SessionMutexFactory" export { default as withMutex } from "./withMutex" diff --git a/src/common/session/index.ts b/src/common/session/index.ts index 367da4a6..5e920e71 100644 --- a/src/common/session/index.ts +++ b/src/common/session/index.ts @@ -1,4 +1,3 @@ -export { default as Auth0Session } from "./Auth0Session" export { default as GitHubOrganizationSessionValidator } from "./GitHubOrganizationSessionValidator" export type { default as ISession } from "./ISession" export type { default as ISessionValidator } from "./ISessionValidator" diff --git a/src/composition.ts b/src/composition.ts index 4f3d771b..3b37f929 100644 --- a/src/composition.ts +++ b/src/composition.ts @@ -1,11 +1,12 @@ +import Auth0Session from "@/common/session/Auth0Session" +import RedisKeyedMutexFactory from "@/common/mutex/RedisKeyedMutexFactory" +import RedisKeyValueStore from "@/common/keyValueStore/RedisKeyValueStore" + import { AccessTokenRefreshingGitHubClient, - Auth0Session, GitHubClient, GitHubOrganizationSessionValidator, KeyValueUserDataRepository, - RedisKeyedMutexFactory, - RedisKeyValueStore, SessionMutexFactory } from "@/common" import {