UNPKG

valuesaver

Version:

Save values in a storage and import them later back

334 lines (296 loc) 9.56 kB
type key = number | string; type value = any; type id = number | string; export class ValueSaver{ /** * Create a ValueSaver * @param array An array to import as key => value (not required) * @example * const save = new ValueSaver([{"key": "Some key", "value": "Some value"}]); */ constructor(array: object); /** * Set a value by a key * @param key The key of the value you want to save * @param value The value you want to save * @returns {ValueSaver} * @example * save.set("Some new key", "Some new value"); */ set(key: key, value: value) : ValueSaver; /** * Get a value by the key * @param key The key of the value you want to receive * @returns {value | boolean} * @example * save.get("Some key"); * // Returns "Some value" */ get(key: key) : value | boolean; /** * Delete a value by the key * @param key The key of the value that you want to delete */ delete(key: key) : ValueSaver; /** * Get a key by it's value * @param value The value where you want it's key from * @returns {Array} * @example * save.keyByValue("Some new value"); * // Returns ["Some new key"] */ keyByValue(value: value) : [{key: key, value: value}]; /** * Returns the first value of the ValueSaver. * @returns {value | null} * @example * const save = new ValueSaver(); * save.first(); */ first() : value; /** * Returns the first key of the ValueSaver. * @returns {key | null} * @example * const save = new ValueSaver(); * save.firstKey(); */ firstKey() : key; /** * Returns the last value of the ValueSaver. * @returns {value | null} * @example * const save = new ValueSaver(); * save.last(); */ last() : value; /** * Returns the last key of the ValueSaver. * @returns {key | null} * @example * const save = new ValueSaver(); * save.lastKey(); */ lastKey() : key; /** * Filter the ValueSaver for specific keys or values * @param listener The function to filter * @returns {ValueSaver} * @example * save.filter(f => f.key === "Some new key"); * // Returns new ValueSaver */ filter(listener: (f : {key: key, value: value}) => void) : ValueSaver; /** * Filter the ValueSaver for specific keys or values * @param listener The function to filter * @returns {ValueSaver} * @example * save.filter(f => f.key === "Some new key"); * // Returns [{"Some new key": "Some new value"}] */ filterArray(listener: (f: {key: key, value: value}) => void) : [{}]; /** * Convert the ValueSaver to an array. * @returns {object} * @example * save.toArray(); * // Returns [{"Some key": "Some value"}, {"Some new key": "Some new value"}] */ toArray() : [{}]; /** * Convert the ValueSaver to a Map * @returns {Map} * @example * save.toMap(); * // Returns Map(1) {'Some key' => 'Some value', 'Some new key' => 'Some new value'} */ toMap() : Map; /** * Get all the values by the for each function * @param listener The function to use the for each * @returns {value} * @example * save.forEach(value => { * console.log(value); * // Logs every value * }); */ forEach(listener: (f : value) => value) : ValueSaver; /** * Convert the ValueSaver to a readable array for the ValueSaver. * @returns {object} * @example * save.toReadableArray(); * // Returns [{"key": "Some key", "value": "Some value"}, {"key": "Some new key", "value": "Some new value"}] */ toReadableArray() : [{"key": key, "value": value}]; /** * Overwrite the ValueSaver by a readable array. * @param array The array * @returns {ValueSaver} * @example * save.writeValueSaver({"key": "A totally new key", "value": "A totally new value"}); */ writeValueSaver(array: object) : ValueSaver; /** * Insert a new key and value by using an object. * @param object The object to insert * @returns {ValueSaver} * @example * save.insertValue({"key": "Wow", "value": "Another wow"}); */ insertValue(...objects: object) : ValueSaver; /** * Import a saved version of a ValueSaver. * @param id The custom id of the saved ValueSaver. * @returns {ValueSaver | boolean} * @example * save.import(123); */ import(id: id) : Promise<ValueSaver | boolean>; /** * Save the ValueSaver to a JSON file to import it later again. * @param id The custom id of the ValueSaver to save. * @param concat (Optional: default false) If there already exists a save with the same id it should concat the ValueSavers together. * @example * save.save(123, true); */ save(id: id, concat: boolean) : Promise<ValueSaver>; /** * Concat two different ValueSavers together to one ValueSaver * @param ValueSaver The ValueSaver to concat together * @returns {ValueSaver} * @example * const save1 = new ValueSaver(); * save1.set(`Some key`, `Some value`); * const save2 = new ValueSaver(); * save2.set(`Some other key`, `Some other value`); * const save3 = save1.concat(save2); * // Returns new ValueSaver */ concat(ValueSaver: ValueSaver) : ValueSaver; /** * Concat two different ValueSavers together to one ValueSaver * @param ValueSaver The ValueSaver to concat together * @returns {Array} * @example * const save1 = new ValueSaver(); * save1.set(`Some key`, `Some value`); * const save2 = new ValueSaver(); * save2.set(`Some other key`, `Some other value`); * const save3 = save1.concat(save2); * // Returns array */ concatArray(ValueSaver: ValueSaver) : [{}]; /** * Reduce a ValueSaver * @param listener The callback to set the initialValue * @param initialValue The value to start with * @returns {any} * @example * var newArray = save.reduce((array, item) => { * array.push(item.value); * return array; * }, []); */ reduce(listener: (previousValue: any, currentValue: {key: key, value: value}, index: number, array: [{key: key, value: value}]) => void, initialValue: value) : any; /** * Map the ValueSaver to an Array * @param listener The callback to create a filter * @returns {Array} * @example * const save = new ValueSaver(); * const array = save.map(i => i.value.startsWith('Some')); * // Returns an Array */ map(listener: (f : {key: key, value: value}) => void) : []; /** * Removes the save of the ValueSaver. * @returns {Promise<ValueSaver>} * @example * save.removesave(); */ removeSave() : Promise<ValueSaver>; /** * Removes all the saves of the ValueSavers. * @returns {ValueSaver} * @example * save.removeAllSaves(); */ removeAllSaves() : Promise<ValueSaver>; /** * Check whether a value exists in the ValueSaver or not. * @param value The value you want to check whether it exists or not. * @returns {boolean} * @example * save.hasValue("Some new value"); * // Returns true */ hasValue(value: value) : boolean; /** * Create a ValueSaver from an Array * @param array The array where you want to create a ValueSaver from * @returns {ValueSaver} * const arr = [{'Some key': 'Some value'}]; * const save = new ValueSaver(); * save.fromArray(arr); * // Returns a new ValueSaver */ fromArray(array: []) : ValueSaver; /** * Create a ValueSaver from a Map * @param map The Map where you want to create a ValueSaver from * @returns {ValueSaver} * const map = new Map(); * map.set('test', 'test'); * const save = new ValueSaver(); * save.fromMap(map); * // Returns a new ValueSaver */ fromMap(map: Map) : ValueSaver; /** * Clears the ValueSaver * @returns {ValueSaver} * @example * save.clear(); */ clear() : ValueSaver; /** * Get all id's of the saved ValueSavers. * @returns {Array} */ getAllSaves() : [id]; /** * The ValueSaver class so you can import it as a module or as class * @returns {ValueSaver} * @example * const ValueSaver = require("valuesaver"); * const { ValueSaver } = require("valuesaver"); * // Works both */ ValueSaver: ValueSaver; /** * The size of the ValueSaver * @example * save.size; * // Returns 2 */ readonly size: number; /** * The readable array for the ValueSaver. */ private readonly _array; /** * The custom id of the ValueSaver when it got saved or imported. */ private readonly _id; /** * The ValueSaver info. */ private readonly __ValueSaverInfo; } declare module 'ValueSaver'{ export = ValueSaver; }