@e280/quay
Version:
File-browser and outliner UI for the web
35 lines (34 loc) • 1.13 kB
TypeScript
/**
* 🌿 Async source for loading items into Quay.
* - crawlable and callable by the ui
* - the functions provided are available for the ui user
* - as we crawl, every item we see is cached for sync rendering
* - minimal so as to be compatible even with raw opfs
* - Opfs, Cellar, etc, will literally provide Twig implementations
*/
export type Twig<T extends Twig = any> = {
readonly id: string;
name: string;
parent: T | null;
rename?: (name: string) => Promise<void>;
delete?: () => Promise<void>;
move?: (o: {
parent: T;
}) => Promise<void>;
copy?: (o: {
parent: T;
name: string;
}) => Promise<void>;
container?: {
create(o: CreationOptions): Promise<T>;
children(o?: ListingOptions): Promise<T[]>;
crawl(predicate: (item: T, ancestors: T[]) => Promise<boolean>): AsyncIterable<T>;
};
};
export type Lens<T extends Twig = any> = (item: T) => boolean;
export type WritingOptions = {};
export type ReadingOptions = {};
export type CreationOptions = {};
export type ListingOptions<T extends Twig = any> = {
lens?: Lens<T>;
};