diff --git a/lib/class/interface.d.ts b/lib/class/interface.d.ts index a867781..eb15e7c 100644 --- a/lib/class/interface.d.ts +++ b/lib/class/interface.d.ts @@ -12,7 +12,7 @@ export type AttributeCompare = { name: string; value: string | number; }; -export interface Storage { +export type Storage = { /** * keypath delimeter. defaults to '.'. */ @@ -46,8 +46,8 @@ export interface Storage { * When invoked, will empty all keys out of the storage. */ clear(): void; -} -export interface WebStorage extends Storage { +}; +export type WebStorage = Storage & { /** * Add multiple entries of key value pairs to the storage. * @param {StorageItem[]} items Items to add individually in the storage. @@ -91,8 +91,8 @@ export interface WebStorage extends Storage { * @param {AttributeCompare} attrCompare data key attribute to be updated. */ getItemInItem(key: KeyPath, attrCompare?: AttributeCompare): StorageValue; -} -export interface EncryptedWebStorage extends Storage { +}; +export type EncryptedWebStorage = Storage & { /** * When passed a key name, will return that key's value. * @param {KeyPath} key key name. @@ -104,21 +104,21 @@ export interface EncryptedWebStorage extends Storage { * @param {StorageValue} value A string containing the value you want to give the key you are creating/updating. */ setEncryptedRawItem(key: KeyPath, value: StorageValue): boolean | Error; -} +}; /** * Cryptor interface */ -export interface CryptorOption { +export type CryptorOption = { salt: string | Buffer; keyLength: number; algorithm: string; password: string | Buffer; byteLength: number; -} +}; export type KeyOption = string | null; export type ReturnOption = string | null; export type VectorIV = string | null; -export interface CryptorModel { +export type CryptorModel = { /** * Returns the cryptor's configs */ @@ -140,4 +140,4 @@ export interface CryptorModel { * Returns the decrypted data from storage. */ decrypt(encrypted: string): ReturnOption; -} +}; diff --git a/lib/class/interface.js b/lib/class/interface.js index be2e080..134d104 100644 --- a/lib/class/interface.js +++ b/lib/class/interface.js @@ -3,4 +3,4 @@ Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsYXNzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3RvcmFnZVxuXG5leHBvcnQgdHlwZSBLZXlQYXRoID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgU3RvcmFnZVZhbHVlID0gYW55O1xuZXhwb3J0IHR5cGUgU3RvcmFnZUl0ZW0gPSB7IGtleTogS2V5UGF0aCwgdmFsdWU6IFN0b3JhZ2VWYWx1ZSB9O1xuXG4vKipcbiAqIEF0dHJpYnV0ZSBjb21wYXJlIHdpbGwgd29yayBmb3IgYSBjb2xsZWN0aW9uIG9mIGl0ZW1zIHdoZXJlIHZhbHVlcyBtYXRjaCBvciB3aWxsIHJlcGxhY2UgYSB2YWx1ZSBvZiB0aGUgbWF0Y2hlZCBrZXkgZm9yIGRhdGEgb2JqZWN0cy5cbiAqL1xuZXhwb3J0IHR5cGUgQXR0cmlidXRlQ29tcGFyZSA9IHsgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZSB7XG4gICAgLyoqXG4gICAgICoga2V5cGF0aCBkZWxpbWV0ZXIuIGRlZmF1bHRzIHRvICcuJy5cbiAgICAgKi9cbiAgICBkZWxpbWl0ZXI6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBkYXRhIGl0ZW1zIHN0b3JlZCBpbiB0aGUgU3RvcmFnZSBvYmplY3QuXG4gICAgICovXG4gICAgZ2V0IGxlbmd0aCgpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgZGF0YSBpdGVtcyBzdG9yZWQgaW4gdGhlIFN0b3JhZ2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSBuIFdoZW4gcGFzc2VkIGEgbnVtYmVyIG4sIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBudGgga2V5IGluIHRoZSBzdG9yYWdlLlxuICAgICAqL1xuICAgIGtleShuOiBudW1iZXIpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHBhc3NlZCBhIGtleSBuYW1lLCB3aWxsIHJldHVybiB0aGF0IGtleSdzIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7S2V5UGF0aH0ga2V5IGtleSBuYW1lLlxuICAgICAqL1xuICAgIGdldEl0ZW0oa2V5OiBLZXlQYXRoKTogU3RvcmFnZVZhbHVlO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBwYXNzZWQgYSBrZXkgbmFtZSBhbmQgdmFsdWUsIHdpbGwgYWRkIHRoYXQga2V5IHRvIHRoZSBzdG9yYWdlLCBvciB1cGRhdGUgdGhhdCBrZXkncyB2YWx1ZSBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAgICAgKiBAcGFyYW0ge0tleVBhdGh9IGtleSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBrZXkgeW91IHdhbnQgdG8gY3JlYXRlL3VwZGF0ZS5cbiAgICAgKiBAcGFyYW0ge1N0b3JhZ2VWYWx1ZX0gdmFsdWUgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgdmFsdWUgeW91IHdhbnQgdG8gZ2l2ZSB0aGUga2V5IHlvdSBhcmUgY3JlYXRpbmcvdXBkYXRpbmcuXG4gICAgICovXG4gICAgc2V0SXRlbShrZXk6IEtleVBhdGgsIHZhbHVlOiBTdG9yYWdlVmFsdWUpOiBib29sZWFuIHwgRXJyb3I7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHBhc3NlZCBhIGtleSBuYW1lLCB3aWxsIHJlbW92ZSB0aGF0IGtleSBmcm9tIHRoZSBzdG9yYWdlLlxuICAgICAqIEBwYXJhbSB7S2V5UGF0aH0ga2V5IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGtleSB5b3Ugd2FudCB0byByZW1vdmUuXG4gICAgICovXG4gICAgcmVtb3ZlSXRlbShrZXk6IEtleVBhdGgpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBpbnZva2VkLCB3aWxsIGVtcHR5IGFsbCBrZXlzIG91dCBvZiB0aGUgc3RvcmFnZS5cbiAgICAgKi9cbiAgICBjbGVhcigpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYlN0b3JhZ2UgZXh0ZW5kcyBTdG9yYWdlIHtcbiAgICAvKipcbiAgICAgKiBBZGQgbXVsdGlwbGUgZW50cmllcyBvZiBrZXkgdmFsdWUgcGFpcnMgdG8gdGhlIHN0b3JhZ2UuXG4gICAgICogQHBhcmFtIHtTdG9yYWdlSXRlbVtdfSBpdGVtcyBJdGVtcyB0byBhZGQgaW5kaXZpZHVhbGx5IGluIHRoZSBzdG9yYWdlLlxuICAgICAqL1xuICAgIHNldE11bHRpcGxlSXRlbXMoaXRlbXM6IFN0b3JhZ2VJdGVtW10pOiBib29sZWFuIHwgRXJyb3I7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgbXVsdGlwbGUgZW50cmllcyBmb3VuZCBpbiB0aGUgc3BlY2lmaWVkIGtleXBhdGhzLlxuICAgICAqIFdpbGwgb25seSB3b3JrIG9uIHRvcCBsZXZlbCBrZXlwYXRocyBhbmQgd2lsbCBub3QgdXRpbGl6ZSBhbiBgQXR0cmlidXRlQ29tcGFyZWAuXG4gICAgICogVXNlIGByZW1vdmVJdGVtSW5JdGVtYCB0byB1dGlsaXplIGFuIGBBdHRyaWJ1dGVDb21wYXJlYC5cbiAgICAgKiBAcGFyYW0ge0tleVBhdGhbXX0ga2V5cyBcbiAgICAgKi9cbiAgICByZW1vdmVNdWx0aXBsZUl0ZW1zKGtleXM6IEtleVBhdGhbXSk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG11bHRpcGxlIGVudHJpZXMgZm91bmQgaW4gdGhlIHNwZWNpZmllZCBrZXlwYXRocy5cbiAgICAgKiBXaWxsIG9ubHkgd29yayBvbiB0b3AgbGV2ZWwga2V5cGF0aHMgYW5kIHdpbGwgbm90IHV0aWxpemUgYW4gYEF0dHJpYnV0ZUNvbXBhcmVgLlxuICAgICAqIFVzZSBgZ2V0SXRlbUluSXRlbWAgdG8gdXRpbGl6ZSBhbiBgQXR0cmlidXRlQ29tcGFyZWAuXG4gICAgICogQHBhcmFtIHtLZXlQYXRoW119IGtleXMgXG4gICAgICovXG4gICAgZ2V0TXVsdGlwbGVJdGVtcyhrZXlzOiBLZXlQYXRoW10pOiBTdG9yYWdlVmFsdWVbXTtcblxuICAgIC8qKlxuICAgICAqIEFwcGVuZCBpdGVtIHRvIGFuIGV4aXN0aW5nIGl0ZW0gb24gdGhlIHN0b3JhZ2UuIFdvcmtzIGZvciBvYmplY3QgYW5kIGFycmF5IHR5cGUgZGF0YS5cbiAgICAgKiBAcGFyYW0ge0tleVBhdGh9IGtleSBrZXlwYXRoIG9mIHRoZSBkYXRhIHlvdSB3YW50IHRvIGFwcGVuZCB0by5cbiAgICAgKiBAcGFyYW0ge1N0b3JhZ2VWYWx1ZX0gdmFsdWUgZGF0YSB2YWx1ZSB5b3Ugd2FudCB0byBhcHBlbmQgdG8uXG4gICAgICovXG4gICAgYXBwZW5kSXRlbUluSXRlbShrZXk6IEtleVBhdGgsIHZhbHVlOiBTdG9yYWdlVmFsdWUpOiBib29sZWFuIHwgRXJyb3I7XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGFuIGl0ZW0gaW4gdGhlIHNwZWNpZmllZCBrZXlwYXRoLlxuICAgICAqIEBwYXJhbSB7S2V5UGF0aH0ga2V5IGtleXBhdGggb2YgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIHtBdHRyaWJ1dGVDb21wYXJlfSBhdHRyQ29tcGFyZSBkYXRhIGtleSBhdHRyaWJ1dGUgdG8gYmUgdXBkYXRlZC5cbiAgICAgKi9cbiAgICB1cGRhdGVJdGVtSW5JdGVtKGtleTogS2V5UGF0aCwgYXR0ckNvbXBhcmU6IEF0dHJpYnV0ZUNvbXBhcmUgfCBudWxsLCBuZXdWYWx1ZTogU3RvcmFnZVZhbHVlKTogYm9vbGVhbiB8IEVycm9yO1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbiBpdGVtIGluIHRoZSBzcGVjaWZpZWQga2V5cGF0aC5cbiAgICAgKiBAcGFyYW0ge0tleVBhdGh9IGtleSBrZXlwYXRoIG9mIHRoZSBkYXRhLlxuICAgICAqIEBwYXJhbSB7QXR0cmlidXRlQ29tcGFyZX0gYXR0ckNvbXBhcmUgZGF0YSBrZXkgYXR0cmlidXRlIHRvIGJlIHVwZGF0ZWQuXG4gICAgICovXG4gICAgcmVtb3ZlSXRlbUluSXRlbShrZXk6IEtleVBhdGgsIGF0dHJDb21wYXJlPzogQXR0cmlidXRlQ29tcGFyZSk6IGJvb2xlYW4gfCBFcnJvcjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGF0YSBmb3VuZCBpbiB0aGUgc3BlY2lmaWVkIGtleXBhdGguXG4gICAgICogQHBhcmFtIHtLZXlQYXRofSBrZXkga2V5cGF0aCBvZiB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0ge0F0dHJpYnV0ZUNvbXBhcmV9IGF0dHJDb21wYXJlIGRhdGEga2V5IGF0dHJpYnV0ZSB0byBiZSB1cGRhdGVkLlxuICAgICAqL1xuICAgIGdldEl0ZW1Jbkl0ZW0oa2V5OiBLZXlQYXRoLCBhdHRyQ29tcGFyZT86IEF0dHJpYnV0ZUNvbXBhcmUpOiBTdG9yYWdlVmFsdWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5jcnlwdGVkV2ViU3RvcmFnZSBleHRlbmRzIFN0b3JhZ2Uge1xuICAgIC8qKlxuICAgICAqIFdoZW4gcGFzc2VkIGEga2V5IG5hbWUsIHdpbGwgcmV0dXJuIHRoYXQga2V5J3MgdmFsdWUuXG4gICAgICogQHBhcmFtIHtLZXlQYXRofSBrZXkga2V5IG5hbWUuXG4gICAgICovXG4gICAgZ2V0RW5jcnlwdGVkUmF3SXRlbShrZXk6IEtleVBhdGgpOiBTdG9yYWdlVmFsdWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHBhc3NlZCBhIGtleSBuYW1lIGFuZCB2YWx1ZSwgd2lsbCBhZGQgdGhhdCBrZXkgdG8gdGhlIHN0b3JhZ2UsIG9yIHVwZGF0ZSB0aGF0IGtleSdzIHZhbHVlIGlmIGl0IGFscmVhZHkgZXhpc3RzLlxuICAgICAqIEBwYXJhbSB7S2V5UGF0aH0ga2V5IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGtleSB5b3Ugd2FudCB0byBjcmVhdGUvdXBkYXRlLlxuICAgICAqIEBwYXJhbSB7U3RvcmFnZVZhbHVlfSB2YWx1ZSBBIHN0cmluZyBjb250YWluaW5nIHRoZSB2YWx1ZSB5b3Ugd2FudCB0byBnaXZlIHRoZSBrZXkgeW91IGFyZSBjcmVhdGluZy91cGRhdGluZy5cbiAgICAgKi9cbiAgICBzZXRFbmNyeXB0ZWRSYXdJdGVtKGtleTogS2V5UGF0aCwgdmFsdWU6IFN0b3JhZ2VWYWx1ZSk6IGJvb2xlYW4gfCBFcnJvcjtcbn1cblxuLyoqXG4gKiBDcnlwdG9yIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyeXB0b3JPcHRpb24ge1xuICAgIHNhbHQ6IHN0cmluZyB8IEJ1ZmZlcixcbiAgICBrZXlMZW5ndGg6IG51bWJlcixcbiAgICBhbGdvcml0aG06IHN0cmluZyxcbiAgICBwYXNzd29yZDogc3RyaW5nIHwgQnVmZmVyLFxuICAgIGJ5dGVMZW5ndGg6IG51bWJlciAvLyBCdWZmZXJcbn1cblxuZXhwb3J0IHR5cGUgS2V5T3B0aW9uID0gc3RyaW5nIHwgbnVsbDtcbmV4cG9ydCB0eXBlIFJldHVybk9wdGlvbiA9IHN0cmluZyB8IG51bGw7XG5leHBvcnQgdHlwZSBWZWN0b3JJViA9IHN0cmluZyB8IG51bGw7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3J5cHRvck1vZGVsIHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjcnlwdG9yJ3MgY29uZmlnc1xuICAgICAqL1xuICAgIGdldCBzZXR0aW5ncygpOiBDcnlwdG9yT3B0aW9uXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjcnlwdG9yJ3MgZ2VuZXJhdGVkIGVuY3J5cHRpb24ga2V5XG4gICAgICovXG4gICAgZ2V0IGtleSgpOiBLZXlPcHRpb25cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNyeXB0b3IncyBpbml0aWFsaXphdGlvbiB2ZWN0b3IuXG4gICAgICogTk9URTogVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGRlY3J5cHRpb24uIE1ha2Ugc3VyZSB5b3Ugc3RvcmUgaXQgc29tZXdoZXJlIGZvciByZXVzZS5cbiAgICAgKi9cbiAgICBnZXQgaXZIZXgoKTogS2V5T3B0aW9uXG5cbiAgICAvKipcbiAgICAgKiBFbmNyeXB0IHRoZSBkYXRhIGFuZCBzYXZlIHRvIHN0b3JhZ2UuXG4gICAgICovXG4gICAgZW5jcnlwdChzdWJqZWN0OiBzdHJpbmcpOiBSZXR1cm5PcHRpb25cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRlY3J5cHRlZCBkYXRhIGZyb20gc3RvcmFnZS5cbiAgICAgKi9cbiAgICBkZWNyeXB0KGVuY3J5cHRlZDogc3RyaW5nKTogUmV0dXJuT3B0aW9uXG59Il0sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsYXNzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvU3RvcmFnZVxuXG5leHBvcnQgdHlwZSBLZXlQYXRoID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgU3RvcmFnZVZhbHVlID0gYW55O1xuZXhwb3J0IHR5cGUgU3RvcmFnZUl0ZW0gPSB7IGtleTogS2V5UGF0aDsgdmFsdWU6IFN0b3JhZ2VWYWx1ZSB9O1xuXG4vKipcbiAqIEF0dHJpYnV0ZSBjb21wYXJlIHdpbGwgd29yayBmb3IgYSBjb2xsZWN0aW9uIG9mIGl0ZW1zIHdoZXJlIHZhbHVlcyBtYXRjaCBvciB3aWxsIHJlcGxhY2UgYSB2YWx1ZSBvZiB0aGUgbWF0Y2hlZCBrZXkgZm9yIGRhdGEgb2JqZWN0cy5cbiAqL1xuZXhwb3J0IHR5cGUgQXR0cmlidXRlQ29tcGFyZSA9IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH07XG5cbmV4cG9ydCB0eXBlIFN0b3JhZ2UgPSB7XG4gIC8qKlxuICAgKiBrZXlwYXRoIGRlbGltZXRlci4gZGVmYXVsdHMgdG8gJy4nLlxuICAgKi9cbiAgZGVsaW1pdGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBkYXRhIGl0ZW1zIHN0b3JlZCBpbiB0aGUgU3RvcmFnZSBvYmplY3QuXG4gICAqL1xuICBnZXQgbGVuZ3RoKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogUmV0dXJucyBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGRhdGEgaXRlbXMgc3RvcmVkIGluIHRoZSBTdG9yYWdlIG9iamVjdC5cbiAgICogQHBhcmFtIG4gV2hlbiBwYXNzZWQgYSBudW1iZXIgbiwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIG50aCBrZXkgaW4gdGhlIHN0b3JhZ2UuXG4gICAqL1xuICBrZXkobjogbnVtYmVyKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHBhc3NlZCBhIGtleSBuYW1lLCB3aWxsIHJldHVybiB0aGF0IGtleSdzIHZhbHVlLlxuICAgKiBAcGFyYW0ge0tleVBhdGh9IGtleSBrZXkgbmFtZS5cbiAgICovXG4gIGdldEl0ZW0oa2V5OiBLZXlQYXRoKTogU3RvcmFnZVZhbHVlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHBhc3NlZCBhIGtleSBuYW1lIGFuZCB2YWx1ZSwgd2lsbCBhZGQgdGhhdCBrZXkgdG8gdGhlIHN0b3JhZ2UsIG9yIHVwZGF0ZSB0aGF0IGtleSdzIHZhbHVlIGlmIGl0IGFscmVhZHkgZXhpc3RzLlxuICAgKiBAcGFyYW0ge0tleVBhdGh9IGtleSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBrZXkgeW91IHdhbnQgdG8gY3JlYXRlL3VwZGF0ZS5cbiAgICogQHBhcmFtIHtTdG9yYWdlVmFsdWV9IHZhbHVlIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHlvdSB3YW50IHRvIGdpdmUgdGhlIGtleSB5b3UgYXJlIGNyZWF0aW5nL3VwZGF0aW5nLlxuICAgKi9cbiAgc2V0SXRlbShrZXk6IEtleVBhdGgsIHZhbHVlOiBTdG9yYWdlVmFsdWUpOiBib29sZWFuIHwgRXJyb3I7XG5cbiAgLyoqXG4gICAqIFdoZW4gcGFzc2VkIGEga2V5IG5hbWUsIHdpbGwgcmVtb3ZlIHRoYXQga2V5IGZyb20gdGhlIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB7S2V5UGF0aH0ga2V5IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGtleSB5b3Ugd2FudCB0byByZW1vdmUuXG4gICAqL1xuICByZW1vdmVJdGVtKGtleTogS2V5UGF0aCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFdoZW4gaW52b2tlZCwgd2lsbCBlbXB0eSBhbGwga2V5cyBvdXQgb2YgdGhlIHN0b3JhZ2UuXG4gICAqL1xuICBjbGVhcigpOiB2b2lkO1xufTtcblxuZXhwb3J0IHR5cGUgV2ViU3RvcmFnZSA9IFN0b3JhZ2UgJiB7XG4gIC8qKlxuICAgKiBBZGQgbXVsdGlwbGUgZW50cmllcyBvZiBrZXkgdmFsdWUgcGFpcnMgdG8gdGhlIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB7U3RvcmFnZUl0ZW1bXX0gaXRlbXMgSXRlbXMgdG8gYWRkIGluZGl2aWR1YWxseSBpbiB0aGUgc3RvcmFnZS5cbiAgICovXG4gIHNldE11bHRpcGxlSXRlbXMoaXRlbXM6IFN0b3JhZ2VJdGVtW10pOiBib29sZWFuIHwgRXJyb3I7XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBtdWx0aXBsZSBlbnRyaWVzIGZvdW5kIGluIHRoZSBzcGVjaWZpZWQga2V5cGF0aHMuXG4gICAqIFdpbGwgb25seSB3b3JrIG9uIHRvcCBsZXZlbCBrZXlwYXRocyBhbmQgd2lsbCBub3QgdXRpbGl6ZSBhbiBgQXR0cmlidXRlQ29tcGFyZWAuXG4gICAqIFVzZSBgcmVtb3ZlSXRlbUluSXRlbWAgdG8gdXRpbGl6ZSBhbiBgQXR0cmlidXRlQ29tcGFyZWAuXG4gICAqIEBwYXJhbSB7S2V5UGF0aFtdfSBrZXlzXG4gICAqL1xuICByZW1vdmVNdWx0aXBsZUl0ZW1zKGtleXM6IEtleVBhdGhbXSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbXVsdGlwbGUgZW50cmllcyBmb3VuZCBpbiB0aGUgc3BlY2lmaWVkIGtleXBhdGhzLlxuICAgKiBXaWxsIG9ubHkgd29yayBvbiB0b3AgbGV2ZWwga2V5cGF0aHMgYW5kIHdpbGwgbm90IHV0aWxpemUgYW4gYEF0dHJpYnV0ZUNvbXBhcmVgLlxuICAgKiBVc2UgYGdldEl0ZW1Jbkl0ZW1gIHRvIHV0aWxpemUgYW4gYEF0dHJpYnV0ZUNvbXBhcmVgLlxuICAgKiBAcGFyYW0ge0tleVBhdGhbXX0ga2V5c1xuICAgKi9cbiAgZ2V0TXVsdGlwbGVJdGVtcyhrZXlzOiBLZXlQYXRoW10pOiBTdG9yYWdlVmFsdWVbXTtcblxuICAvKipcbiAgICogQXBwZW5kIGl0ZW0gdG8gYW4gZXhpc3RpbmcgaXRlbSBvbiB0aGUgc3RvcmFnZS4gV29ya3MgZm9yIG9iamVjdCBhbmQgYXJyYXkgdHlwZSBkYXRhLlxuICAgKiBAcGFyYW0ge0tleVBhdGh9IGtleSBrZXlwYXRoIG9mIHRoZSBkYXRhIHlvdSB3YW50IHRvIGFwcGVuZCB0by5cbiAgICogQHBhcmFtIHtTdG9yYWdlVmFsdWV9IHZhbHVlIGRhdGEgdmFsdWUgeW91IHdhbnQgdG8gYXBwZW5kIHRvLlxuICAgKi9cbiAgYXBwZW5kSXRlbUluSXRlbShrZXk6IEtleVBhdGgsIHZhbHVlOiBTdG9yYWdlVmFsdWUpOiBib29sZWFuIHwgRXJyb3I7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYW4gaXRlbSBpbiB0aGUgc3BlY2lmaWVkIGtleXBhdGguXG4gICAqIEBwYXJhbSB7S2V5UGF0aH0ga2V5IGtleXBhdGggb2YgdGhlIGRhdGEuXG4gICAqIEBwYXJhbSB7QXR0cmlidXRlQ29tcGFyZX0gYXR0ckNvbXBhcmUgZGF0YSBrZXkgYXR0cmlidXRlIHRvIGJlIHVwZGF0ZWQuXG4gICAqL1xuICB1cGRhdGVJdGVtSW5JdGVtKFxuICAgIGtleTogS2V5UGF0aCxcbiAgICBhdHRyQ29tcGFyZTogQXR0cmlidXRlQ29tcGFyZSB8IG51bGwsXG4gICAgbmV3VmFsdWU6IFN0b3JhZ2VWYWx1ZSxcbiAgKTogYm9vbGVhbiB8IEVycm9yO1xuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFuIGl0ZW0gaW4gdGhlIHNwZWNpZmllZCBrZXlwYXRoLlxuICAgKiBAcGFyYW0ge0tleVBhdGh9IGtleSBrZXlwYXRoIG9mIHRoZSBkYXRhLlxuICAgKiBAcGFyYW0ge0F0dHJpYnV0ZUNvbXBhcmV9IGF0dHJDb21wYXJlIGRhdGEga2V5IGF0dHJpYnV0ZSB0byBiZSB1cGRhdGVkLlxuICAgKi9cbiAgcmVtb3ZlSXRlbUluSXRlbShcbiAgICBrZXk6IEtleVBhdGgsXG4gICAgYXR0ckNvbXBhcmU/OiBBdHRyaWJ1dGVDb21wYXJlLFxuICApOiBib29sZWFuIHwgRXJyb3I7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZGF0YSBmb3VuZCBpbiB0aGUgc3BlY2lmaWVkIGtleXBhdGguXG4gICAqIEBwYXJhbSB7S2V5UGF0aH0ga2V5IGtleXBhdGggb2YgdGhlIGRhdGEuXG4gICAqIEBwYXJhbSB7QXR0cmlidXRlQ29tcGFyZX0gYXR0ckNvbXBhcmUgZGF0YSBrZXkgYXR0cmlidXRlIHRvIGJlIHVwZGF0ZWQuXG4gICAqL1xuICBnZXRJdGVtSW5JdGVtKGtleTogS2V5UGF0aCwgYXR0ckNvbXBhcmU/OiBBdHRyaWJ1dGVDb21wYXJlKTogU3RvcmFnZVZhbHVlO1xufTtcblxuZXhwb3J0IHR5cGUgRW5jcnlwdGVkV2ViU3RvcmFnZSA9IFN0b3JhZ2UgJiB7XG4gIC8qKlxuICAgKiBXaGVuIHBhc3NlZCBhIGtleSBuYW1lLCB3aWxsIHJldHVybiB0aGF0IGtleSdzIHZhbHVlLlxuICAgKiBAcGFyYW0ge0tleVBhdGh9IGtleSBrZXkgbmFtZS5cbiAgICovXG4gIGdldEVuY3J5cHRlZFJhd0l0ZW0oa2V5OiBLZXlQYXRoKTogU3RvcmFnZVZhbHVlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHBhc3NlZCBhIGtleSBuYW1lIGFuZCB2YWx1ZSwgd2lsbCBhZGQgdGhhdCBrZXkgdG8gdGhlIHN0b3JhZ2UsIG9yIHVwZGF0ZSB0aGF0IGtleSdzIHZhbHVlIGlmIGl0IGFscmVhZHkgZXhpc3RzLlxuICAgKiBAcGFyYW0ge0tleVBhdGh9IGtleSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBrZXkgeW91IHdhbnQgdG8gY3JlYXRlL3VwZGF0ZS5cbiAgICogQHBhcmFtIHtTdG9yYWdlVmFsdWV9IHZhbHVlIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHlvdSB3YW50IHRvIGdpdmUgdGhlIGtleSB5b3UgYXJlIGNyZWF0aW5nL3VwZGF0aW5nLlxuICAgKi9cbiAgc2V0RW5jcnlwdGVkUmF3SXRlbShrZXk6IEtleVBhdGgsIHZhbHVlOiBTdG9yYWdlVmFsdWUpOiBib29sZWFuIHwgRXJyb3I7XG59O1xuXG4vKipcbiAqIENyeXB0b3IgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCB0eXBlIENyeXB0b3JPcHRpb24gPSB7XG4gIHNhbHQ6IHN0cmluZyB8IEJ1ZmZlcjtcbiAga2V5TGVuZ3RoOiBudW1iZXI7XG4gIGFsZ29yaXRobTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nIHwgQnVmZmVyO1xuICBieXRlTGVuZ3RoOiBudW1iZXI7IC8vIEJ1ZmZlclxufTtcblxuZXhwb3J0IHR5cGUgS2V5T3B0aW9uID0gc3RyaW5nIHwgbnVsbDtcbmV4cG9ydCB0eXBlIFJldHVybk9wdGlvbiA9IHN0cmluZyB8IG51bGw7XG5leHBvcnQgdHlwZSBWZWN0b3JJViA9IHN0cmluZyB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIENyeXB0b3JNb2RlbCA9IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNyeXB0b3IncyBjb25maWdzXG4gICAqL1xuICBnZXQgc2V0dGluZ3MoKTogQ3J5cHRvck9wdGlvbjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3J5cHRvcidzIGdlbmVyYXRlZCBlbmNyeXB0aW9uIGtleVxuICAgKi9cbiAgZ2V0IGtleSgpOiBLZXlPcHRpb247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNyeXB0b3IncyBpbml0aWFsaXphdGlvbiB2ZWN0b3IuXG4gICAqIE5PVEU6IFRoaXMgaXMgaW1wb3J0YW50IGZvciBkZWNyeXB0aW9uLiBNYWtlIHN1cmUgeW91IHN0b3JlIGl0IHNvbWV3aGVyZSBmb3IgcmV1c2UuXG4gICAqL1xuICBnZXQgaXZIZXgoKTogS2V5T3B0aW9uO1xuXG4gIC8qKlxuICAgKiBFbmNyeXB0IHRoZSBkYXRhIGFuZCBzYXZlIHRvIHN0b3JhZ2UuXG4gICAqL1xuICBlbmNyeXB0KHN1YmplY3Q6IHN0cmluZyk6IFJldHVybk9wdGlvbjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGVjcnlwdGVkIGRhdGEgZnJvbSBzdG9yYWdlLlxuICAgKi9cbiAgZGVjcnlwdChlbmNyeXB0ZWQ6IHN0cmluZyk6IFJldHVybk9wdGlvbjtcbn07XG4iXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/package.json b/package.json index 93e8e6e..5ecd47c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "web-storage-manager", - "version": "4.1.0", + "version": "4.1.1", "description": "Web utility storage manager for handling data encryption, save and persist, update and data purge in your local and session storage", "main": "lib/index.js", "type": "commonjs", @@ -64,4 +64,4 @@ "publishConfig": { "@nfhipona:registry": "https://npm.pkg.github.com" } -} \ No newline at end of file +} diff --git a/src/class/interface.ts b/src/class/interface.ts index 4aa6a35..a7bcf6e 100644 --- a/src/class/interface.ts +++ b/src/class/interface.ts @@ -2,161 +2,168 @@ export type KeyPath = string; export type StorageValue = any; -export type StorageItem = { key: KeyPath, value: StorageValue }; +export type StorageItem = { key: KeyPath; value: StorageValue }; /** * Attribute compare will work for a collection of items where values match or will replace a value of the matched key for data objects. */ -export type AttributeCompare = { name: string, value: string | number }; - -export interface Storage { - /** - * keypath delimeter. defaults to '.'. - */ - delimiter: string; - - /** - * Returns an integer representing the number of data items stored in the Storage object. - */ - get length(): number; - - /** - * Returns an integer representing the number of data items stored in the Storage object. - * @param n When passed a number n, this method will return the name of the nth key in the storage. - */ - key(n: number): number; - - /** - * When passed a key name, will return that key's value. - * @param {KeyPath} key key name. - */ - getItem(key: KeyPath): StorageValue; - - /** - * When passed a key name and value, will add that key to the storage, or update that key's value if it already exists. - * @param {KeyPath} key A string containing the name of the key you want to create/update. - * @param {StorageValue} value A string containing the value you want to give the key you are creating/updating. - */ - setItem(key: KeyPath, value: StorageValue): boolean | Error; - - /** - * When passed a key name, will remove that key from the storage. - * @param {KeyPath} key A string containing the name of the key you want to remove. - */ - removeItem(key: KeyPath): void; - - /** - * When invoked, will empty all keys out of the storage. - */ - clear(): void; -} - -export interface WebStorage extends Storage { - /** - * Add multiple entries of key value pairs to the storage. - * @param {StorageItem[]} items Items to add individually in the storage. - */ - setMultipleItems(items: StorageItem[]): boolean | Error; - - /** - * Remove multiple entries found in the specified keypaths. - * Will only work on top level keypaths and will not utilize an `AttributeCompare`. - * Use `removeItemInItem` to utilize an `AttributeCompare`. - * @param {KeyPath[]} keys - */ - removeMultipleItems(keys: KeyPath[]): void; - - /** - * Returns multiple entries found in the specified keypaths. - * Will only work on top level keypaths and will not utilize an `AttributeCompare`. - * Use `getItemInItem` to utilize an `AttributeCompare`. - * @param {KeyPath[]} keys - */ - getMultipleItems(keys: KeyPath[]): StorageValue[]; - - /** - * Append item to an existing item on the storage. Works for object and array type data. - * @param {KeyPath} key keypath of the data you want to append to. - * @param {StorageValue} value data value you want to append to. - */ - appendItemInItem(key: KeyPath, value: StorageValue): boolean | Error; - - /** - * Updates an item in the specified keypath. - * @param {KeyPath} key keypath of the data. - * @param {AttributeCompare} attrCompare data key attribute to be updated. - */ - updateItemInItem(key: KeyPath, attrCompare: AttributeCompare | null, newValue: StorageValue): boolean | Error; - - /** - * Removes an item in the specified keypath. - * @param {KeyPath} key keypath of the data. - * @param {AttributeCompare} attrCompare data key attribute to be updated. - */ - removeItemInItem(key: KeyPath, attrCompare?: AttributeCompare): boolean | Error; - - /** - * Returns data found in the specified keypath. - * @param {KeyPath} key keypath of the data. - * @param {AttributeCompare} attrCompare data key attribute to be updated. - */ - getItemInItem(key: KeyPath, attrCompare?: AttributeCompare): StorageValue; -} - -export interface EncryptedWebStorage extends Storage { - /** - * When passed a key name, will return that key's value. - * @param {KeyPath} key key name. - */ - getEncryptedRawItem(key: KeyPath): StorageValue; - - /** - * When passed a key name and value, will add that key to the storage, or update that key's value if it already exists. - * @param {KeyPath} key A string containing the name of the key you want to create/update. - * @param {StorageValue} value A string containing the value you want to give the key you are creating/updating. - */ - setEncryptedRawItem(key: KeyPath, value: StorageValue): boolean | Error; -} +export type AttributeCompare = { name: string; value: string | number }; + +export type Storage = { + /** + * keypath delimeter. defaults to '.'. + */ + delimiter: string; + + /** + * Returns an integer representing the number of data items stored in the Storage object. + */ + get length(): number; + + /** + * Returns an integer representing the number of data items stored in the Storage object. + * @param n When passed a number n, this method will return the name of the nth key in the storage. + */ + key(n: number): number; + + /** + * When passed a key name, will return that key's value. + * @param {KeyPath} key key name. + */ + getItem(key: KeyPath): StorageValue; + + /** + * When passed a key name and value, will add that key to the storage, or update that key's value if it already exists. + * @param {KeyPath} key A string containing the name of the key you want to create/update. + * @param {StorageValue} value A string containing the value you want to give the key you are creating/updating. + */ + setItem(key: KeyPath, value: StorageValue): boolean | Error; + + /** + * When passed a key name, will remove that key from the storage. + * @param {KeyPath} key A string containing the name of the key you want to remove. + */ + removeItem(key: KeyPath): void; + + /** + * When invoked, will empty all keys out of the storage. + */ + clear(): void; +}; + +export type WebStorage = Storage & { + /** + * Add multiple entries of key value pairs to the storage. + * @param {StorageItem[]} items Items to add individually in the storage. + */ + setMultipleItems(items: StorageItem[]): boolean | Error; + + /** + * Remove multiple entries found in the specified keypaths. + * Will only work on top level keypaths and will not utilize an `AttributeCompare`. + * Use `removeItemInItem` to utilize an `AttributeCompare`. + * @param {KeyPath[]} keys + */ + removeMultipleItems(keys: KeyPath[]): void; + + /** + * Returns multiple entries found in the specified keypaths. + * Will only work on top level keypaths and will not utilize an `AttributeCompare`. + * Use `getItemInItem` to utilize an `AttributeCompare`. + * @param {KeyPath[]} keys + */ + getMultipleItems(keys: KeyPath[]): StorageValue[]; + + /** + * Append item to an existing item on the storage. Works for object and array type data. + * @param {KeyPath} key keypath of the data you want to append to. + * @param {StorageValue} value data value you want to append to. + */ + appendItemInItem(key: KeyPath, value: StorageValue): boolean | Error; + + /** + * Updates an item in the specified keypath. + * @param {KeyPath} key keypath of the data. + * @param {AttributeCompare} attrCompare data key attribute to be updated. + */ + updateItemInItem( + key: KeyPath, + attrCompare: AttributeCompare | null, + newValue: StorageValue, + ): boolean | Error; + + /** + * Removes an item in the specified keypath. + * @param {KeyPath} key keypath of the data. + * @param {AttributeCompare} attrCompare data key attribute to be updated. + */ + removeItemInItem( + key: KeyPath, + attrCompare?: AttributeCompare, + ): boolean | Error; + + /** + * Returns data found in the specified keypath. + * @param {KeyPath} key keypath of the data. + * @param {AttributeCompare} attrCompare data key attribute to be updated. + */ + getItemInItem(key: KeyPath, attrCompare?: AttributeCompare): StorageValue; +}; + +export type EncryptedWebStorage = Storage & { + /** + * When passed a key name, will return that key's value. + * @param {KeyPath} key key name. + */ + getEncryptedRawItem(key: KeyPath): StorageValue; + + /** + * When passed a key name and value, will add that key to the storage, or update that key's value if it already exists. + * @param {KeyPath} key A string containing the name of the key you want to create/update. + * @param {StorageValue} value A string containing the value you want to give the key you are creating/updating. + */ + setEncryptedRawItem(key: KeyPath, value: StorageValue): boolean | Error; +}; /** * Cryptor interface */ -export interface CryptorOption { - salt: string | Buffer, - keyLength: number, - algorithm: string, - password: string | Buffer, - byteLength: number // Buffer -} +export type CryptorOption = { + salt: string | Buffer; + keyLength: number; + algorithm: string; + password: string | Buffer; + byteLength: number; // Buffer +}; export type KeyOption = string | null; export type ReturnOption = string | null; export type VectorIV = string | null; -export interface CryptorModel { - /** - * Returns the cryptor's configs - */ - get settings(): CryptorOption - - /** - * Returns the cryptor's generated encryption key - */ - get key(): KeyOption - - /** - * Returns the cryptor's initialization vector. - * NOTE: This is important for decryption. Make sure you store it somewhere for reuse. - */ - get ivHex(): KeyOption - - /** - * Encrypt the data and save to storage. - */ - encrypt(subject: string): ReturnOption - - /** - * Returns the decrypted data from storage. - */ - decrypt(encrypted: string): ReturnOption -} \ No newline at end of file +export type CryptorModel = { + /** + * Returns the cryptor's configs + */ + get settings(): CryptorOption; + + /** + * Returns the cryptor's generated encryption key + */ + get key(): KeyOption; + + /** + * Returns the cryptor's initialization vector. + * NOTE: This is important for decryption. Make sure you store it somewhere for reuse. + */ + get ivHex(): KeyOption; + + /** + * Encrypt the data and save to storage. + */ + encrypt(subject: string): ReturnOption; + + /** + * Returns the decrypted data from storage. + */ + decrypt(encrypted: string): ReturnOption; +};