UNPKG

@alinex/datastore

Version:

Read, work and write data structures from and to differents locations and formats.

231 lines 7.79 kB
/// <reference types="node" /> import { MergeInput } from "@alinex/data/lib/merge"; import * as compressor from "./compression"; import * as formatter from "./format"; interface Options { /** * Proxy <host>:<port> to be used for HTTP/HTTPS. */ proxy?: string; /** * One of: get, delete, head, options, post, put, patch (default: get) */ httpMethod?: string; /** * Additional HTTP/HTTPS header to send */ httpHeader?: string[]; /** * Additional data to be send as body within HTTP/HTTPS POST or PUT calls */ httpData?: string; /** * Ignore response code and also go on if not code 2xx. */ ignoreError?: boolean; /** * Private Open SSH Key used to access with SFTP protocol. */ privateKey?: Buffer | string; /** * Passphrase for the private Open SSH Key. */ passphrase?: string; /** * Maximum number of lines to read for file protocol. */ tail?: number; /** * Search path for postgres queries */ search?: string; /** * Compression method to use (autodetected from URL). */ compression?: compressor.Compression; /** * Compression level 0 (no compression) to 9 (best compression, default). */ compressionLevel?: number; /** * File format to be used (autodetected from URL). */ format?: formatter.Format; /** * Pattern for text format to be split into pattern matches (Using named groups) for event logs. */ pattern?: RegExp; /** * Flag to read the CSV, XLS or XLSX always as with records (only needed with less than 3 columns). */ records?: boolean; /** * Character to be used as field separator in CSV data. */ delimiter?: string; /** * Character used to quote field values in CSV data. */ quote?: string; /** * Use module format in storing as JavaScript, so you can load it using normal require or import. */ module?: boolean; /** * Define the root element name in formatting as XML. */ rootName?: string; } /** Definition for MultiFile loading */ interface DataSource extends MergeInput { /** URL to load this structure. */ source?: string; /** Additional settings. */ options?: Options; /** Meta information set on loading. */ meta?: any; } /** * DataStore can be used to load, save and access different data structures. */ declare class DataStore { /** * Real content, ready to be used. */ data: any; /** * Options to be used for load/save and parsing of data formats. */ options: Options; private _source; private _map; private _load; private changed; /** * Initialize a new data store. * @param input one or multiple data sources to later be used in load/save */ constructor(...input: DataSource[]); /** * Create a new data store and load it from single source. * @param input one or multiple data sources */ static load(...input: DataSource[]): Promise<DataStore>; /** * Create a new data store and load it from single source. * @param source URL to load * @param options options to load source */ static url(source: string, options?: Options): Promise<DataStore>; /** * Create a new data store with preset data. * @param source data structure to be set */ static data(data: any, source?: string): Promise<DataStore>; /** * Load from persistent storage and parse content. * @param input URL or list to read from * @return parsed data structure (same like ds.data) */ load(...input: DataSource[]): Promise<any>; private multiload; /** * Reload and parse already existing content again. * @param time number of seconds to wait till reload * @return flag if reload was done (only if changed) */ reload(time?: number): Promise<boolean>; /** * Save data structure to persistent store. * @param output URL to be stored to * @return true after storing */ save(output?: DataSource): Promise<boolean>; /** * Only parse an olready loaded buffer into data structure. * @param uri URL specifying where the data is stored, also used to read the format from if not specified as option * @param buffer byte array buffer with the file to be parsed * @param options additional settings * @return parsed data structure (same like ds.data) */ parse(uri: string, buffer: Buffer | string, options?: Options): Promise<any>; /** * Only format the data structure to be stored later. * @param uri URL specifying where the data is stored, also used to read the format from if not specified as option * @param options additional settings * @return byte array buffer with the file to be stored */ format(uri: string, options?: Options): Promise<Buffer>; /** * Get the DataSource list or source URL. */ get source(): DataSource[] | string | undefined; /** * Set the DataSource list or source URL. * @param data URL specifying where the data is/will be stored */ set source(data: DataSource[] | string | undefined); /** * Get meta information from the DataSource list or source URL. */ get meta(): any; /** * Get mapping of data elements to it's sources. */ get map(): any; /** * Check the given path and return true if this element is defined else false. * @param command filter command to select elements */ has(command?: string): boolean; /** * Get the element at the defined path. * @param command filter command to select elements * @param fallback default value to be used if not found */ get(command?: string, fallback?: any): any; /** * Like get but return the result as new DataStore. * @param command filter command to select elements * @param fallback default value to be used if not found */ filter(command?: string, fallback?: any): DataStore; /** * Set the value of an element by path specification. * @param path full way to the selected element in the data structure * @param value new content to be set * @param doNotReplace if set to true, only set if it is currently not set * @return value before or undefined if nothing was set */ set(path: string | number, value: any, doNotReplace?: boolean): any; /** * Insert elements into array. * @param path full way to the selected element in the data structure * @param value content to be added * @param pos position in the array (0=first, 9999=last, -1=before last) */ insert(path: string | number, value: any, pos?: number): void; /** * Add element to the end of the array. * @param path full way to the selected element in the data structure * @param values content to be added */ push(path: string | number, ...values: any[]): void; /** * Keep the specified element but make it an empty array or object. * @param path full way to the selected element in the data structure * @return the value which was deleted */ empty(path: string | number): any; /** * Removes a element from the data structure, it will be undefined afterwards. * @param path full way to the selected element in the data structure * @return the value which was deleted */ delete(path: string | number): any; } declare const formats: string[]; declare const compressions: string[]; export { DataStore, formats, compressions, DataSource, Options }; export default DataStore; //# sourceMappingURL=index.d.ts.map