Define common types and enums for gerrit
Types definitions are based on the auto-generated types provided by Tao Change-Id: I63f2cb377056afd74304c667c63dade9d21dcf45
This commit is contained in:
@@ -78,3 +78,61 @@ export enum SpecialFilePath {
|
||||
COMMIT_MESSAGE = '/COMMIT_MSG',
|
||||
MERGE_LIST = '/MERGE_LIST',
|
||||
}
|
||||
|
||||
/**
|
||||
* @desc The reviewer state
|
||||
*/
|
||||
export enum RequirementStatus {
|
||||
OK = 'OK',
|
||||
NOT_READY = 'NOT_READY',
|
||||
RULE_ERROR = 'RULE_ERROR',
|
||||
}
|
||||
|
||||
/**
|
||||
* @desc The reviewer state
|
||||
*/
|
||||
export enum ReviewerState {
|
||||
REVIEWER = 'REVIEWER',
|
||||
CC = 'CC',
|
||||
REMOVED = 'REMOVED',
|
||||
}
|
||||
|
||||
/**
|
||||
* @desc The patchset kind
|
||||
*/
|
||||
export enum RevisionKind {
|
||||
REWORK = 'REWORK',
|
||||
TRIVIAL_REBASE = 'TRIVIAL_REBASE',
|
||||
MERGE_FIRST_PARENT_UPDATE = 'MERGE_FIRST_PARENT_UPDATE',
|
||||
NO_CODE_CHANGE = 'NO_CODE_CHANGE',
|
||||
NO_CHANGE = 'NO_CHANGE',
|
||||
}
|
||||
|
||||
/**
|
||||
* @desc The status of fixing the problem
|
||||
*/
|
||||
export enum ProblemInfoStatus {
|
||||
FIXED = 'FIXED',
|
||||
FIX_FAILED = 'FIX_FAILED',
|
||||
}
|
||||
|
||||
/**
|
||||
* @desc The status of the file
|
||||
*/
|
||||
export enum FileInfoStatus {
|
||||
ADDED = 'A',
|
||||
DELETED = 'D',
|
||||
RENAMED = 'R',
|
||||
COPIED = 'C',
|
||||
REWRITTEN = 'W',
|
||||
// Modifed = 'M', but API not set it if the file was modified
|
||||
}
|
||||
|
||||
/**
|
||||
* @desc The status of the file
|
||||
*/
|
||||
export enum GpgKeyInfoStatus {
|
||||
BAD = 'BAD',
|
||||
OK = 'OK',
|
||||
TRUSTED = 'TRUSTED',
|
||||
}
|
||||
|
||||
417
polygerrit-ui/app/types/common.ts
Normal file
417
polygerrit-ui/app/types/common.ts
Normal file
@@ -0,0 +1,417 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright (C) 2020 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
ChangeStatus,
|
||||
FileInfoStatus,
|
||||
GpgKeyInfoStatus,
|
||||
ProblemInfoStatus,
|
||||
RequirementStatus,
|
||||
ReviewerState,
|
||||
RevisionKind,
|
||||
} from '../constants/constants';
|
||||
|
||||
export type BrandType<T, BrandName extends string> = T &
|
||||
{[__brand in BrandName]: never};
|
||||
|
||||
export type PatchSetNum = BrandType<'edit' | number, '_patchSet'>;
|
||||
export type ChangeId = BrandType<string, '_changeId'>;
|
||||
export type ChangeMessageId = BrandType<string, '_changeMessageId'>;
|
||||
export type LegacyChangeId = BrandType<number, '_legacyChangeId'>;
|
||||
export type NumericChangeId = BrandType<number, '_numericChangeId'>;
|
||||
export type ProjectName = BrandType<string, '_projectName'>;
|
||||
export type TopicName = BrandType<string, '_topicName'>;
|
||||
export type AccountId = BrandType<number, '_accountId'>;
|
||||
export type HttpMethod = BrandType<string, '_httpMethod'>;
|
||||
export type GitRef = BrandType<string, '_gitRef'>;
|
||||
export type RequirementType = BrandType<string, '_requirementType'>;
|
||||
export type TrackingId = BrandType<string, '_trackingId'>;
|
||||
export type ReviewInputTag = BrandType<string, '_reviewInputTag'>;
|
||||
|
||||
// The 8-char hex GPG key ID.
|
||||
export type GpgKeyId = BrandType<string, '_gpgKeyId'>;
|
||||
|
||||
// The 40-char (plus spaces) hex GPG key fingerprint
|
||||
export type GpgKeyFingerprint = BrandType<string, '_gpgKeyFingerprint'>;
|
||||
|
||||
// OpenPGP User IDs (https://tools.ietf.org/html/rfc4880#section-5.11).
|
||||
export type OpenPgpUserIds = BrandType<string, '_openPgpUserIds'>;
|
||||
|
||||
// This ID is equal to the numeric ID of the change that triggered the
|
||||
// submission. If the change that triggered the submission also has a topic, it
|
||||
// will be "<id>-<topic>" of the change that triggered the submission
|
||||
// The callers must not rely on the format of the submission ID.
|
||||
export type ChangeSubmissionId = BrandType<
|
||||
string | number,
|
||||
'_changeSubmissionId'
|
||||
>;
|
||||
|
||||
// The refs/heads/ prefix is omitted in Branch name
|
||||
export type BranchName = BrandType<string, '_branchName'>;
|
||||
|
||||
// The ID of the change in the format "'<project>~<branch>~<Change-Id>'"
|
||||
export type ChangeInfoId = BrandType<string, '_changeInfoId'>;
|
||||
export type Hashtag = BrandType<string, '_hashtag'>;
|
||||
export type StarLabel = BrandType<string, '_startLabel'>;
|
||||
export type SubmitType = BrandType<string, '_submitType'>;
|
||||
export type CommitId = BrandType<string, '_commitId'>;
|
||||
|
||||
// The timezone offset from UTC in minutes
|
||||
export type TimezoneOffset = BrandType<number, '_timezoneOffset'>;
|
||||
|
||||
// Timestamps are given in UTC and have the format
|
||||
// "'yyyy-mm-dd hh:mm:ss.fffffffff'"
|
||||
// where "'ffffffffff'" represents nanoseconds.
|
||||
export type Timestamp = BrandType<string, '_timestamp'>;
|
||||
|
||||
export type IdToAttentionSetMap = {[accountId: string]: AttentionSetInfo};
|
||||
export type LabelNameToInfoMap = {[labelName: string]: LabelInfo};
|
||||
|
||||
// The map maps the values (“-2”, “-1”, " `0`", “+1”, “+2”) to the value descriptions.
|
||||
export type LabelValueToDescriptionMap = {[labelValue: string]: string};
|
||||
|
||||
/**
|
||||
* The LabelInfo entity contains information about a label on a change, always corresponding to the current patch set.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#label-info
|
||||
*/
|
||||
type LabelInfo = QuickLabelInfo | DetailedLabelInfo;
|
||||
|
||||
interface LabelCommonInfo {
|
||||
optional?: boolean; // not set if false
|
||||
}
|
||||
|
||||
export interface QuickLabelInfo extends LabelCommonInfo {
|
||||
approved?: AccountInfo;
|
||||
rejected?: AccountInfo;
|
||||
recommended?: AccountInfo;
|
||||
disliked?: AccountInfo;
|
||||
blocking?: boolean; // not set if false
|
||||
value?: number; // The voting value of the user who recommended/disliked this label on the change if it is not “+1”/“-1”.
|
||||
default_value?: number;
|
||||
}
|
||||
|
||||
export interface DetailedLabelInfo extends LabelCommonInfo {
|
||||
all?: ApprovalInfo[];
|
||||
values?: LabelValueToDescriptionMap; // A map of all values that are allowed for this label
|
||||
}
|
||||
|
||||
/**
|
||||
* The ChangeInfo entity contains information about a change.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#change-info
|
||||
*/
|
||||
export interface ChangeInfo {
|
||||
id: ChangeInfoId;
|
||||
project: ProjectName;
|
||||
branch: BranchName;
|
||||
topic?: TopicName;
|
||||
attention_set?: IdToAttentionSetMap;
|
||||
assignee?: AccountInfo;
|
||||
hashtags?: Hashtag[];
|
||||
change_id: ChangeId;
|
||||
subject: string;
|
||||
status: ChangeStatus;
|
||||
created: Timestamp;
|
||||
updated: Timestamp;
|
||||
submitted?: Timestamp;
|
||||
submitter: AccountInfo;
|
||||
starred?: boolean; // not set if false
|
||||
stars?: StarLabel[];
|
||||
reviewed?: boolean; // not set if false
|
||||
submit_type?: SubmitType;
|
||||
mergeable?: boolean;
|
||||
submittable?: boolean;
|
||||
insertions: number; // Number of inserted lines
|
||||
deletions: number; // Number of deleted lines
|
||||
total_comment_count?: number;
|
||||
unresolved_comment_count?: number;
|
||||
_number: LegacyChangeId;
|
||||
owner: AccountInfo;
|
||||
actions?: ActionInfo[];
|
||||
requirements?: Requirement[];
|
||||
labels?: LabelInfo[];
|
||||
permitted_labels?: LabelNameToInfoMap;
|
||||
removable_reviewers?: AccountInfo[];
|
||||
reviewers?: AccountInfo[];
|
||||
pending_reviewers?: AccountInfo[];
|
||||
reviewer_updates?: ReviewerUpdateInfo[];
|
||||
messages?: ChangeMessageInfo[];
|
||||
current_revision?: CommitId;
|
||||
revisions?: {[revisionId: string]: RevisionInfo};
|
||||
tracking_ids?: TrackingIdInfo[];
|
||||
_more_changes?: boolean; // not set if false
|
||||
problems?: ProblemInfo[];
|
||||
is_private?: boolean; // not set if false
|
||||
work_in_progress?: boolean; // not set if false
|
||||
has_review_started?: boolean; // not set if false
|
||||
revert_of?: NumericChangeId;
|
||||
submission_id?: ChangeSubmissionId;
|
||||
cherry_pick_of_change?: NumericChangeId;
|
||||
cherry_pick_of_patch_set?: PatchSetNum;
|
||||
contains_git_conflicts?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* The AccountInfo entity contains information about an account.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#account-info
|
||||
*/
|
||||
export interface AccountInfo {
|
||||
_account_id: AccountId;
|
||||
name?: string;
|
||||
display_name?: string;
|
||||
email?: string;
|
||||
secondary_emails?: string[];
|
||||
username?: string;
|
||||
avatars?: AvatarInfo[];
|
||||
_more_accounts?: boolean; // not set if false
|
||||
status?: string; // status message of the account
|
||||
inactive?: boolean; // not set if false
|
||||
}
|
||||
|
||||
/**
|
||||
* The ActionInfo entity describes a REST API call the client canmake to
|
||||
* manipulate a resource. These are frequently implemented by plugins and may
|
||||
* be discovered at runtime.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#action-info
|
||||
*/
|
||||
export interface ActionInfo {
|
||||
method?: HttpMethod; // Most actions use POST, PUT or DELETE to cause state changes.
|
||||
label?: string; // Short title to display to a user describing the action
|
||||
title?: string; // Longer text to display describing the action
|
||||
enabled?: boolean; // not set if false
|
||||
}
|
||||
|
||||
/**
|
||||
* The Requirement entity contains information about a requirement relative to
|
||||
* a change.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#requirement
|
||||
*/
|
||||
export interface Requirement {
|
||||
status: RequirementStatus;
|
||||
fallbackText: string; // A human readable reason
|
||||
type: RequirementType;
|
||||
}
|
||||
|
||||
/**
|
||||
* The ReviewerUpdateInfo entity contains information about updates tochange’s
|
||||
* reviewers set.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#review-update-info
|
||||
*/
|
||||
export interface ReviewerUpdateInfo {
|
||||
updated: Timestamp;
|
||||
updated_by: AccountInfo;
|
||||
reviewer: AccountInfo;
|
||||
state: ReviewerState;
|
||||
}
|
||||
|
||||
/**
|
||||
* The ChangeMessageInfo entity contains information about a messageattached
|
||||
* to a change.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#change-message-info
|
||||
*/
|
||||
export interface ChangeMessageInfo {
|
||||
id: ChangeMessageId;
|
||||
author?: AccountInfo;
|
||||
real_author?: AccountInfo;
|
||||
date: Timestamp;
|
||||
message: string;
|
||||
tag?: ReviewInputTag;
|
||||
_revision_number?: PatchSetNum;
|
||||
}
|
||||
|
||||
/**
|
||||
* The RevisionInfo entity contains information about a patch set.Not all
|
||||
* fields are returned by default. Additional fields can be obtained by
|
||||
* adding o parameters as described in Query Changes.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#revision-info
|
||||
*/
|
||||
export interface RevisionInfo {
|
||||
kind: RevisionKind;
|
||||
_number: PatchSetNum;
|
||||
created: Timestamp;
|
||||
uploader: AccountInfo;
|
||||
ref: GitRef;
|
||||
fetch?: {[protocol: string]: FetchInfo};
|
||||
commit?: CommitInfo;
|
||||
files?: {[filename: string]: FileInfo};
|
||||
actions?: ActionInfo[];
|
||||
reviewed?: boolean;
|
||||
commit_with_footers?: boolean;
|
||||
push_certificate?: PushCertificateInfo;
|
||||
description?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* The TrackingIdInfo entity describes a reference to an external tracking
|
||||
* system.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#tracking-id-info
|
||||
*/
|
||||
export interface TrackingIdInfo {
|
||||
system: string;
|
||||
id: TrackingId;
|
||||
}
|
||||
|
||||
/**
|
||||
* The ProblemInfo entity contains a description of a potential consistency
|
||||
* problem with a change. These are not related to the code review process,
|
||||
* but rather indicate some inconsistency in Gerrit’s database or repository
|
||||
* metadata related to the enclosing change.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#problem-info
|
||||
*/
|
||||
export interface ProblemInfo {
|
||||
message: string;
|
||||
status?: ProblemInfoStatus; // Only set if a fix was attempted
|
||||
outcome?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* The AttentionSetInfo entity contains details of users that are in the attention set.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#attention-set-info
|
||||
*/
|
||||
export interface AttentionSetInfo {
|
||||
account: AccountInfo;
|
||||
last_update: Timestamp;
|
||||
}
|
||||
|
||||
/**
|
||||
* The ApprovalInfo entity contains information about an approval from auser
|
||||
* for a label on a change.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#approval-info
|
||||
*/
|
||||
export interface ApprovalInfo extends AccountInfo {
|
||||
value?: string;
|
||||
permitted_voting_range?: VotingRangeInfo;
|
||||
date?: Timestamp;
|
||||
tag?: ReviewInputTag;
|
||||
post_submit?: boolean; // not set if false
|
||||
}
|
||||
|
||||
/**
|
||||
* The AvartarInfo entity contains information about an avatar image ofan
|
||||
* account.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#avatar-info
|
||||
*/
|
||||
export interface AvatarInfo {
|
||||
url: string;
|
||||
height: number;
|
||||
width: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* The FetchInfo entity contains information about how to fetch a patchset via
|
||||
* a certain protocol.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#fetch-info
|
||||
*/
|
||||
export interface FetchInfo {
|
||||
url: string;
|
||||
ref: string;
|
||||
commands?: {[commandName: string]: string};
|
||||
}
|
||||
|
||||
/**
|
||||
* The CommitInfo entity contains information about a commit.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#commit-info
|
||||
*/
|
||||
export interface CommitInfo {
|
||||
commit?: CommitId;
|
||||
parents: ParentCommitInfo[];
|
||||
author: GitPersonInfo;
|
||||
committer: GitPersonInfo;
|
||||
subject: string;
|
||||
message: string;
|
||||
web_links?: WebLinkInfo[];
|
||||
}
|
||||
|
||||
/**
|
||||
* The parent commits of this commit as a list of CommitInfo entities.
|
||||
* In each parent only the commit and subject fields are populated.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#commit-info
|
||||
*/
|
||||
export interface ParentCommitInfo {
|
||||
commit: CommitId;
|
||||
subject: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* The FileInfo entity contains information about a file in a patch set.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#file-info
|
||||
*/
|
||||
export interface FileInfo {
|
||||
status?: FileInfoStatus;
|
||||
binary?: boolean; // not set if false
|
||||
old_path?: string;
|
||||
lines_inserted?: number;
|
||||
lines_deleted?: number;
|
||||
size_delta: number; // in bytes
|
||||
size: number; // in bytes
|
||||
}
|
||||
|
||||
/**
|
||||
* The PushCertificateInfo entity contains information about a pushcertificate
|
||||
* provided when the user pushed for review with git push
|
||||
* --signed HEAD:refs/for/<branch>. Only used when signed push is
|
||||
* enabled on the server.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#push-certificate-info
|
||||
*/
|
||||
export interface PushCertificateInfo {
|
||||
certificate: string;
|
||||
key: GpgKeyInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* The GpgKeyInfo entity contains information about a GPG public key.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-accounts.html#gpg-key-info
|
||||
*/
|
||||
export interface GpgKeyInfo {
|
||||
id?: GpgKeyId;
|
||||
fingerprint?: GpgKeyFingerprint;
|
||||
user_ids?: OpenPgpUserIds[];
|
||||
key?: string; // ASCII armored public key material
|
||||
status?: GpgKeyInfoStatus;
|
||||
problems?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* The GitPersonInfo entity contains information about theauthor/committer of
|
||||
* a commit.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#git-person-info
|
||||
*/
|
||||
export interface GitPersonInfo {
|
||||
name: string;
|
||||
email: string;
|
||||
date: Timestamp;
|
||||
tz: TimezoneOffset;
|
||||
}
|
||||
|
||||
/**
|
||||
* The WebLinkInfo entity describes a link to an external site.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#web-link-info
|
||||
*/
|
||||
export interface WebLinkInfo {
|
||||
name: string;
|
||||
url: string;
|
||||
image_url: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* The VotingRangeInfo entity describes the continuous voting range from minto
|
||||
* max values.
|
||||
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#voting-range-info
|
||||
*/
|
||||
export interface VotingRangeInfo {
|
||||
min: number;
|
||||
max: number;
|
||||
}
|
||||
Reference in New Issue
Block a user