@aurios/jason
Version:
A simple, lightweight, and embeddable JSON document database built on Bun.
30 lines (29 loc) • 1.35 kB
TypeScript
import type { BaseDocument, Document, ExtractDocument } from "./document.js";
import type { ValidationFunction } from "./utils.js";
/**
* Type to extract the document type from a collection
*/
export type CollectionDocument<T extends BaseCollections, K extends keyof T> = BaseDocument<ExtractDocument<T[K]>>;
/**
* Base interface for collections map in JasonDB
*/
export interface BaseCollections {
[key: string]: unknown[];
}
export type CollectionParam<Collections, T extends keyof Collections> = Omit<Document<Collections, T>, "id" | "_lastModified"> & Partial<Pick<Document<Collections, T>, "id" | "_lastModified">>;
/**
* Options for configuring a collection.
*
* @template T - The type of documents in the collection.
* @property initialData - An optional array of initial data to populate the collection.
* @property schema - An optional validation function for documents in the collection.
* @property concurrencyStrategy - An optional concurrency strategy for the collection.
* @property cacheTimeout - An optional cache timeout in milliseconds.
* @property generateMetadata - An optional flag to generate metadata for documents in the collection.
*/
export interface CollectionOptions<T = BaseDocument> {
initialData?: T[];
schema?: ValidationFunction<T>;
cacheTimeout?: number;
generateMetadata?: boolean;
}