From 0962884ebd063f3ea1e5a3d2dd086d4b7840b5bf Mon Sep 17 00:00:00 2001 From: Erik Engervall Date: Sat, 17 Apr 2021 13:22:29 +0200 Subject: [PATCH] Prettifying Signed-off-by: Erik Engervall --- .../src/GitHubReleaseManager.tsx | 24 +- .../src/api/PluginApiClient.ts | 588 +++++++++--------- 2 files changed, 306 insertions(+), 306 deletions(-) diff --git a/plugins/github-release-manager/src/GitHubReleaseManager.tsx b/plugins/github-release-manager/src/GitHubReleaseManager.tsx index cde0a846d3..e0b8df26cd 100644 --- a/plugins/github-release-manager/src/GitHubReleaseManager.tsx +++ b/plugins/github-release-manager/src/GitHubReleaseManager.tsx @@ -20,30 +20,30 @@ import { Alert } from '@material-ui/lab'; import { makeStyles } from '@material-ui/core'; import { useApi, ContentHeader, ErrorBoundary } from '@backstage/core'; -import { CreateRc } from './cards/createRc/CreateRc'; -import { getGitHubBatchInfo } from './sideEffects/getGitHubBatchInfo'; -import { Info } from './cards/info/Info'; -import { Patch } from './cards/patchRc/Patch'; import { ComponentConfigCreateRc, ComponentConfigPatch, ComponentConfigPromoteRc, } from './types/types'; -import { PromoteRc } from './cards/promoteRc/PromoteRc'; -import { githubReleaseManagerApiRef } from './api/serviceApiRef'; import { PluginApiClientContext, usePluginApiClientContext, } from './contexts/PluginApiClientContext'; -import { ProjectContext, Project } from './contexts/ProjectContext'; -import { isProjectValid } from './cards/projectForm/isProjectValid'; -import { InfoCardPlus } from './components/InfoCardPlus'; -import { RepoDetailsForm } from './cards/projectForm/RepoDetailsForm'; import { CenteredCircularProgress } from './components/CenteredCircularProgress'; -import { useVersioningStrategyMatchesRepoTags } from './helpers/useVersioningStrategyMatchesRepoTags'; -import { useQuery } from './helpers/useQuery'; +import { CreateRc } from './cards/createRc/CreateRc'; +import { getGitHubBatchInfo } from './sideEffects/getGitHubBatchInfo'; import { getParsedQuery } from './helpers/getNewQueryParams'; +import { githubReleaseManagerApiRef } from './api/serviceApiRef'; +import { Info } from './cards/info/Info'; +import { InfoCardPlus } from './components/InfoCardPlus'; +import { isProjectValid } from './cards/projectForm/isProjectValid'; +import { Patch } from './cards/patchRc/Patch'; +import { ProjectContext, Project } from './contexts/ProjectContext'; +import { PromoteRc } from './cards/promoteRc/PromoteRc'; import { RefetchContext } from './contexts/RefetchContext'; +import { RepoDetailsForm } from './cards/projectForm/RepoDetailsForm'; +import { useQuery } from './helpers/useQuery'; +import { useVersioningStrategyMatchesRepoTags } from './helpers/useVersioningStrategyMatchesRepoTags'; interface GitHubReleaseManagerProps { components?: { diff --git a/plugins/github-release-manager/src/api/PluginApiClient.ts b/plugins/github-release-manager/src/api/PluginApiClient.ts index 13fc30dc43..4acad86375 100644 --- a/plugins/github-release-manager/src/api/PluginApiClient.ts +++ b/plugins/github-release-manager/src/api/PluginApiClient.ts @@ -24,300 +24,6 @@ import { getRcGitHubInfo } from '../cards/createRc/getRcGitHubInfo'; import { Project } from '../contexts/ProjectContext'; import { SemverTagParts } from '../helpers/tagParts/getSemverTagParts'; -type UnboxPromise> = T extends Promise - ? U - : never; - -type UnboxReturnedPromise< - T extends (...args: any) => Promise -> = UnboxPromise>; - -type UnboxArray = T extends (infer U)[] ? U : T; - -type OwnerRepo = { - owner: Project['owner']; - repo: Project['repo']; -}; - -type GetHost = () => string; - -type GetRepoPath = (args: OwnerRepo) => string; - -type GetOwners = () => Promise<{ - owners: string[]; -}>; -export type GetOwnersResult = UnboxReturnedPromise; - -type GetRepositories = (args: { - owner: string; -}) => Promise<{ - repositories: string[]; -}>; -export type GetRepositoriesResult = UnboxReturnedPromise; - -type GetUsername = ( - args: OwnerRepo, -) => Promise<{ - username: string; -}>; -export type GetUsernameResult = UnboxReturnedPromise; - -type GetRecentCommits = ( - args: { - releaseBranchName?: string; - } & OwnerRepo, -) => Promise< - { - htmlUrl: string; - sha: string; - author: { - htmlUrl?: string; - login?: string; - }; - commit: { - message: string; - }; - firstParentSha?: string; - }[] ->; -export type GetRecentCommitsResult = UnboxReturnedPromise; -export type GetRecentCommitsResultSingle = UnboxArray; - -type GetLatestRelease = ( - args: OwnerRepo, -) => Promise<{ - targetCommitish: string; - tagName: string; - prerelease: boolean; - id: number; - htmlUrl: string; - body?: string | null; -} | null>; -export type GetLatestReleaseResult = UnboxReturnedPromise; - -type GetRepository = ( - args: OwnerRepo, -) => Promise<{ - pushPermissions: boolean | undefined; - defaultBranch: string; - name: string; -}>; -export type GetRepositoryResult = UnboxReturnedPromise; - -type GetLatestCommit = ( - args: { - defaultBranch: string; - } & OwnerRepo, -) => Promise<{ - sha: string; - htmlUrl: string; - commit: { - message: string; - }; -}>; -export type GetLatestCommitResult = UnboxReturnedPromise; - -type GetBranch = ( - args: { - branchName: string; - } & OwnerRepo, -) => Promise<{ - name: string; - links: { - html: string; - }; - commit: { - sha: string; - commit: { - tree: { - sha: string; - }; - }; - }; -}>; -export type GetBranchResult = UnboxReturnedPromise; - -type CreateRef = ( - args: { - mostRecentSha: string; - targetBranch: string; - } & OwnerRepo, -) => Promise<{ - ref: string; -}>; -export type CreateRefResult = UnboxReturnedPromise; - -type GetComparison = ( - args: { - previousReleaseBranch: string; - nextReleaseBranch: string; - } & OwnerRepo, -) => Promise<{ - htmlUrl: string; - aheadBy: number; -}>; -export type GetComparisonResult = UnboxReturnedPromise; - -type CreateRelease = ( - args: { - nextGitHubInfo: ReturnType; - releaseBody: string; - } & OwnerRepo, -) => Promise<{ - name: string | null; - htmlUrl: string; - tagName: string; -}>; -export type CreateReleaseResult = UnboxReturnedPromise; - -type CreateTempCommit = ( - args: { - tagParts: SemverTagParts | CalverTagParts; - releaseBranchTree: string; - selectedPatchCommit: UnboxArray< - UnboxReturnedPromise - >; - } & OwnerRepo, -) => Promise<{ - message: string; - sha: string; -}>; -export type CreateTempCommitResult = UnboxReturnedPromise; - -type ForceBranchHeadToTempCommit = ( - args: { - releaseBranchName: string; - tempCommit: CreateTempCommitResult; - } & OwnerRepo, -) => Promise; -export type ForceBranchHeadToTempCommitResult = UnboxReturnedPromise; - -type Merge = ({ - base, - head, -}: { - base: string; - head: string; -} & OwnerRepo) => Promise<{ - htmlUrl: string; - commit: { - message: string; - tree: { - sha: string; - }; - }; -}>; -export type MergeResult = UnboxReturnedPromise; - -type CreateCherryPickCommit = ( - args: { - bumpedTag: string; - selectedPatchCommit: UnboxArray< - UnboxReturnedPromise - >; - mergeTree: string; - releaseBranchSha: string; - } & OwnerRepo, -) => Promise<{ - message: string; - sha: string; -}>; -export type CreateCherryPickCommitResult = UnboxReturnedPromise; - -type ReplaceTempCommit = ( - args: { - releaseBranchName: string; - cherryPickCommit: UnboxReturnedPromise< - IPluginApiClient['patch']['createCherryPickCommit'] - >; - } & OwnerRepo, -) => Promise<{ - ref: string; - object: { - sha: string; - }; -}>; -export type ReplaceTempCommitResult = UnboxReturnedPromise; - -type CreateTagObject = ({ - bumpedTag, - updatedReference, -}: { - bumpedTag: string; - updatedReference: ReplaceTempCommitResult; -} & OwnerRepo) => Promise<{ - tag: string; - sha: string; -}>; -export type CreateTagObjectResult = UnboxReturnedPromise; - -type CreateReference = ( - args: { - bumpedTag: string; - createdTagObject: CreateTagObjectResult; - } & OwnerRepo, -) => Promise<{ - ref: string; -}>; -export type CreateReferenceResult = UnboxReturnedPromise; - -type UpdateRelease = ( - args: { - bumpedTag: string; - latestRelease: NonNullable; - tagParts: SemverTagParts | CalverTagParts; - selectedPatchCommit: GetRecentCommitsResultSingle; - } & OwnerRepo, -) => Promise<{ - name: string | null; - tagName: string; - htmlUrl: string; -}>; -export type UpdateReleaseResult = UnboxReturnedPromise; - -type PromoteRelease = ( - args: { - releaseId: NonNullable['id']; - releaseVersion: string; - } & OwnerRepo, -) => Promise<{ - name: string | null; - tagName: string; - htmlUrl: string; -}>; -export type PromoteReleaseResult = UnboxReturnedPromise; - -export interface IPluginApiClient { - getHost: GetHost; - getRepoPath: GetRepoPath; - getOwners: GetOwners; - getRepositories: GetRepositories; - getUsername: GetUsername; - getRecentCommits: GetRecentCommits; - getLatestRelease: GetLatestRelease; - getRepository: GetRepository; - getLatestCommit: GetLatestCommit; - getBranch: GetBranch; - createRc: { - createRef: CreateRef; - getComparison: GetComparison; - createRelease: CreateRelease; - }; - patch: { - createTempCommit: CreateTempCommit; - forceBranchHeadToTempCommit: ForceBranchHeadToTempCommit; - merge: Merge; - createCherryPickCommit: CreateCherryPickCommit; - replaceTempCommit: ReplaceTempCommit; - createTagObject: CreateTagObject; - createReference: CreateReference; - updateRelease: UpdateRelease; - }; - promoteRc: { - promoteRelease: PromoteRelease; - }; -} - export class PluginApiClient implements IPluginApiClient { private readonly githubAuthApi: OAuthApi; private readonly baseUrl: string; @@ -855,3 +561,297 @@ ${selectedPatchCommit.commit.message}`, }, }; } + +type UnboxPromise> = T extends Promise + ? U + : never; + +type UnboxReturnedPromise< + T extends (...args: any) => Promise +> = UnboxPromise>; + +type UnboxArray = T extends (infer U)[] ? U : T; + +type OwnerRepo = { + owner: Project['owner']; + repo: Project['repo']; +}; + +type GetHost = () => string; + +type GetRepoPath = (args: OwnerRepo) => string; + +type GetOwners = () => Promise<{ + owners: string[]; +}>; +export type GetOwnersResult = UnboxReturnedPromise; + +type GetRepositories = (args: { + owner: string; +}) => Promise<{ + repositories: string[]; +}>; +export type GetRepositoriesResult = UnboxReturnedPromise; + +type GetUsername = ( + args: OwnerRepo, +) => Promise<{ + username: string; +}>; +export type GetUsernameResult = UnboxReturnedPromise; + +type GetRecentCommits = ( + args: { + releaseBranchName?: string; + } & OwnerRepo, +) => Promise< + { + htmlUrl: string; + sha: string; + author: { + htmlUrl?: string; + login?: string; + }; + commit: { + message: string; + }; + firstParentSha?: string; + }[] +>; +export type GetRecentCommitsResult = UnboxReturnedPromise; +export type GetRecentCommitsResultSingle = UnboxArray; + +type GetLatestRelease = ( + args: OwnerRepo, +) => Promise<{ + targetCommitish: string; + tagName: string; + prerelease: boolean; + id: number; + htmlUrl: string; + body?: string | null; +} | null>; +export type GetLatestReleaseResult = UnboxReturnedPromise; + +type GetRepository = ( + args: OwnerRepo, +) => Promise<{ + pushPermissions: boolean | undefined; + defaultBranch: string; + name: string; +}>; +export type GetRepositoryResult = UnboxReturnedPromise; + +type GetLatestCommit = ( + args: { + defaultBranch: string; + } & OwnerRepo, +) => Promise<{ + sha: string; + htmlUrl: string; + commit: { + message: string; + }; +}>; +export type GetLatestCommitResult = UnboxReturnedPromise; + +type GetBranch = ( + args: { + branchName: string; + } & OwnerRepo, +) => Promise<{ + name: string; + links: { + html: string; + }; + commit: { + sha: string; + commit: { + tree: { + sha: string; + }; + }; + }; +}>; +export type GetBranchResult = UnboxReturnedPromise; + +type CreateRef = ( + args: { + mostRecentSha: string; + targetBranch: string; + } & OwnerRepo, +) => Promise<{ + ref: string; +}>; +export type CreateRefResult = UnboxReturnedPromise; + +type GetComparison = ( + args: { + previousReleaseBranch: string; + nextReleaseBranch: string; + } & OwnerRepo, +) => Promise<{ + htmlUrl: string; + aheadBy: number; +}>; +export type GetComparisonResult = UnboxReturnedPromise; + +type CreateRelease = ( + args: { + nextGitHubInfo: ReturnType; + releaseBody: string; + } & OwnerRepo, +) => Promise<{ + name: string | null; + htmlUrl: string; + tagName: string; +}>; +export type CreateReleaseResult = UnboxReturnedPromise; + +type CreateTempCommit = ( + args: { + tagParts: SemverTagParts | CalverTagParts; + releaseBranchTree: string; + selectedPatchCommit: UnboxArray< + UnboxReturnedPromise + >; + } & OwnerRepo, +) => Promise<{ + message: string; + sha: string; +}>; +export type CreateTempCommitResult = UnboxReturnedPromise; + +type ForceBranchHeadToTempCommit = ( + args: { + releaseBranchName: string; + tempCommit: CreateTempCommitResult; + } & OwnerRepo, +) => Promise; +export type ForceBranchHeadToTempCommitResult = UnboxReturnedPromise; + +type Merge = ({ + base, + head, +}: { + base: string; + head: string; +} & OwnerRepo) => Promise<{ + htmlUrl: string; + commit: { + message: string; + tree: { + sha: string; + }; + }; +}>; +export type MergeResult = UnboxReturnedPromise; + +type CreateCherryPickCommit = ( + args: { + bumpedTag: string; + selectedPatchCommit: UnboxArray< + UnboxReturnedPromise + >; + mergeTree: string; + releaseBranchSha: string; + } & OwnerRepo, +) => Promise<{ + message: string; + sha: string; +}>; +export type CreateCherryPickCommitResult = UnboxReturnedPromise; + +type ReplaceTempCommit = ( + args: { + releaseBranchName: string; + cherryPickCommit: UnboxReturnedPromise< + IPluginApiClient['patch']['createCherryPickCommit'] + >; + } & OwnerRepo, +) => Promise<{ + ref: string; + object: { + sha: string; + }; +}>; +export type ReplaceTempCommitResult = UnboxReturnedPromise; + +type CreateTagObject = ({ + bumpedTag, + updatedReference, +}: { + bumpedTag: string; + updatedReference: ReplaceTempCommitResult; +} & OwnerRepo) => Promise<{ + tag: string; + sha: string; +}>; +export type CreateTagObjectResult = UnboxReturnedPromise; + +type CreateReference = ( + args: { + bumpedTag: string; + createdTagObject: CreateTagObjectResult; + } & OwnerRepo, +) => Promise<{ + ref: string; +}>; +export type CreateReferenceResult = UnboxReturnedPromise; + +type UpdateRelease = ( + args: { + bumpedTag: string; + latestRelease: NonNullable; + tagParts: SemverTagParts | CalverTagParts; + selectedPatchCommit: GetRecentCommitsResultSingle; + } & OwnerRepo, +) => Promise<{ + name: string | null; + tagName: string; + htmlUrl: string; +}>; +export type UpdateReleaseResult = UnboxReturnedPromise; + +type PromoteRelease = ( + args: { + releaseId: NonNullable['id']; + releaseVersion: string; + } & OwnerRepo, +) => Promise<{ + name: string | null; + tagName: string; + htmlUrl: string; +}>; +export type PromoteReleaseResult = UnboxReturnedPromise; + +export interface IPluginApiClient { + getHost: GetHost; + getRepoPath: GetRepoPath; + getOwners: GetOwners; + getRepositories: GetRepositories; + getUsername: GetUsername; + getRecentCommits: GetRecentCommits; + getLatestRelease: GetLatestRelease; + getRepository: GetRepository; + getLatestCommit: GetLatestCommit; + getBranch: GetBranch; + createRc: { + createRef: CreateRef; + getComparison: GetComparison; + createRelease: CreateRelease; + }; + patch: { + createTempCommit: CreateTempCommit; + forceBranchHeadToTempCommit: ForceBranchHeadToTempCommit; + merge: Merge; + createCherryPickCommit: CreateCherryPickCommit; + replaceTempCommit: ReplaceTempCommit; + createTagObject: CreateTagObject; + createReference: CreateReference; + updateRelease: UpdateRelease; + }; + promoteRc: { + promoteRelease: PromoteRelease; + }; +}