/** * @copyright NHCarrigan * @license Naomi's Public License * @author Naomi Carrigan */ /* eslint-disable @typescript-eslint/naming-convention, max-lines -- These are API interfaces. */ interface Repository { id: number; node_id: string; name: string; full_name: string; owner: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; private: boolean; html_url: string; description: string; fork: boolean; url: string; archive_url: string; assignees_url: string; blobs_url: string; branches_url: string; collaborators_url: string; comments_url: string; commits_url: string; compare_url: string; contents_url: string; contributors_url: string; deployments_url: string; downloads_url: string; events_url: string; forks_url: string; git_commits_url: string; git_refs_url: string; git_tags_url: string; git_url: string; issue_comment_url: string; issue_events_url: string; issues_url: string; keys_url: string; labels_url: string; languages_url: string; merges_url: string; milestones_url: string; notifications_url: string; pulls_url: string; releases_url: string; ssh_url: string; stargazers_url: string; statuses_url: string; subscribers_url: string; subscription_url: string; tags_url: string; teams_url: string; trees_url: string; clone_url: string; mirror_url: string; hooks_url: string; svn_url: string; homepage: string; forks_count: number; forks: number; stargazers_count: number; watchers_count: number; watchers: number; size: number; default_branch: string; open_issues_count: number; open_issues: number; is_template: boolean; topics: Array; has_issues: boolean; has_projects: boolean; has_wiki: boolean; has_pages: boolean; has_downloads: boolean; has_discussions: boolean; archived: boolean; disabled: boolean; visibility: string; pushed_at: string; created_at: string; updated_at: string; permissions: { pull: boolean; push: boolean; admin: boolean; }; allow_rebase_merge: boolean; template_repository: { id: number; node_id: string; name: string; full_name: string; owner: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; private: boolean; html_url: string; description: string; fork: boolean; url: string; archive_url: string; assignees_url: string; blobs_url: string; branches_url: string; collaborators_url: string; comments_url: string; commits_url: string; compare_url: string; contents_url: string; contributors_url: string; deployments_url: string; downloads_url: string; events_url: string; forks_url: string; git_commits_url: string; git_refs_url: string; git_tags_url: string; git_url: string; issue_comment_url: string; issue_events_url: string; issues_url: string; keys_url: string; labels_url: string; languages_url: string; merges_url: string; milestones_url: string; notifications_url: string; pulls_url: string; releases_url: string; ssh_url: string; stargazers_url: string; statuses_url: string; subscribers_url: string; subscription_url: string; tags_url: string; teams_url: string; trees_url: string; clone_url: string; mirror_url: string; hooks_url: string; svn_url: string; homepage: string; language: unknown; forks: number; forks_count: number; stargazers_count: number; watchers_count: number; watchers: number; size: number; default_branch: string; open_issues: number; open_issues_count: number; is_template: boolean; license: { key: string; name: string; url: string; spdx_id: string; node_id: string; html_url: string; }; topics: Array; has_issues: boolean; has_projects: boolean; has_wiki: boolean; has_pages: boolean; has_downloads: boolean; archived: boolean; disabled: boolean; visibility: string; pushed_at: string; created_at: string; updated_at: string; permissions: { admin: boolean; push: boolean; pull: boolean; }; allow_rebase_merge: boolean; temp_clone_token: string; allow_squash_merge: boolean; allow_auto_merge: boolean; delete_branch_on_merge: boolean; allow_merge_commit: boolean; subscribers_count: number; network_count: number; }; temp_clone_token: string; allow_squash_merge: boolean; allow_auto_merge: boolean; delete_branch_on_merge: boolean; allow_merge_commit: boolean; allow_forking: boolean; subscribers_count: number; network_count: number; license: { key: string; name: string; spdx_id: string; url: string; node_id: string; }; organization: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; parent: { id: number; node_id: string; name: string; full_name: string; owner: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; private: boolean; html_url: string; description: string; fork: boolean; url: string; archive_url: string; assignees_url: string; blobs_url: string; branches_url: string; collaborators_url: string; comments_url: string; commits_url: string; compare_url: string; contents_url: string; contributors_url: string; deployments_url: string; downloads_url: string; events_url: string; forks_url: string; git_commits_url: string; git_refs_url: string; git_tags_url: string; git_url: string; issue_comment_url: string; issue_events_url: string; issues_url: string; keys_url: string; labels_url: string; languages_url: string; merges_url: string; milestones_url: string; notifications_url: string; pulls_url: string; releases_url: string; ssh_url: string; stargazers_url: string; statuses_url: string; subscribers_url: string; subscription_url: string; tags_url: string; teams_url: string; trees_url: string; clone_url: string; mirror_url: string; hooks_url: string; svn_url: string; homepage: string; language: unknown; forks_count: number; stargazers_count: number; watchers_count: number; size: number; default_branch: string; open_issues_count: number; is_template: boolean; topics: Array; has_issues: boolean; has_projects: boolean; has_wiki: boolean; has_pages: boolean; has_downloads: boolean; archived: boolean; disabled: boolean; visibility: string; pushed_at: string; created_at: string; updated_at: string; permissions: { admin: boolean; push: boolean; pull: boolean; }; allow_rebase_merge: boolean; temp_clone_token: string; allow_squash_merge: boolean; allow_auto_merge: boolean; delete_branch_on_merge: boolean; allow_merge_commit: boolean; subscribers_count: number; network_count: number; license: { key: string; name: string; url: string; spdx_id: string; node_id: string; html_url: string; }; forks: number; open_issues: number; watchers: number; }; source: { id: number; node_id: string; name: string; full_name: string; owner: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; private: boolean; html_url: string; description: string; fork: boolean; url: string; archive_url: string; assignees_url: string; blobs_url: string; branches_url: string; collaborators_url: string; comments_url: string; commits_url: string; compare_url: string; contents_url: string; contributors_url: string; deployments_url: string; downloads_url: string; events_url: string; forks_url: string; git_commits_url: string; git_refs_url: string; git_tags_url: string; git_url: string; issue_comment_url: string; issue_events_url: string; issues_url: string; keys_url: string; labels_url: string; languages_url: string; merges_url: string; milestones_url: string; notifications_url: string; pulls_url: string; releases_url: string; ssh_url: string; stargazers_url: string; statuses_url: string; subscribers_url: string; subscription_url: string; tags_url: string; teams_url: string; trees_url: string; clone_url: string; mirror_url: string; hooks_url: string; svn_url: string; homepage: string; forks_count: number; stargazers_count: number; watchers_count: number; size: number; default_branch: string; open_issues_count: number; is_template: boolean; topics: Array; has_issues: boolean; has_projects: boolean; has_wiki: boolean; has_pages: boolean; has_downloads: boolean; archived: boolean; disabled: boolean; visibility: string; pushed_at: string; created_at: string; updated_at: string; permissions: { admin: boolean; push: boolean; pull: boolean; }; allow_rebase_merge: boolean; temp_clone_token: string; allow_squash_merge: boolean; allow_auto_merge: boolean; delete_branch_on_merge: boolean; allow_merge_commit: boolean; subscribers_count: number; network_count: number; license: { key: string; name: string; url: string; spdx_id: string; node_id: string; html_url: string; }; forks: number; open_issues: number; watchers: number; security_and_analysis: { advanced_security: { status: string; }; secret_scanning: { status: string; }; secret_scanning_push_protection: { status: string; }; secret_scanning_non_provider_patterns: { status: string; }; }; }; } interface Issue { id: number; node_id: string; url: string; repository_url: string; labels_url: string; comments_url: string; events_url: string; html_url: string; number: number; state: string; title: string; body: string; user: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; labels: Array<{ id: number; node_id: string; url: string; name: string; description: string; color: string; default: boolean; }>; assignee: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; assignees: Array<{ login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }>; milestone: { url: string; html_url: string; labels_url: string; id: number; node_id: string; number: number; state: string; title: string; description: string; creator: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; open_issues: number; closed_issues: number; created_at: string; updated_at: string; closed_at: string; due_on: string; }; locked: boolean; active_lock_reason: string; comments: number; pull_request: { url: string; html_url: string; diff_url: string; patch_url: string; }; closed_at: unknown; created_at: string; updated_at: string; closed_by: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; author_association: string; state_reason: string; } interface IssueCreated { action: "opened"; issue: Issue; repository: Repository; } interface PullRequest { url: string; id: number; node_id: string; html_url: string; diff_url: string; patch_url: string; issue_url: string; commits_url: string; review_comments_url: string; review_comment_url: string; comments_url: string; statuses_url: string; number: number; state: string; locked: boolean; title: string; user: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; body: string; labels: Array<{ id: number; node_id: string; url: string; name: string; description: string; color: string; default: boolean; }>; milestone: { url: string; html_url: string; labels_url: string; id: number; node_id: string; number: number; state: string; title: string; description: string; creator: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; open_issues: number; closed_issues: number; created_at: string; updated_at: string; closed_at: string; due_on: string; }; active_lock_reason: string; created_at: string; updated_at: string; closed_at: string; merged_at: string; merge_commit_sha: string; assignee: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; assignees: Array<{ login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }>; requested_reviewers: Array<{ login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }>; requested_teams: Array<{ id: number; node_id: string; url: string; html_url: string; name: string; slug: string; description: string; privacy: string; notification_setting: string; permission: string; members_url: string; repositories_url: string; }>; head: { label: string; ref: string; sha: string; user: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; repo: { id: number; node_id: string; name: string; full_name: string; owner: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; private: boolean; html_url: string; description: string; fork: boolean; url: string; archive_url: string; assignees_url: string; blobs_url: string; branches_url: string; collaborators_url: string; comments_url: string; commits_url: string; compare_url: string; contents_url: string; contributors_url: string; deployments_url: string; downloads_url: string; events_url: string; forks_url: string; git_commits_url: string; git_refs_url: string; git_tags_url: string; git_url: string; issue_comment_url: string; issue_events_url: string; issues_url: string; keys_url: string; labels_url: string; languages_url: string; merges_url: string; milestones_url: string; notifications_url: string; pulls_url: string; releases_url: string; ssh_url: string; stargazers_url: string; statuses_url: string; subscribers_url: string; subscription_url: string; tags_url: string; teams_url: string; trees_url: string; clone_url: string; mirror_url: string; hooks_url: string; svn_url: string; homepage: string; language: unknown; forks_count: number; stargazers_count: number; watchers_count: number; size: number; default_branch: string; open_issues_count: number; topics: Array; has_issues: boolean; has_projects: boolean; has_wiki: boolean; has_pages: boolean; has_downloads: boolean; has_discussions: boolean; archived: boolean; disabled: boolean; pushed_at: string; created_at: string; updated_at: string; permissions: { admin: boolean; push: boolean; pull: boolean; }; allow_rebase_merge: boolean; temp_clone_token: string; allow_squash_merge: boolean; allow_merge_commit: boolean; allow_forking: boolean; forks: number; open_issues: number; license: { key: string; name: string; url: string; spdx_id: string; node_id: string; }; watchers: number; }; }; base: { label: string; ref: string; sha: string; user: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; repo: { id: number; node_id: string; name: string; full_name: string; owner: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; private: boolean; html_url: string; description: string; fork: boolean; url: string; archive_url: string; assignees_url: string; blobs_url: string; branches_url: string; collaborators_url: string; comments_url: string; commits_url: string; compare_url: string; contents_url: string; contributors_url: string; deployments_url: string; downloads_url: string; events_url: string; forks_url: string; git_commits_url: string; git_refs_url: string; git_tags_url: string; git_url: string; issue_comment_url: string; issue_events_url: string; issues_url: string; keys_url: string; labels_url: string; languages_url: string; merges_url: string; milestones_url: string; notifications_url: string; pulls_url: string; releases_url: string; ssh_url: string; stargazers_url: string; statuses_url: string; subscribers_url: string; subscription_url: string; tags_url: string; teams_url: string; trees_url: string; clone_url: string; mirror_url: string; hooks_url: string; svn_url: string; homepage: string; language: unknown; forks_count: number; stargazers_count: number; watchers_count: number; size: number; default_branch: string; open_issues_count: number; topics: Array; has_issues: boolean; has_projects: boolean; has_wiki: boolean; has_pages: boolean; has_downloads: boolean; has_discussions: boolean; archived: boolean; disabled: boolean; pushed_at: string; created_at: string; updated_at: string; permissions: { admin: boolean; push: boolean; pull: boolean; }; allow_rebase_merge: boolean; temp_clone_token: string; allow_squash_merge: boolean; allow_merge_commit: boolean; forks: number; open_issues: number; license: { key: string; name: string; url: string; spdx_id: string; node_id: string; }; watchers: number; }; }; _links: { self: { href: string; }; html: { href: string; }; issue: { href: string; }; comments: { href: string; }; review_comments: { href: string; }; review_comment: { href: string; }; commits: { href: string; }; statuses: { href: string; }; }; author_association: string; auto_merge: unknown; draft: boolean; merged: boolean; mergeable: boolean; rebaseable: boolean; mergeable_state: string; merged_by: { login: string; id: number; node_id: string; avatar_url: string; gravatar_id: string; url: string; html_url: string; followers_url: string; following_url: string; gists_url: string; starred_url: string; subscriptions_url: string; organizations_url: string; repos_url: string; events_url: string; received_events_url: string; type: string; site_admin: boolean; }; comments: number; review_comments: number; maintainer_can_modify: boolean; commits: number; additions: number; deletions: number; changed_files: number; } interface PullRequestCreated { action: "opened"; number: number; pull_request: PullRequest; repository: Repository; } type Ping = Record; type GithubPayload = IssueCreated | PullRequestCreated | Ping; export type { IssueCreated, PullRequestCreated, Ping, GithubPayload };