import { WildcardHandler } from "mitt"; import { Document } from "./Document.js"; import { Link } from "./Link.js"; import { DocumentsOtions, SortDirection } from "./query.js"; import { Task } from "./Task.js"; type Events = { update: { document: Document; }; delete: { document: Document; }; create: { document: Document; }; ready: void; }; export { Document, DocumentsOtions, SortDirection, Task, Link }; export type Frontmatter = Record; export type BrainDBOptionsIn = { /** * If `dbPath` is present, than DB would be persited to the disc and used as cache on the next run */ dbPath?: string; /** * Even if `dbPath` is absent, and DB stored in memory it can be long runing process and cache can be used */ cache?: boolean; /** * function to generate path (URL) a the document */ url?: (filePath: string, frontmatter: Frontmatter) => string; /** * function to generate slug for a document */ slug?: (filePath: string, frontmatter: Frontmatter) => string; /** * root of the project */ root: string; /** * source files */ source?: string; /** * if `true` will use git date for `updated_at` field. * It will search for git repo in `root` or any parent directory */ git?: boolean; /** * if you never use Document's `markdown` and `text` * you can set this to `false` in order to save some memory */ storeMarkdown?: boolean; }; export type BrainDBOptionsOut = { linkType?: "PML" | "web"; /** * If output use PML, sometimes it may be required to adjust them to the new root */ transformPath?: (path: string) => string; transformFrontmatter?: (doc: Document) => Frontmatter; /** * experimental * @param path string * @param node mdast node * @returns undefined | mdast node */ transformUnresolvedLink?: (path: string, node: any) => any; }; export declare class BrainDB { private cfg; private emitter; private db; private watcher; private initializing; private initQueue; constructor(cfg: BrainDBOptionsIn); start(silent?: boolean): this; stop(): Promise; on(type: "*", handler: WildcardHandler): this; off(type: "*", handler: WildcardHandler): this; ready(): Promise; documentsSync(options?: DocumentsOtions): Document[]; documents(options?: DocumentsOtions): Promise; findDocumentSync(path: string): Document; findDocument(path: string): Promise; linksSync(): Link[]; links(): Promise; /** * TODO: filter by checked true/false */ tasksSync(): Task[]; tasks(): Promise; __rawQuery(query: string): unknown[]; }