UNPKG

@alwatr/nitrobase-types

Version:

Nitrobase is a blazingly fast, lightweight database built on JSON. It stores data entirely in memory for lightning-quick access, while also providing a JSON file backup for persistence. You can easily serve your data over the web using our high-performanc

219 lines 6.04 kB
/** * The subdirectory location for each nitrobase file. */ export declare enum Region { /** * Nitrobase file location that can be accessed by anyone. e.g. Product list. */ Public = "p", /** * Nitrobase file location that can be accessed by authenticated users. e.g. Special price list for dealers */ Authenticated = "a", /** * Nitrobase file location that can be accessed by admins and managers only. e.g. User list. */ Managers = "m", /** * Nitrobase file location specific to each user id. Can be accessed using the user token. e.g. User profile and User orders. */ PerUser = "u", /** * Nitrobase file location specific to each owner id. e.g. user token or device id. */ PerOwner = "o", /** * Private nitrobase file location. Cannot be accessed publicly and must be directly accessed by the admin API only. * e.g. User secret data. */ Secret = ".s" } /** * The different types of nitrobase file formats. */ export declare enum StoreFileType { /** * Type used for `single document` storage. */ Document = "doc", /** * Type used for storing a `collection` of simpler documents, referred to as collection items. */ Collection = "col", /** * Type used for storing a collection of items that are `append-only`. */ AppendOnlyCollection = "aoc" } /** * Nitrobase file extension (encode). */ export declare enum StoreFileExtension { /** * AlwatrNitrobase JSON format. */ Json = "asj" } /** * Unique identifier of the nitrobase file. * * Get from user for select nitrobase file. */ export type StoreFileId = { /** * The nitrobase filename. */ readonly name: string; /** * The region where the nitrobase file is located. * @see {@link Region} */ readonly region: Region; /** * The owner of the nitrobase file. * If the region is `Region.PerX` then this is the user id, device id, or token id etc. * @see {@link Region} * */ readonly ownerId?: string; /** * The schema version for easy migration by user. * If not specified, the default value is `1`. */ schemaVer?: number; }; /** * Nitrobase the complete metadata of the file in the root database. */ export type StoreFileStat = StoreFileId & { /** * The type of the nitrobase file. * * @see {@link StoreFileType} */ readonly type: StoreFileType; /** * The extension used for the nitrobase file. * * @see {@link StoreFileExtension} */ readonly extension?: StoreFileExtension; /** * The save debounce timeout in milliseconds for minimal disk I/O usage. * This is used to limit the frequency of disk writes for performance reasons. * The recommended value is `40`. * If not specified, the default value get from AlwatrNitrobase `defaultChangeDebounce`. */ readonly changeDebounce?: number; /** * The name of the migration process. * This is used to migrate the nitrobase file to a new schema version. */ readonly migrateName?: string; }; /** * Represents the metadata of a nitrobase file. */ export type StoreFileMeta = StoreFileStat & { /** * Nitrobase file format version. */ fv: number; /** * The revision number of the nitrobase file. * * This number is incremented every time the nitrobase file is updated. */ rev: number; /** * The Unix timestamp (in milliseconds since the epoch) for when the nitrobase file was created. */ readonly created: number; /** * The Unix timestamp (in milliseconds since the epoch) for when the nitrobase file was updated. */ updated: number; /** * Last auto increment id. */ lastAutoId?: number; /** * The extra metadata for the nitrobase file. */ extra: JsonObject; }; export type StoreFileData<T extends JsonObject = JsonObject> = T; /** * Represents the context of a nitrobase file. * @template TData The type of the data content in the nitrobase file. */ export type StoreFileContext<TData extends JsonObject = JsonObject> = { /** * The status of the nitrobase file. * * if false, the Alwatr nitrobase throws an error. */ readonly ok: true; /** * The metadata of the nitrobase file. * @see {@link StoreFileMeta} */ readonly meta: StoreFileMeta; /** * The data content of the nitrobase file. */ readonly data: TData; }; /** * Nitrobase file meta only content type. */ export type StoreFileMetaOnlyContext = Omit<StoreFileContext<never>, 'data'>; /** * StoreFileContext for document type. */ export type DocumentContext<T extends JsonObject = JsonObject> = StoreFileContext<T>; /** * The metadata of an item in a collection. */ export type CollectionItemMeta = { /** * The unique identifier for the collection item. */ readonly id: string | number; /** * The Unix timestamp (in milliseconds since the epoch) for when the collection item was created. */ readonly created: number; /** * The Unix timestamp (in milliseconds since the epoch) for when the collection item was updated. */ updated: number; /** * The revision number for the collection item. * * This number is incremented each time the item is updated. */ rev: number; }; /** * Collection item context type. */ export type CollectionItem<TData extends JsonObject = JsonObject> = { /** * Collection item's metadata. */ readonly meta: CollectionItemMeta; /** * Collection item data. */ readonly data: TData; }; /** * Collection item context type. */ export type CollectionContext<T extends JsonObject = JsonObject> = StoreFileContext<DictionaryReq<CollectionItem<T>>>; export type AlwatrAuth = { userId: string; userToken: string; }; //# sourceMappingURL=main.d.ts.map