From 8aa48a5516da7ef46e0a4e6daf1ab4285eeefb22 Mon Sep 17 00:00:00 2001 From: Justin Dalrymple Date: Fri, 11 Aug 2023 02:17:36 -0400 Subject: [PATCH] Additional tweaks to protected branch types (#3375) * Include id as an optional addition for when using the accessLevel property --- packages/core/src/infrastructure/Utils.ts | 5 +-- .../core/src/resources/ProtectedBranches.ts | 31 ++++++++++++------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/packages/core/src/infrastructure/Utils.ts b/packages/core/src/infrastructure/Utils.ts index acae72d8..a458e56d 100644 --- a/packages/core/src/infrastructure/Utils.ts +++ b/packages/core/src/infrastructure/Utils.ts @@ -17,8 +17,9 @@ export type CamelizeString = T extends string export type Camelize = { [K in keyof T as CamelizeString]: Camelize }; -export type Never = { [P in keyof T]?: never }; -export type OneOf = { [K in keyof T]: Pick & Never> }[keyof T]; +export type Simplify = T extends infer S ? { [K in keyof S]: S[K] } : never; +export type Never = Simplify<{ [P in keyof T]?: never }>; +export type OneOf = { [K in keyof T]: Simplify & Never>> }[keyof T]; export type OneOrNoneOf = Never | OneOf; export type AllOrNone> = T | Partial>; diff --git a/packages/core/src/resources/ProtectedBranches.ts b/packages/core/src/resources/ProtectedBranches.ts index 1cfbb317..befff853 100644 --- a/packages/core/src/resources/ProtectedBranches.ts +++ b/packages/core/src/resources/ProtectedBranches.ts @@ -28,21 +28,28 @@ export interface ProtectedBranchSchema extends Record { code_owner_approval_required: boolean; } -export type ProtectedBranchAllowOptions = OneOf<{ - user_id: number; - group_id: number; - access_level: number; +export type CreateProtectedBranchAllowOptions = OneOf<{ + userId: number; + groupId: number; + accessLevel: ProtectedBranchAccessLevel; }>; -export type EditsProtectedBranchAllowOptions = { +export type EditProtectedBranchAllowOptions = { _destroy?: boolean; -} & ProtectedBranchAllowOptions; +} & ( + | { userId: number } + | { groupId: number } + | { + accessLevel: ProtectedBranchAccessLevel; + id: number; + } +); export type CreateProtectedBranchOptions = { allowForcePush?: boolean; - allowedToMerge?: ProtectedBranchAllowOptions[]; - allowedToPush?: ProtectedBranchAllowOptions[]; - allowedToUnprotect?: ProtectedBranchAllowOptions[]; + allowedToMerge?: CreateProtectedBranchAllowOptions[]; + allowedToPush?: CreateProtectedBranchAllowOptions[]; + allowedToUnprotect?: CreateProtectedBranchAllowOptions[]; codeOwnerApprovalRequired?: boolean; mergeAccessLevel?: ProtectedBranchAccessLevel; pushAccessLevel?: ProtectedBranchAccessLevel; @@ -51,9 +58,9 @@ export type CreateProtectedBranchOptions = { export type EditProtectedBranchOptions = { allowForcePush?: boolean; - allowedToMerge?: EditsProtectedBranchAllowOptions[]; - allowedToPush?: EditsProtectedBranchAllowOptions[]; - allowedToUnprotect?: EditsProtectedBranchAllowOptions[]; + allowedToMerge?: EditProtectedBranchAllowOptions[]; + allowedToPush?: EditProtectedBranchAllowOptions[]; + allowedToUnprotect?: EditProtectedBranchAllowOptions[]; codeOwnerApprovalRequired?: boolean; };