///
///
import { Cursor } from '@staticcms/core/lib/util';
import API from './API';
import type { BackendClass, BackendEntry, ConfigWithDefaults, Credentials, DisplayURL, ImplementationFile, ImplementationMediaFile, PersistOptions, UnpublishedEntry, 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 { GiteaUser } from './types';
type ApiFile = {
id: string;
type: string;
name: string;
path: string;
size: number;
};
export default class Gitea implements BackendClass {
lock: AsyncLock;
api: API | null;
options: {
proxied: boolean;
API: API | null;
};
originRepo: string;
repo?: string;
branch: string;
apiRoot: string;
mediaFolder?: string;
token: string | null;
_currentUserPromise?: Promise;
_userIsOriginMaintainerPromises?: {
[key: string]: Promise;
};
_mediaDisplayURLSem?: Semaphore;
constructor(config: ConfigWithDefaults, options?: {});
status(): Promise<{
auth: {
status: boolean;
};
api: {
status: boolean;
statusPage: string;
};
}>;
authComponent(): import("react").FC;
restoreUser(user: User): Promise<{
name: string;
login: string;
avatar_url: string;
token: string;
}>;
currentUser({ token }: {
token: string;
}): Promise;
userIsOriginMaintainer({ username: usernameArg, token, }: {
username?: string;
token: string;
}): Promise;
authenticate(state: Credentials): Promise<{
name: string;
login: string;
avatar_url: string;
token: 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): 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;
}>;
unpublishedEntries(): Promise;
unpublishedEntry(): Promise;
unpublishedEntryDataFile(): Promise;
unpublishedEntryMediaFile(): Promise;
updateUnpublishedEntryStatus(): Promise;
publishUnpublishedEntry(): Promise;
deleteUnpublishedEntry(): Promise;
getDeployPreview(): Promise<{
url: string;
status: string;
} | null>;
}
export {};