alinea
Version:
Headless git-based CMS
43 lines (42 loc) • 1.92 kB
TypeScript
import type { PreviewInfo } from 'alinea/backend/Previews';
import { type AuthResult } from 'alinea/cloud/AuthResult';
import type { Config } from './Config.js';
import type { LocalConnection, Revision, UploadResponse } from './Connection.js';
import type { Draft, DraftKey } from './Draft.js';
import type { CommitRequest } from './db/CommitRequest.js';
import type { Mutation } from './db/Mutation.js';
import type { EntryRecord } from './EntryRecord.js';
import type { AnyQueryResult, GraphQuery } from './Graph.js';
import { ReadonlyTree } from './source/Tree.js';
import type { User } from './User.js';
export type AuthenticateRequest = (request?: RequestInit) => RequestInit | undefined;
export interface ClientOptions {
config: Config;
url: string;
applyAuth?: AuthenticateRequest;
unauthorized?: () => void;
}
export declare class Client implements LocalConnection {
#private;
constructor(options: ClientOptions);
get url(): string;
authStatus(): Promise<AuthResult>;
logout: () => Promise<void>;
previewToken(request: PreviewInfo): Promise<string>;
prepareUpload(file: string): Promise<UploadResponse>;
user(): Promise<User | undefined>;
resolve<Query extends GraphQuery>(query: Query): Promise<AnyQueryResult<Query>>;
mutate(mutations: Array<Mutation>): Promise<{
sha: string;
}>;
authenticate(applyAuth: AuthenticateRequest, unauthorized: () => void): Client;
revisions(file: string): Promise<Array<Revision>>;
revisionData(file: string, revisionId: string): Promise<EntryRecord | undefined>;
getTreeIfDifferent(sha: string): Promise<ReadonlyTree | undefined>;
getBlobs(shas: Array<string>): AsyncGenerator<[sha: string, blob: Uint8Array]>;
write(request: CommitRequest): Promise<{
sha: string;
}>;
getDraft(key: DraftKey): Promise<Draft | undefined>;
storeDraft(draft: Draft): Promise<void>;
}