///
///
import { WorkflowStatus } from '@staticcms/core/constants/publishModes';
import { NetlifyAuthenticator } from '@staticcms/core/lib/auth';
import API from './API';
import GitLfsClient from './git-lfs-client';
import type { BackendClass, BackendEntry, ConfigWithDefaults, Credentials, DisplayURL, ImplementationFile, PersistOptions, UnpublishedEntry, User } from '@staticcms/core';
import type { ApiRequest, AsyncLock, Cursor } from '@staticcms/core/lib/util';
import type AssetProxy from '@staticcms/core/valueObjects/AssetProxy';
import type { Semaphore } from 'semaphore';
export default class BitbucketBackend implements BackendClass {
lock: AsyncLock;
api: API | null;
updateUserCredentials: (args: {
token: string;
refresh_token: string;
}) => Promise;
options: {
proxied: boolean;
API: API | null;
updateUserCredentials: (args: {
token: string;
refresh_token: string;
}) => Promise;
initialWorkflowStatus: WorkflowStatus;
};
repo: string;
branch: string;
apiRoot: string;
baseUrl: string;
siteId: string;
token: string | null;
mediaFolder?: string;
refreshToken?: string;
refreshedTokenPromise?: Promise;
authenticator?: NetlifyAuthenticator;
_mediaDisplayURLSem?: Semaphore;
squashMerges: boolean;
cmsLabelPrefix: string;
previewContext: string;
largeMediaURL: string;
_largeMediaClientPromise?: Promise;
authType: string;
constructor(config: ConfigWithDefaults, options?: {});
status(): Promise<{
auth: {
status: boolean;
};
api: {
status: any;
statusPage: string;
};
}>;
authComponent(): import("react").FC;
requestFunction: (req: ApiRequest) => Promise;
restoreUser(user: User): Promise<{
name: string;
login: string;
token: string | {};
avatar_url: string;
refresh_token: string | undefined;
username: string;
display_name: string;
nickname: string;
links: {
avatar: {
href: string;
};
};
}>;
authenticate(state: Credentials): Promise<{
name: string;
login: string;
token: string | {};
avatar_url: string;
refresh_token: string | undefined;
username: string;
display_name: string;
nickname: string;
links: {
avatar: {
href: string;
};
};
}>;
getRefreshedAccessToken(): Promise | undefined;
logout(): void;
getToken(): Promise;
apiRequestFunction: (req: ApiRequest) => Promise;
entriesByFolder(folder: string, extension: string, depth: number): Promise;
listAllFiles(folder: string, extension: string, depth: number): Promise<{
id: string;
type: string;
path: string;
name: string;
}[]>;
allEntriesByFolder(folder: string, extension: string, depth: number): Promise;
entriesByFiles(files: ImplementationFile[]): Promise;
getEntry(path: string): Promise<{
file: {
path: string;
id: null;
};
data: string;
}>;
getMedia(mediaFolder?: string | undefined, folderSupport?: boolean): Promise<{
id: string;
name: string;
path: string;
displayURL: {
id: string;
path: string;
};
isDirectory: boolean;
}[]>;
getLargeMediaClient(): Promise;
getMediaDisplayURL(displayURL: DisplayURL): Promise;
getMediaFile(path: string): Promise<{
id: string;
displayURL: string;
path: string;
name: string;
size: number;
file: File;
url: string;
}>;
persistEntry(entry: BackendEntry, options: PersistOptions): Promise;
persistMedia(mediaFile: {
fileObj: File;
size: number;
sha: string;
raw: string;
path: string;
} | AssetProxy, options: PersistOptions): Promise<{
displayURL: string;
path: string;
name: string;
size: number;
id: string;
file: File;
url: string;
}>;
_persistMedia(mediaFile: {
fileObj: File;
size: number;
sha: string;
raw: string;
path: string;
} | AssetProxy, options: PersistOptions): Promise<{
displayURL: string;
path: string;
name: string;
size: number;
id: string;
file: File;
url: string;
}>;
deleteFiles(paths: string[], commitMessage: string): Promise;
traverseCursor(cursor: Cursor, action: string): Promise<{
entries: import("@staticcms/core").ImplementationEntry[];
cursor: Cursor;
}>;
loadMediaFile(path: string, id: string, { branch }: {
branch: string;
}): Promise<{
id: string;
displayURL: string;
path: string;
name: string;
size: number;
file: File;
}>;
/**
* 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;
}>;
updateUnpublishedEntryStatus(collection: string, slug: string, newStatus: WorkflowStatus): Promise;
deleteUnpublishedEntry(collection: string, slug: string): Promise;
publishUnpublishedEntry(collection: string, slug: string): Promise;
getDeployPreview(collection: string, slug: string): Promise<{
url: string;
status: import("@staticcms/core/lib/util/API").PreviewState;
} | null>;
}