///
///
import { WorkflowStatus } from '@staticcms/core/constants/publishModes';
import { Cursor } from '@staticcms/core/lib/util';
import API from './API';
import type { AuthScheme, BackendClass, BackendEntry, ConfigWithDefaults, Credentials, DisplayURL, ImplementationFile, PersistOptions, UnpublishedEntry, UnpublishedEntryMediaFile, User } from '@staticcms/core';
import type { AsyncLock } from '@staticcms/core/lib/util';
import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy';
import type { Semaphore } from 'semaphore';
import type { GitHubUser } from './types';
type ApiFile = {
id: string;
type: string;
name: string;
path: string;
size: number;
};
export default class GitHub implements BackendClass {
lock: AsyncLock;
api: API | null;
options: {
proxied: boolean;
API: API | null;
useWorkflow?: boolean;
initialWorkflowStatus: WorkflowStatus;
};
originRepo: string;
repo?: string;
openAuthoringEnabled: boolean;
useOpenAuthoring?: boolean;
alwaysForkEnabled: boolean;
branch: string;
apiRoot: string;
mediaFolder?: string;
previewContext: string;
token: string | null;
authScheme: AuthScheme;
squashMerges: boolean;
cmsLabelPrefix: string;
_currentUserPromise?: Promise;
_userIsOriginMaintainerPromises?: {
[key: string]: Promise;
};
_mediaDisplayURLSem?: Semaphore;
constructor(config: ConfigWithDefaults, options?: {});
status(): Promise<{
auth: {
status: boolean;
};
api: {
status: any;
statusPage: string;
};
}>;
authComponent(): import("react").FC;
restoreUser(user: User): Promise<{
token: string;
useOpenAuthoring: boolean | undefined;
name: string;
login: string;
}>;
pollUntilForkExists({ repo, token }: {
repo: string;
token: string;
}): Promise;
currentUser({ token }: {
token: string;
}): Promise;
userIsOriginMaintainer({ username: usernameArg, token, }: {
username?: string;
token: string;
}): Promise;
forkExists({ token }: {
token: string;
}): Promise;
authenticateWithFork({ userData, getPermissionToFork, }: {
userData: User;
getPermissionToFork: () => Promise | boolean;
}): Promise;
authenticate(state: Credentials): Promise<{
token: string;
useOpenAuthoring: boolean | undefined;
name: string;
login: string;
}>;
logout(): void;
getToken(): Promise;
getCursorAndFiles: (files: ApiFile[], page: number) => {
cursor: Cursor;
files: ApiFile[];
};
entriesByFolder(folder: string, extension: string, depth: number): Promise;
allEntriesByFolder(folder: string, extension: string, depth: number, pathRegex?: RegExp): Promise;
entriesByFiles(files: ImplementationFile[]): Promise;
getEntry(path: string): Promise<{
file: {
path: string;
id: null;
};
data: string;
} | {
file: {
path: string;
id: null;
};
data: string;
}>;
getMedia(mediaFolder?: string | undefined, folderSupport?: boolean): Promise<{
id: string;
name: string;
size: number;
displayURL: {
id: string;
path: string;
};
path: string;
isDirectory: boolean;
}[]>;
getMediaFile(path: string): Promise<{
id: string;
displayURL: string;
path: string;
name: string;
size: number;
file: File;
url: string;
}>;
getMediaDisplayURL(displayURL: DisplayURL): Promise;
persistEntry(entry: BackendEntry, options: PersistOptions): Promise;
persistMedia(mediaFile: AssetProxy, options: PersistOptions): Promise<{
id: string;
name: string;
size: number;
displayURL: string;
path: string;
}>;
deleteFiles(paths: string[], commitMessage: string): Promise;
traverseCursor(cursor: Cursor, action: string): Promise<{
entries: import("@staticcms/core").ImplementationEntry[];
cursor: Cursor;
}>;
/**
* Editorial Workflow
*/
unpublishedEntries(): Promise;
unpublishedEntry({ id, collection, slug, }: {
id?: string;
collection?: string;
slug?: string;
}): Promise;
getBranch(collection: string, slug: string): string;
unpublishedEntryDataFile(collection: string, slug: string, path: string, id: string): Promise;
unpublishedEntryMediaFile(collection: string, slug: string, path: string, id: string): Promise<{
id: string;
displayURL: string;
path: string;
name: string;
size: number;
file: File;
}>;
getDeployPreview(collection: string, slug: string): Promise<{
url: string;
status: import("@staticcms/core/lib/util/API").PreviewState;
} | null>;
updateUnpublishedEntryStatus(collection: string, slug: string, newStatus: WorkflowStatus): Promise;
deleteUnpublishedEntry(collection: string, slug: string): Promise;
publishUnpublishedEntry(collection: string, slug: string): Promise;
loadMediaFile(branch: string, file: UnpublishedEntryMediaFile): Promise<{
id: string;
displayURL: string;
path: string;
name: string;
size: number;
file: File;
}>;
}
export {};