Unit_AI/node_modules/simple-git/dist/typings/response.d.ts
2024-06-01 16:24:36 -04:00

555 lines
12 KiB
TypeScript

import type { DiffNameStatus } from '../src/lib/tasks/diff-name-status';
import type { DefaultLogFields } from '../src/lib/tasks/log';
export interface BranchSummaryBranch {
current: boolean;
name: string;
commit: string;
label: string;
linkedWorkTree: boolean;
}
export interface BranchSummary {
detached: boolean;
current: string;
all: string[];
branches: {
[key: string]: BranchSummaryBranch;
};
}
/**
* Represents the successful deletion of a single branch
*/
export interface BranchSingleDeleteSuccess {
branch: string;
hash: string;
success: true;
}
/**
* Represents the failure to delete a single branch
*/
export interface BranchSingleDeleteFailure {
branch: string;
hash: null;
success: false;
}
export type BranchSingleDeleteResult = BranchSingleDeleteFailure | BranchSingleDeleteSuccess;
/**
* Represents the status of having deleted a batch of branches
*/
export interface BranchMultiDeleteResult {
/**
* All branches included in the response
*/
all: BranchSingleDeleteResult[];
/**
* Branches mapped by their branch name
*/
branches: { [branchName: string]: BranchSingleDeleteResult };
/**
* Array of responses that are in error
*/
errors: BranchSingleDeleteResult[];
/**
* Flag showing whether all branches were deleted successfully
*/
readonly success: boolean;
}
export interface CleanSummary {
readonly dryRun: boolean;
paths: string[];
files: string[];
folders: string[];
}
export interface CommitResult {
author: null | {
email: string;
name: string;
};
branch: string;
commit: string;
root: boolean;
summary: {
changes: number;
insertions: number;
deletions: number;
};
}
/** Represents the response to using `git.getConfig` */
export interface ConfigGetResult {
/** The key that was searched for */
key: string;
/** The single value seen by `git` for this key (equivalent to `git config --get key`) */
value: string | null;
/** All possible values for this key no matter the scope (equivalent to `git config --get-all key`) */
values: string[];
/** The file paths from which configuration was read */
paths: string[];
/**
* The full hierarchy of values the property can have had across the
* various scopes that were searched (keys in this Map are the strings
* also found in the `paths` array).
*/
scopes: Map<string, string[]>;
}
/**
* Represents the current git configuration, as defined by the output from `git log`
*/
export interface ConfigListSummary {
/**
* All configuration settings, where local/user settings override user/global settings
* the overridden value will appear in this object.
*/
readonly all: ConfigValues;
/**
* The file paths configuration was read from
*/
files: string[];
/**
* The `ConfigValues` for each of the `files`, use this object to determine
* local repo, user and global settings.
*/
values: { [fileName: string]: ConfigValues };
}
/**
* Represents the map of configuration settings
*/
export interface ConfigValues {
[key: string]: string | string[];
}
export interface DiffResultTextFile {
file: string;
changes: number;
insertions: number;
deletions: number;
binary: false;
/** `--name-status` argument needed */
status?: DiffNameStatus;
}
export interface DiffResultBinaryFile {
file: string;
before: number;
after: number;
binary: true;
/** `--name-status` argument needed */
status?: string;
}
export interface DiffResult {
/** The total number of files changed as reported in the summary line */
changed: number;
/** When present in the diff, lists the details of each file changed */
files: Array<DiffResultTextFile | DiffResultBinaryFile>;
/** The number of files changed with insertions */
insertions: number;
/** The number of files changed with deletions */
deletions: number;
}
export interface FetchResult {
raw: string;
remote: string | null;
branches: {
name: string;
tracking: string;
}[];
tags: {
name: string;
tracking: string;
}[];
updated: {
name: string;
tracking: string;
to: string;
from: string;
}[];
deleted: {
tracking: string;
}[];
}
/** Represents the response to git.grep */
export interface GrepResult {
paths: Set<string>;
results: Record<
string,
Array<{
line: number;
path: string;
preview: string;
}>
>;
}
/**
* The `InitResult` is returned when (re)initialising a git repo.
*/
export interface InitResult {
/**
* Boolean representing whether the `--bare` option was used
*/
readonly bare: boolean;
/**
* Boolean representing whether the repo already existed (re-initialised rather than initialised)
*/
readonly existing: boolean;
/**
* The path used when initialising
*/
readonly path: string;
/**
* The git configuration directory - for a bare repo this is the same as `path`, in non-bare repos
* this will usually be a sub-directory with the name `.git` (or value of the `$GIT_DIR` environment
* variable).
*/
readonly gitDir: string;
}
/**
* A parsed response summary for calls to `git mv`
*/
export interface MoveResult {
/**
* Array of files moved
*/
moves: Array<{ from: string; to: string }>;
}
export interface PullDetailFileChanges {
[fileName: string]: number;
}
export interface PullDetailSummary {
changes: number;
insertions: number;
deletions: number;
}
export interface PullDetail {
/** Array of all files that are referenced in the pull */
files: string[];
/** Map of file names to the number of insertions in that file */
insertions: PullDetailFileChanges;
/** Map of file names to the number of deletions in that file */
deletions: PullDetailFileChanges;
summary: PullDetailSummary;
/** Array of file names that have been created */
created: string[];
/** Array of file names that have been deleted */
deleted: string[];
}
export interface PullResult extends PullDetail, RemoteMessageResult {}
/**
* Wrapped with the `GitResponseError` as the exception thrown from a `git.pull` task
* to provide additional detail as to what failed.
*/
export interface PullFailedResult {
remote: string;
hash: {
local: string;
remote: string;
};
branch: {
local: string;
remote: string;
};
message: string;
}
/**
* Represents file name changes in a StatusResult
*/
export interface StatusResultRenamed {
from: string;
to: string;
}
export interface FileStatusResult {
/** Original location of the file, when the file has been moved */
from?: string;
/** Path of the file */
path: string;
/** First digit of the status code of the file, e.g. 'M' = modified.
Represents the status of the index if no merge conflicts, otherwise represents
status of one side of the merge. */
index: string;
/** Second digit of the status code of the file. Represents status of the working directory
if no merge conflicts, otherwise represents status of other side of a merge.
See https://git-scm.com/docs/git-status#_short_format for full documentation of possible
values and their meanings. */
working_dir: string;
}
/**
* The StatusResult is returned for calls to `git.status()`, represents the state of the
* working directory.
*/
export interface StatusResult {
not_added: string[];
conflicted: string[];
created: string[];
deleted: string[];
/**
* Ignored files are not listed by default, add `--ignored` to the task options in order to see
* this array of ignored files/paths.
*
* Note: ignored files will not be added to the `files` array, and will not be included in the
* `isClean()` calculation.
*/
ignored?: string[];
modified: string[];
renamed: StatusResultRenamed[];
staged: string[];
/**
* All files represented as an array of objects containing the `path` and status in `index` and
* in the `working_dir`.
*/
files: FileStatusResult[];
/**
* Number of commits ahead of the tracked branch
*/
ahead: number;
/**
*Number of commits behind the tracked branch
*/
behind: number;
/**
* Name of the current branch
*/
current: string | null;
/**
* Name of the branch being tracked
*/
tracking: string | null;
/**
* Detached status of the working copy, for more detail of what the working branch
* is detached from use `git.branch()`
*/
detached: boolean;
/**
* Gets whether this represents a clean working branch.
*/
isClean(): boolean;
}
/**
* Response retrieved when using the `git.tags` method
*/
export interface TagResult {
/**
* All tag names
*/
all: string[];
/**
* The semver latest tag name or `undefined` when no tags are named in the response
*/
latest: string | undefined;
}
/**
* The ListLogLine represents a single entry in the `git.log`, the properties on the object
* are mixed in depending on the names used in the format (see `DefaultLogFields`), but some
* properties are dependent on the command used.
*/
export interface ListLogLine {
/**
* When using a `--stat=4096` or `--shortstat` options in the `git.log` or `git.stashList`,
* each entry in the `ListLogSummary` will also have a `diff` property representing as much
* detail as was given in the response.
*/
diff?: DiffResult;
}
export interface LogResult<T = DefaultLogFields> {
all: ReadonlyArray<T & ListLogLine>;
total: number;
latest: (T & ListLogLine) | null;
}
/**
* Where the file was deleted, if there is a modify/delete conflict
*/
export interface MergeConflictDeletion {
deleteRef: string;
}
/**
* Represents a single file with conflicts in the MergeSummary
*/
export interface MergeConflict {
/**
* Type of conflict
*/
reason: string;
/**
* Path to file
*/
file: string | null;
/**
* Additional detail for the specific type of conflict
*/
meta?: MergeConflictDeletion;
}
export type MergeResultStatus = 'success' | string;
export interface MergeDetail {
conflicts: MergeConflict[];
merges: string[];
result: MergeResultStatus;
readonly failed: boolean;
}
export type MergeResult = PullResult & MergeDetail;
/**
*
*/
export interface PushResultPushedItem {
local: string;
remote: string;
readonly deleted: boolean;
readonly tag: boolean;
readonly branch: boolean;
readonly new: boolean;
readonly alreadyUpdated: boolean;
}
export interface RemoteMessagesObjectEnumeration {
enumerating: number;
counting: number;
compressing: number;
total: {
count: number;
delta: number;
};
reused: {
count: number;
delta: number;
};
packReused: number;
}
export interface RemoteMessages {
all: string[];
objects?: RemoteMessagesObjectEnumeration;
}
export interface PushResultRemoteMessages extends RemoteMessages {
pullRequestUrl?: string;
vulnerabilities?: {
count: number;
summary: string;
url: string;
};
}
export interface RemoteMessageResult<T extends RemoteMessages = RemoteMessages> {
remoteMessages: T;
}
export interface PushResultBranchUpdate {
head: {
local: string;
remote: string;
};
hash: {
from: string;
to: string;
};
}
export interface PushDetail {
repo?: string;
ref?: {
local: string;
};
pushed: PushResultPushedItem[];
branch?: {
local: string;
remote: string;
remoteName: string;
};
update?: PushResultBranchUpdate;
}
export interface PushResult extends PushDetail, RemoteMessageResult<PushResultRemoteMessages> {}
/**
* @deprecated
* For consistent naming, please use `CommitResult` instead of `CommitSummary`
*/
export type CommitSummary = CommitResult;
/**
* @deprecated
* For consistent naming, please use `MergeResult` instead of `MergeSummary`
*/
export type MergeSummary = MergeResult;
/**
* @deprecated to aid consistent naming, please use `BranchSingleDeleteResult` instead of `BranchDeletionSummary`.
*/
export type BranchDeletionSummary = BranchSingleDeleteResult;
/**
* @deprecated to aid consistent naming, please use `BranchMultiDeleteResult` instead of `BranchDeletionBatchSummary`.
*/
export type BranchDeletionBatchSummary = BranchMultiDeleteResult;
export type MoveSummary = MoveResult;
/**
* @deprecated to aid consistent naming, please use `LogResult` instead of `ListLogSummary`.
*/
export type ListLogSummary<T = DefaultLogFields> = LogResult<T>;