From 549e81315923c5c4ecdf3919cf635267857bfe56 Mon Sep 17 00:00:00 2001 From: Nato Boram Date: Mon, 30 Sep 2024 16:02:58 -0400 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Use=20a=20real=20event=20to=20updat?= =?UTF-8?q?e=20PRReviewerUpdated=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ Use a real event to update PRReviewerUpdated * 🏷️ Import some enums --- .../webhooks/events/pr/comment_added.ts | 10 ++-- .../webhooks/events/pr/comment_deleted.ts | 13 ++++-- .../webhooks/events/pr/comment_edited.ts | 10 ++-- src/server/webhooks/events/pr/declined.ts | 11 +++-- src/server/webhooks/events/pr/deleted.ts | 11 +++-- .../webhooks/events/pr/from_ref_updated.ts | 13 ++++-- src/server/webhooks/events/pr/merged.ts | 11 +++-- src/server/webhooks/events/pr/modified.ts | 11 +++-- src/server/webhooks/events/pr/opened.ts | 13 ++++-- .../webhooks/events/pr/reviewer_approved.ts | 11 +++-- .../events/pr/reviewer_changes_requested.ts | 11 +++-- .../webhooks/events/pr/reviewer_unapproved.ts | 11 +++-- .../webhooks/events/pr/reviewer_updated.ts | 46 ++++++++++++++++--- .../webhooks/events/repo/comment_added.ts | 4 +- .../webhooks/events/repo/comment_deleted.ts | 4 +- .../webhooks/events/repo/comment_edited.ts | 4 +- src/server/webhooks/events/repo/forked.ts | 6 ++- src/server/webhooks/events/repo/modified.ts | 4 +- .../webhooks/events/repo/refs_changed.ts | 4 +- .../webhooks/events/repo/secret_detected.ts | 4 +- .../webhooks/events/repo/synchronized.ts | 4 +- 21 files changed, 160 insertions(+), 56 deletions(-) diff --git a/src/server/webhooks/events/pr/comment_added.ts b/src/server/webhooks/events/pr/comment_added.ts index 0c78f70..d6940d2 100644 --- a/src/server/webhooks/events/pr/comment_added.ts +++ b/src/server/webhooks/events/pr/comment_added.ts @@ -1,6 +1,8 @@ import type { SchemaApplicationUser, + SchemaComment, SchemaProject, + SchemaPullRequest, SchemaPullRequestParticipant, SchemaRepository, SchemaRestMinimalRef, @@ -40,7 +42,7 @@ export interface Comment { readonly id: number readonly properties: Properties readonly severity: string - readonly state: string + readonly state: SchemaComment["state"] readonly tasks?: unknown[] readonly text: string readonly threadResolved: boolean @@ -87,9 +89,9 @@ export interface PullRequest { readonly links: ActorLinks readonly locked: boolean readonly open: boolean - readonly participants: unknown[] - readonly reviewers: unknown[] - readonly state: string + readonly participants: Author[] + readonly reviewers: Author[] + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number diff --git a/src/server/webhooks/events/pr/comment_deleted.ts b/src/server/webhooks/events/pr/comment_deleted.ts index 90a181c..253d85f 100644 --- a/src/server/webhooks/events/pr/comment_deleted.ts +++ b/src/server/webhooks/events/pr/comment_deleted.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -58,9 +63,9 @@ export interface PullRequest { readonly id: number readonly locked: boolean readonly open: boolean - readonly participants: unknown[] - readonly reviewers: unknown[] - readonly state: string + readonly participants: Author[] + readonly reviewers: Author[] + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -82,6 +87,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/comment_edited.ts b/src/server/webhooks/events/pr/comment_edited.ts index 742f273..cea9434 100644 --- a/src/server/webhooks/events/pr/comment_edited.ts +++ b/src/server/webhooks/events/pr/comment_edited.ts @@ -1,6 +1,8 @@ import type { SchemaApplicationUser, + SchemaComment, SchemaProject, + SchemaPullRequest, SchemaPullRequestParticipant, SchemaRepository, SchemaRestMinimalRef, @@ -40,7 +42,7 @@ export interface Comment { readonly id: number readonly properties: Properties readonly severity: string - readonly state: string + readonly state: SchemaComment["state"] readonly text: string readonly threadResolved: boolean readonly threadResolvedDate: number @@ -89,9 +91,9 @@ export interface PullRequest { readonly links: ActorLinks readonly locked: boolean readonly open: boolean - readonly participants: unknown[] - readonly reviewers: unknown[] - readonly state: string + readonly participants: Author[] + readonly reviewers: Author[] + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number diff --git a/src/server/webhooks/events/pr/declined.ts b/src/server/webhooks/events/pr/declined.ts index ac3d1a2..b76d8d8 100644 --- a/src/server/webhooks/events/pr/declined.ts +++ b/src/server/webhooks/events/pr/declined.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -44,9 +49,9 @@ export interface PullRequest { readonly id: number readonly locked: boolean readonly open: boolean - readonly participants: unknown[] + readonly participants: Author[] readonly reviewers: Author[] - readonly state: string + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -68,6 +73,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/deleted.ts b/src/server/webhooks/events/pr/deleted.ts index a8dbcf0..19730b4 100644 --- a/src/server/webhooks/events/pr/deleted.ts +++ b/src/server/webhooks/events/pr/deleted.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -43,9 +48,9 @@ export interface PullRequest { readonly id: number readonly locked: boolean readonly open: boolean - readonly participants: unknown[] + readonly participants: Author[] readonly reviewers: Author[] - readonly state: string + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -67,6 +72,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/from_ref_updated.ts b/src/server/webhooks/events/pr/from_ref_updated.ts index 7027d8a..79d09f4 100644 --- a/src/server/webhooks/events/pr/from_ref_updated.ts +++ b/src/server/webhooks/events/pr/from_ref_updated.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -55,9 +60,9 @@ export interface PullRequest { readonly links: ActorLinks readonly locked: boolean readonly open: boolean - readonly participants: unknown[] - readonly reviewers: unknown[] - readonly state: string + readonly participants: Author[] + readonly reviewers: Author[] + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -81,7 +86,7 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/merged.ts b/src/server/webhooks/events/pr/merged.ts index 9fca710..ef02e25 100644 --- a/src/server/webhooks/events/pr/merged.ts +++ b/src/server/webhooks/events/pr/merged.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -55,8 +60,8 @@ export interface PullRequest { readonly open: boolean readonly participants: Author[] readonly properties: Properties - readonly reviewers: unknown[] - readonly state: string + readonly reviewers: Author[] + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -78,6 +83,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/modified.ts b/src/server/webhooks/events/pr/modified.ts index 40d421d..1cdcc7c 100644 --- a/src/server/webhooks/events/pr/modified.ts +++ b/src/server/webhooks/events/pr/modified.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -57,9 +62,9 @@ export interface PullRequest { readonly id: number readonly locked: boolean readonly open: boolean - readonly participants: unknown[] + readonly participants: Author[] readonly reviewers: Author[] - readonly state: string + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -81,6 +86,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/opened.ts b/src/server/webhooks/events/pr/opened.ts index 02c2235..ce1cc4a 100644 --- a/src/server/webhooks/events/pr/opened.ts +++ b/src/server/webhooks/events/pr/opened.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -46,9 +51,9 @@ export interface PullRequest { readonly links: Links readonly locked: boolean readonly open: boolean - readonly participants: unknown[] - readonly reviewers: unknown[] - readonly state: string + readonly participants: Author[] + readonly reviewers: Author[] + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -70,6 +75,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/reviewer_approved.ts b/src/server/webhooks/events/pr/reviewer_approved.ts index be58366..2c6bdeb 100644 --- a/src/server/webhooks/events/pr/reviewer_approved.ts +++ b/src/server/webhooks/events/pr/reviewer_approved.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -54,9 +59,9 @@ export interface PullRequest { readonly links: Links readonly locked: boolean readonly open: boolean - readonly participants: unknown[] + readonly participants: Participant[] readonly reviewers: Participant[] - readonly state: string + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -78,6 +83,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/reviewer_changes_requested.ts b/src/server/webhooks/events/pr/reviewer_changes_requested.ts index 4bb745a..7739b62 100644 --- a/src/server/webhooks/events/pr/reviewer_changes_requested.ts +++ b/src/server/webhooks/events/pr/reviewer_changes_requested.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -49,9 +54,9 @@ export interface PullRequest { readonly id: number readonly locked: boolean readonly open: boolean - readonly participants: unknown[] + readonly participants: Participant[] readonly reviewers: Participant[] - readonly state: string + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -73,6 +78,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/reviewer_unapproved.ts b/src/server/webhooks/events/pr/reviewer_unapproved.ts index 87b59ff..9f96e3e 100644 --- a/src/server/webhooks/events/pr/reviewer_unapproved.ts +++ b/src/server/webhooks/events/pr/reviewer_unapproved.ts @@ -1,3 +1,8 @@ +import type { + SchemaPullRequest, + SchemaRepository, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -49,9 +54,9 @@ export interface PullRequest { readonly id: number readonly locked: boolean readonly open: boolean - readonly participants: unknown[] + readonly participants: Participant[] readonly reviewers: Participant[] - readonly state: string + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -73,6 +78,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/pr/reviewer_updated.ts b/src/server/webhooks/events/pr/reviewer_updated.ts index c727db3..fc4eb05 100644 --- a/src/server/webhooks/events/pr/reviewer_updated.ts +++ b/src/server/webhooks/events/pr/reviewer_updated.ts @@ -1,11 +1,24 @@ +import type { + SchemaApplicationUser, + SchemaProject, + SchemaPullRequest, + SchemaRepository, + SchemaRestMinimalRef, +} from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string readonly emailAddress: string readonly id: number + readonly links: ActorLinks readonly name: string readonly slug: string - readonly type: string + readonly type: SchemaApplicationUser["type"] +} + +export interface ActorLinks { + readonly self: Self[] } export interface Author { @@ -15,6 +28,11 @@ export interface Author { readonly user: Actor } +export interface Clone { + readonly href: string + readonly name: string +} + export interface PRReviewerUpdated { /** The user who created the pull request. */ readonly actor: Actor @@ -31,9 +49,11 @@ export interface PRReviewerUpdated { export interface Project { readonly id: number readonly key: string + readonly links: ActorLinks readonly name: string - readonly owner: Actor - readonly type: string + readonly owner?: Actor + readonly public: boolean + readonly type: SchemaProject["type"] } export interface PullRequest { @@ -44,11 +64,12 @@ export interface PullRequest { readonly draft: boolean readonly fromRef: Ref readonly id: number + readonly links: ActorLinks readonly locked: boolean readonly open: boolean - readonly participants: unknown[] + readonly participants: Author[] readonly reviewers: Author[] - readonly state: string + readonly state: SchemaPullRequest["state"] readonly title: string readonly toRef: Ref readonly updatedDate: number @@ -60,16 +81,29 @@ export interface Ref { readonly id: string readonly latestCommit: string readonly repository: Repository + readonly type: SchemaRestMinimalRef["type"] } export interface Repository { + readonly archived: boolean readonly forkable: boolean + readonly hierarchyId: string readonly id: number + readonly links: RepositoryLinks readonly name: string readonly project: Project readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } + +export interface RepositoryLinks { + readonly clone: Clone[] + readonly self: Self[] +} + +export interface Self { + readonly href: string +} diff --git a/src/server/webhooks/events/repo/comment_added.ts b/src/server/webhooks/events/repo/comment_added.ts index c72ff45..7b7c575 100644 --- a/src/server/webhooks/events/repo/comment_added.ts +++ b/src/server/webhooks/events/repo/comment_added.ts @@ -1,3 +1,5 @@ +import type { SchemaRepository } from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -61,6 +63,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/repo/comment_deleted.ts b/src/server/webhooks/events/repo/comment_deleted.ts index a04c76f..4d17d1f 100644 --- a/src/server/webhooks/events/repo/comment_deleted.ts +++ b/src/server/webhooks/events/repo/comment_deleted.ts @@ -1,3 +1,5 @@ +import type { SchemaRepository } from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -50,6 +52,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/repo/comment_edited.ts b/src/server/webhooks/events/repo/comment_edited.ts index 8aef572..62096ce 100644 --- a/src/server/webhooks/events/repo/comment_edited.ts +++ b/src/server/webhooks/events/repo/comment_edited.ts @@ -1,3 +1,5 @@ +import type { SchemaRepository } from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -63,6 +65,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/repo/forked.ts b/src/server/webhooks/events/repo/forked.ts index 2b56906..567b906 100644 --- a/src/server/webhooks/events/repo/forked.ts +++ b/src/server/webhooks/events/repo/forked.ts @@ -1,3 +1,5 @@ +import type { SchemaRepository } from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -16,7 +18,7 @@ export interface Origin { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } @@ -51,6 +53,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/repo/modified.ts b/src/server/webhooks/events/repo/modified.ts index 1a9f59a..70bf423 100644 --- a/src/server/webhooks/events/repo/modified.ts +++ b/src/server/webhooks/events/repo/modified.ts @@ -1,3 +1,5 @@ +import type { SchemaRepository } from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -37,6 +39,6 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/repo/refs_changed.ts b/src/server/webhooks/events/repo/refs_changed.ts index 7bf60bb..326dfcd 100644 --- a/src/server/webhooks/events/repo/refs_changed.ts +++ b/src/server/webhooks/events/repo/refs_changed.ts @@ -1,3 +1,5 @@ +import type { SchemaRepository } from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly displayName: string @@ -84,7 +86,7 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/repo/secret_detected.ts b/src/server/webhooks/events/repo/secret_detected.ts index 7b88d84..f7a36e4 100644 --- a/src/server/webhooks/events/repo/secret_detected.ts +++ b/src/server/webhooks/events/repo/secret_detected.ts @@ -1,3 +1,5 @@ +import type { SchemaRepository } from "../../../openapi/openapi-typescript.js" + export interface Actor { readonly active: boolean readonly backingCrowdUser: null @@ -43,7 +45,7 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string } diff --git a/src/server/webhooks/events/repo/synchronized.ts b/src/server/webhooks/events/repo/synchronized.ts index 9ba885c..0678bd0 100644 --- a/src/server/webhooks/events/repo/synchronized.ts +++ b/src/server/webhooks/events/repo/synchronized.ts @@ -1,3 +1,5 @@ +import type { SchemaRepository } from "../../../openapi/openapi-typescript.js" + export interface Change { readonly fromHash: string readonly ref: Ref @@ -73,7 +75,7 @@ export interface Repository { readonly public: boolean readonly scmId: string readonly slug: string - readonly state: string + readonly state: SchemaRepository["state"] readonly statusMessage: string }