alinea
Version:
Headless git-based CMS
102 lines (101 loc) • 3.3 kB
TypeScript
import type { StoredRow } from '../Infer.js';
import type { ImagePreviewDetails } from '../media/CreatePreview.js';
import { Type } from '../Type.js';
import type { Mutation } from './Mutation.js';
import type { WriteableGraph } from './WriteableGraph.js';
type Awaitable<T> = T | Promise<T>;
type Task = (graph: WriteableGraph) => Awaitable<Array<Mutation>>;
export declare class Operation {
task: Task;
constructor(task: Task);
}
export interface CreateQuery<Fields> {
type: Type<Fields>;
id?: string;
workspace?: string;
root?: string;
parentId?: string | null;
locale?: string | null;
status?: 'draft' | 'published' | 'archived';
set: Partial<StoredRow<Fields>>;
insertOrder?: 'first' | 'last';
overwrite?: boolean;
}
export declare class CreateOp<Fields> extends Operation {
id: string;
constructor(op: CreateQuery<Fields>);
}
export declare class DeleteOp extends Operation {
protected entryIds: Array<string>;
constructor(entryIds: Array<string>);
}
export interface DiscardQuery {
id: string;
locale?: string | null;
status: 'draft' | 'archived' | 'published';
}
export declare class DiscardOp extends Operation {
constructor(query: DiscardQuery);
}
export interface UpdateQuery<Fields> {
type?: Type<Fields>;
id: string;
set: Partial<StoredRow<Fields>>;
status?: 'draft' | 'published' | 'archived';
locale?: string | null;
}
export declare class UpdateOperation<Definition> extends Operation {
constructor(query: UpdateQuery<Definition>);
}
export interface MoveQuery {
id: string;
after?: string | null;
toParent?: string;
toRoot?: string;
}
export declare class MoveOperation extends Operation {
constructor(query: MoveQuery);
}
export interface PublishQuery {
id: string;
status: 'draft' | 'archived';
locale?: string | null;
}
export declare class PublishOperation extends Operation {
constructor(query: PublishQuery);
}
export interface UnpublishQuery {
id: string;
locale?: string | null;
}
export declare class UnpublishOperation extends Operation {
constructor(query: UnpublishQuery);
}
export interface ArchiveQuery {
id: string;
locale?: string | null;
}
export declare class ArchiveOperation extends Operation {
constructor(query: ArchiveQuery);
}
export interface UploadQuery {
file: File | [string, Uint8Array];
workspace?: string;
root?: string;
parentId?: string | null;
createPreview?(blob: Blob): Promise<ImagePreviewDetails>;
replaceId?: string;
}
export declare class UploadOperation extends Operation {
id: string;
constructor(query: UploadQuery);
}
export declare function update<Definition>(query: UpdateQuery<Definition>): UpdateOperation<Definition>;
export declare function create<Definition>(query: CreateQuery<Definition>): CreateOp<Definition>;
export declare function remove(...entryIds: Array<string>): DeleteOp;
export declare function discard(query: DiscardQuery): DiscardOp;
export declare function upload(query: UploadQuery): UploadOperation;
export declare function move(query: MoveQuery): MoveOperation;
export declare function publish(query: PublishQuery): PublishOperation;
export declare function archive(query: ArchiveQuery): ArchiveOperation;
export {};