blob: e17bec8a8176d54917b43e2487498645a93bad24 [file] [log] [blame]
/**
* @license
* Copyright (C) 2019 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.
*/
// Type definitions used across multiple files in Gerrit
window.Gerrit = window.Gerrit || {};
/** @enum {string} */
Gerrit.CoverageType = {
/**
* start_character and end_character of the range will be ignored for this
* type.
*/
COVERED: 'COVERED',
/**
* start_character and end_character of the range will be ignored for this
* type.
*/
NOT_COVERED: 'NOT_COVERED',
PARTIALLY_COVERED: 'PARTIALLY_COVERED',
/**
* You don't have to use this. If there is no coverage information for a
* range, then it implicitly means NOT_INSTRUMENTED. start_character and
* end_character of the range will be ignored for this type.
*/
NOT_INSTRUMENTED: 'NOT_INSTRUMENTED',
};
/**
* @typedef {{
* start_line: number,
* start_character: number,
* end_line: number,
* end_character: number,
* }}
*/
Gerrit.Range;
/**
* @typedef {{side: string, range: Gerrit.Range, hovering: boolean}}
*/
Gerrit.HoveredRange;
/**
* @typedef {{
* side: string,
* type: Gerrit.CoverageType,
* code_range: Gerrit.Range,
* }}
*/
Gerrit.CoverageRange;
/**
* @typedef {{
* basePatchNum: (string|number),
* patchNum: (number),
* }}
*/
Gerrit.PatchRange;
/**
* @typedef {{
* changeNum: (string|number),
* endpoint: string,
* patchNum: (string|number|null|undefined),
* errFn: (function(?Response, string=)|null|undefined),
* params: (Object|null|undefined),
* fetchOptions: (Object|null|undefined),
* anonymizedEndpoint: (string|undefined),
* reportEndpointAsIs: (boolean|undefined),
* }}
*/
Gerrit.ChangeFetchRequest;
/**
* Object to describe a request for passing into _send.
* - method is the HTTP method to use in the request.
* - url is the URL for the request
* - body is a request payload.
* TODO (beckysiegel) remove need for number at least.
* - errFn is a function to invoke when the request fails.
* - cancelCondition is a function that, if provided and returns true, will
* cancel the response after it resolves.
* - contentType is the content type of the body.
* - headers is a key-value hash to describe HTTP headers for the request.
* - parseResponse states whether the result should be parsed as a JSON
* object using getResponseObject.
*
* @typedef {{
* method: string,
* url: string,
* body: (string|number|Object|null|undefined),
* errFn: (function(?Response, string=)|null|undefined),
* contentType: (string|null|undefined),
* headers: (Object|undefined),
* parseResponse: (boolean|undefined),
* anonymizedUrl: (string|undefined),
* reportUrlAsIs: (boolean|undefined),
* }}
*/
Gerrit.SendRequest;
/**
* @typedef {{
* changeNum: (string|number),
* method: string,
* patchNum: (string|number|undefined),
* endpoint: string,
* body: (string|number|Object|null|undefined),
* errFn: (function(?Response, string=)|null|undefined),
* contentType: (string|null|undefined),
* headers: (Object|undefined),
* parseResponse: (boolean|undefined),
* anonymizedEndpoint: (string|undefined),
* reportEndpointAsIs: (boolean|undefined),
* }}
*/
Gerrit.ChangeSendRequest;
/**
* @typedef {{
* url: string,
* fetchOptions: (Object|null|undefined),
* anonymizedUrl: (string|undefined),
* }}
*/
Gerrit.FetchRequest;
/**
* Object to describe a request for passing into fetchJSON or fetchRawJSON.
* - url is the URL for the request (excluding get params)
* - errFn is a function to invoke when the request fails.
* - cancelCondition is a function that, if provided and returns true, will
* cancel the response after it resolves.
* - params is a key-value hash to specify get params for the request URL.
*
* @typedef {{
* url: string,
* errFn: (function(?Response, string=)|null|undefined),
* cancelCondition: (function()|null|undefined),
* params: (Object|null|undefined),
* fetchOptions: (Object|null|undefined),
* anonymizedUrl: (string|undefined),
* reportUrlAsIs: (boolean|undefined),
* }}
*/
Gerrit.FetchJSONRequest;
/**
* @typedef {{
* message: string,
* icon: string,
* class: string,
* }}
*/
Gerrit.PushCertificateValidation;
/**
* Object containing layout values to be used in rendering size-bars.
* `max{Inserted,Deleted}` represent the largest values of the
* `lines_inserted` and `lines_deleted` fields of the files respectively. The
* `max{Addition,Deletion}Width` represent the width of the graphic allocated
* to the insertion or deletion side respectively. Finally, the
* `deletionOffset` value represents the x-position for the deletion bar.
*
* @typedef {{
* maxInserted: number,
* maxDeleted: number,
* maxAdditionWidth: number,
* maxDeletionWidth: number,
* deletionOffset: number,
* }}
*/
Gerrit.LayoutStats;
/**
* @typedef {{
* changeNum: number,
* path: string,
* patchRange: !Gerrit.PatchRange,
* projectConfig: (Object|undefined),
* }}
*/
Gerrit.CommentMeta;
/**
* @typedef {{
* meta: !Gerrit.CommentMeta,
* left: !Array,
* right: !Array,
* }}
*/
Gerrit.CommentsBySide;
/**
* The DiffIntralineInfo entity contains information about intraline edits in a
* file.
*
* The information consists of a list of <skip length, mark length> pairs, where
* the skip length is the number of characters between the end of the previous
* edit and the start of this edit, and the mark length is the number of edited
* characters following the skip. The start of the edits is from the beginning
* of the related diff content lines.
*
* Note that the implied newline character at the end of each line is included
* in the length calculation, and thus it is possible for the edits to span
* newlines.
*
* @typedef {!Array<number>}
*/
Gerrit.IntralineInfo;
/**
* A portion of the diff that is treated the same.
*
* Called `DiffContent` in the API, see
* https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#diff-content
*
* @typedef {{
* ab: ?Array<!string>,
* a: ?Array<!string>,
* b: ?Array<!string>,
* skip: ?number,
* edit_a: ?Array<!Gerrit.IntralineInfo>,
* edit_b: ?Array<!Gerrit.IntralineInfo>,
* due_to_rebase: ?boolean,
* common: ?boolean
* }}
*/
Gerrit.DiffChunk;
/**
* Special line number which should not be collapsed into a shared region.
*
* @typedef {{
* number: number,
* leftSide: boolean
* }}
*/
Gerrit.LineOfInterest;
/**
* @typedef {{
* html: Node,
* position: number,
* length: number,
* }}
*/
Gerrit.CommentLinkItem;
/**
* @typedef {{
* name: string,
* value: Object,
* }}
*/
Gerrit.GrSuggestionItem;
/**
* @typedef {{
* getSuggestions: function(string): Promise<Array<Object>>,
* makeSuggestionItem: function(Object): Gerrit.GrSuggestionItem,
* }}
*/
Gerrit.GrSuggestionsProvider;