import { JsonDBConfig } from './lib/JsonDBConfig'; export { Config, ConfigWithAdapter } from './lib/JsonDBConfig'; export { DatabaseError, DataError } from './lib/Errors'; export { IAdapter } from './adapter/IAdapter'; export { JsonAdapter } from './adapter/data/JsonAdapter'; export { FileAdapter } from './adapter/file/FileAdapter'; export type FindCallback = (entry: any, index: number | string) => boolean; export declare class JsonDB { private loaded; private data; private readonly config; /** * JSONDB Constructor * @param config Configuration for the database */ constructor(config: JsonDBConfig); /** * Process datapath into different parts * @param dataPath */ private processDataPath; private retrieveData; private getParentData; /** * Get the wanted data * @param dataPath path of the data to retrieve * @returns {Promise<any>} */ getData(dataPath: string): Promise<any>; /** * Same as getData only here it's directly typed to your object * @param dataPath path of the data to retrieve * @returns {Promise} */ getObject<T>(dataPath: string): Promise<T>; /** * Same as getData but with your own object type and a possible default value when we can't find the data path * @param dataPath path of the data to retrieve * @param defaultValue value to use when the dataPath doesn't lead to data * @returns {Promise} * @throws {DataError} */ getObjectDefault<T>(dataPath: string, defaultValue?: T): Promise<T>; /** * Check for existing datapath * @param dataPath * @returns {Promise<boolean>} */ exists(dataPath: string): Promise<boolean>; /** * Returns the number of element which constitutes the array * @param dataPath * @returns {Promise<number>} * @throws {DataError} */ count(dataPath: string): Promise<number>; /** * Returns the index of the object that meets the criteria submitted. Returns -1, if no match is found. * @param dataPath base dataPath from where to start searching * @param searchValue value to look for in the dataPath * @param propertyName name of the property to look for searchValue * @returns {Promise<number>} */ getIndex(dataPath: string, searchValue: string | number, propertyName?: string): Promise<number>; /** * Return the index of the value inside the array. Returns -1, if no match is found. * @param dataPath base dataPath from where to start searching * @param searchValue value to look for in the dataPath * @returns {Promise<number>} */ getIndexValue(dataPath: string, searchValue: string | number): Promise<number>; private getArrayData; /** * Find all specific entry in an array/object * @param rootPath base dataPath from where to start searching * @param callback method to filter the result and find the wanted entry. Receive the entry and it's index. * @returns {Promise} * @throws {DataError} */ filter<T>(rootPath: string, callback: FindCallback): Promise<T[] | undefined>; /** * Find a specific entry in an array/object * @param rootPath base dataPath from where to start searching * @param callback method to filter the result and find the wanted entry. Receive the entry and it's index. * @returns {Promise} * @throws {DataError} */ find<T>(rootPath: string, callback: FindCallback): Promise<T | undefined>; /** * Pushing data into the database * @param dataPath path leading to the data * @param data data to push * @param override overriding or not the data, if not, it will merge them * @returns {Promise<void>} * @throws {DataError} */ push(dataPath: string, data: any, override?: boolean): Promise<void>; /** * Delete the data * @param dataPath path leading to the data */ delete(dataPath: string): Promise<void>; /** * Only use this if you know what you're doing. * It reset the full data of the database. * @param data */ resetData(data: any): void; /** * Reload the database from the file */ reload(): Promise<void>; /** * Manually load the database * It is automatically called when the first getData is done * @return {Promise<void>} * @throws {DatabaseError} */ load(): Promise<void>; /** * Manually save the database * By default you can't save the database if it's not loaded * @param force force the save of the database * @return {Promise<void>} * @throws {DatabaseError} */ save(force?: boolean): Promise<void>; /** * Convert a router style path to a normal path * By default propertyName to search is "id" * @param path router based path to a correct base path * @param propertyName name of the property to look for searchValue */ fromPath(path: string, propertyName?: string): Promise<string>; }