@small-tech/jsdb
Version:
A zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database for Small Web applications that persists to a JavaScript transaction log.
72 lines (65 loc) • 2.14 kB
TypeScript
/**
Returns a proxy object, not an instance of the class.
@class
@returns {Proxy} Data proxy.
*/
export default class JSDB {
static isBeingInstantiatedByFactoryMethod: boolean;
/** @type Object<string, any> */
static openDatabases: {
[x: string]: any;
};
/**
@typedef { new (...args: any[]) => any } AnyClass
@typedef {{
deleteIfExists?: boolean,
compactOnLoad?: boolean,
alwaysUseLineByLineLoads?: boolean,
classes?: Array<AnyClass>
}} DatabaseOptions
*/
/**
Returns a reference to the JSDB at the given basepath.
If it’s already open, returns the reference.
@param {string} basePath
@param {DatabaseOptions} [options={deleteIfExists: false, compactOnLoad: true, alwaysUseLineByLineLoads: false}]
*/
static open(basePath: string, options?: {
deleteIfExists?: boolean;
compactOnLoad?: boolean;
alwaysUseLineByLineLoads?: boolean;
classes?: Array<new (...args: any[]) => any>;
}): any;
/**
@package
@param {string} basePath
@param {DatabaseOptions} [options={deleteIfExist: false, compactOnLoad: true, alwaysUseLineByLineLoads: false}]
*/
constructor(basePath: string, options?: {
deleteIfExists?: boolean;
compactOnLoad?: boolean;
alwaysUseLineByLineLoads?: boolean;
classes?: Array<new (...args: any[]) => any>;
});
/** @type Array<any> */
tableDataProxies: Array<any>;
/** @type {Array<string>} */
tableNames: Array<string>;
basePath: string;
options: {
deleteIfExists?: boolean;
compactOnLoad?: boolean;
alwaysUseLineByLineLoads?: boolean;
classes?: Array<new (...args: any[]) => any>;
};
dataProxy: any;
onTableDelete(tableDataProxy: any): void;
loadTables(): void;
loadingTables: boolean;
get proxyHandler(): {
set: any;
get: any;
};
getHandler(target: any, property: any, receiver: any, ...args: any[]): any;
setHandler(target: any, property: any, value: any, receiver: any): boolean;
}