UNPKG

@ngx-pwa/local-storage

Version:

Efficient local storage module for Angular: simple API based on native localStorage API, but internally stored via the asynchronous IndexedDB API for performance, and wrapped in RxJS observables to be homogeneous with other Angular modules.

59 lines 8.79 kB
import { InjectionToken } from '@angular/core'; /** * Token to provide a prefix to `localStorage` keys. */ export const LS_PREFIX = new InjectionToken('localStoragePrefix', { providedIn: 'root', factory: () => '' }); /** * Default name used for `indexedDB` database. */ export const DEFAULT_IDB_DB_NAME = 'ngStorage'; /** * Token to provide `indexedDB` database name. */ export const IDB_DB_NAME = new InjectionToken('localStorageIDBDBName', { providedIn: 'root', factory: () => DEFAULT_IDB_DB_NAME }); /** * Default version used for `indexedDB` database. */ export const DEFAULT_IDB_DB_VERSION = 1; /** * Token to provide `indexedDB` database version. * Must be an unsigned **integer**. */ export const IDB_DB_VERSION = new InjectionToken('localStorageIDBDBVersion', { providedIn: 'root', factory: () => DEFAULT_IDB_DB_VERSION }); /** * Default name used for `indexedDB` object store. */ export const DEFAULT_IDB_STORE_NAME = 'localStorage'; /** * Token to provide `indexedDB` store name. * For backward compatibility, the default can't be set now, `IndexedDBDatabase` will do it at runtime. */ export const IDB_STORE_NAME = new InjectionToken('localStorageIDBStoreName', { providedIn: 'root', factory: () => DEFAULT_IDB_STORE_NAME }); /** * Default value for interoperability with native `indexedDB` and other storage libs, * by changing how values are stored in `indexedDB` database. */ export const DEFAULT_IDB_NO_WRAP = true; /** * Token to allow interoperability with native `indexedDB` and other storage libs, * by changing how values are stored in `indexedDB` database. * Defaults to `true`. Change to `false` for backward compatiblity in existing applications. * **DO NOT CHANGE THIS BEHAVIOR ONCE IN PRODUCTION**, as it would break with existing data. */ export const IDB_NO_WRAP = new InjectionToken('localStorageIDBWrap', { providedIn: 'root', factory: () => DEFAULT_IDB_NO_WRAP }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXB3YS9sb2NhbC1zdG9yYWdlL3NyYy9saWIvdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQVMsb0JBQW9CLEVBQUU7SUFDeEUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDbEIsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQVMsdUJBQXVCLEVBQUU7SUFDN0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFtQjtDQUNuQyxDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUV4Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQVMsMEJBQTBCLEVBQUU7SUFDbkYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLHNCQUFzQjtDQUN0QyxDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGNBQWMsQ0FBQztBQUVyRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQVMsMEJBQTBCLEVBQUU7SUFDbkYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLHNCQUFzQjtDQUN0QyxDQUFDLENBQUM7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFFeEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQVUscUJBQXFCLEVBQUU7SUFDNUUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLG1CQUFtQjtDQUNuQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRva2VuIHRvIHByb3ZpZGUgYSBwcmVmaXggdG8gYGxvY2FsU3RvcmFnZWAga2V5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IExTX1BSRUZJWCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdsb2NhbFN0b3JhZ2VQcmVmaXgnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gJydcbn0pO1xuXG4vKipcbiAqIERlZmF1bHQgbmFtZSB1c2VkIGZvciBgaW5kZXhlZERCYCBkYXRhYmFzZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSURCX0RCX05BTUUgPSAnbmdTdG9yYWdlJztcblxuLyoqXG4gKiBUb2tlbiB0byBwcm92aWRlIGBpbmRleGVkREJgIGRhdGFiYXNlIG5hbWUuXG4gKi9cbmV4cG9ydCBjb25zdCBJREJfREJfTkFNRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdsb2NhbFN0b3JhZ2VJREJEQk5hbWUnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gREVGQVVMVF9JREJfREJfTkFNRVxufSk7XG5cbi8qKlxuICogRGVmYXVsdCB2ZXJzaW9uIHVzZWQgZm9yIGBpbmRleGVkREJgIGRhdGFiYXNlLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9JREJfREJfVkVSU0lPTiA9IDE7XG5cbi8qKlxuICogVG9rZW4gdG8gcHJvdmlkZSBgaW5kZXhlZERCYCBkYXRhYmFzZSB2ZXJzaW9uLlxuICogTXVzdCBiZSBhbiB1bnNpZ25lZCAqKmludGVnZXIqKi5cbiAqL1xuZXhwb3J0IGNvbnN0IElEQl9EQl9WRVJTSU9OID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oJ2xvY2FsU3RvcmFnZUlEQkRCVmVyc2lvbicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBERUZBVUxUX0lEQl9EQl9WRVJTSU9OXG59KTtcblxuLyoqXG4gKiBEZWZhdWx0IG5hbWUgdXNlZCBmb3IgYGluZGV4ZWREQmAgb2JqZWN0IHN0b3JlLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9JREJfU1RPUkVfTkFNRSA9ICdsb2NhbFN0b3JhZ2UnO1xuXG4vKipcbiAqIFRva2VuIHRvIHByb3ZpZGUgYGluZGV4ZWREQmAgc3RvcmUgbmFtZS5cbiAqIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgZGVmYXVsdCBjYW4ndCBiZSBzZXQgbm93LCBgSW5kZXhlZERCRGF0YWJhc2VgIHdpbGwgZG8gaXQgYXQgcnVudGltZS5cbiAqL1xuZXhwb3J0IGNvbnN0IElEQl9TVE9SRV9OQU1FID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2xvY2FsU3RvcmFnZUlEQlN0b3JlTmFtZScsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBERUZBVUxUX0lEQl9TVE9SRV9OQU1FXG59KTtcblxuLyoqXG4gKiBEZWZhdWx0IHZhbHVlIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggbmF0aXZlIGBpbmRleGVkREJgIGFuZCBvdGhlciBzdG9yYWdlIGxpYnMsXG4gKiBieSBjaGFuZ2luZyBob3cgdmFsdWVzIGFyZSBzdG9yZWQgaW4gYGluZGV4ZWREQmAgZGF0YWJhc2UuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lEQl9OT19XUkFQID0gdHJ1ZTtcblxuLyoqXG4gKiBUb2tlbiB0byBhbGxvdyBpbnRlcm9wZXJhYmlsaXR5IHdpdGggbmF0aXZlIGBpbmRleGVkREJgIGFuZCBvdGhlciBzdG9yYWdlIGxpYnMsXG4gKiBieSBjaGFuZ2luZyBob3cgdmFsdWVzIGFyZSBzdG9yZWQgaW4gYGluZGV4ZWREQmAgZGF0YWJhc2UuXG4gKiBEZWZhdWx0cyB0byBgdHJ1ZWAuIENoYW5nZSB0byBgZmFsc2VgIGZvciBiYWNrd2FyZCBjb21wYXRpYmxpdHkgaW4gZXhpc3RpbmcgYXBwbGljYXRpb25zLlxuICogKipETyBOT1QgQ0hBTkdFIFRISVMgQkVIQVZJT1IgT05DRSBJTiBQUk9EVUNUSU9OKiosIGFzIGl0IHdvdWxkIGJyZWFrIHdpdGggZXhpc3RpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IElEQl9OT19XUkFQID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdsb2NhbFN0b3JhZ2VJREJXcmFwJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IERFRkFVTFRfSURCX05PX1dSQVBcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VDb25maWcge1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gYWRkIGEgcHJlZml4IGJlZm9yZSBgbG9jYWxTdG9yYWdlYCBrZXlzLlxuICAgKiAqVXNlIG9ubHkqIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggb3RoZXIgQVBJcyBvciB0byBhdm9pZCBjb2xsaXNpb24gZm9yIG11bHRpcGxlIGFwcHMgb24gdGhlIHNhbWUgc3ViZG9tYWluLlxuICAgKiAqKldBUk5JTkc6IGRvIG5vdCBjaGFuZ2UgdGhpcyBvcHRpb24gaW4gYW4gYXBwIGFscmVhZHkgZGVwbG95ZWQgaW4gcHJvZHVjdGlvbiwgYXMgcHJldmlvdXNseSBzdG9yZWQgZGF0YSB3b3VsZCBiZSBsb3N0LioqXG4gICAqL1xuICBMU1ByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3dzIHRvIGNoYW5nZSB0aGUgbmFtZSB1c2VkIGZvciBgaW5kZXhlZERCYCBkYXRhYmFzZS5cbiAgICogKlVzZSBvbmx5KiBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIG90aGVyIEFQSXMgb3IgdG8gYXZvaWQgY29sbGlzaW9uIGZvciBtdWx0aXBsZSBhcHBzIG9uIHRoZSBzYW1lIHN1YmRvbWFpbi5cbiAgICogKipXQVJOSU5HOiBkbyBub3QgY2hhbmdlIHRoaXMgb3B0aW9uIGluIGFuIGFwcCBhbHJlYWR5IGRlcGxveWVkIGluIHByb2R1Y3Rpb24sIGFzIHByZXZpb3VzbHkgc3RvcmVkIGRhdGEgd291bGQgYmUgbG9zdC4qKlxuICAgKi9cbiAgSURCREJOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gY2hhbmdlIHRoZSBuYW1lIHVzZWQgZm9yIGBpbmRleGVkREJgIG9iamVjdCBzdG9yZS5cbiAgICogKlVzZSBvbmx5KiBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIG90aGVyIEFQSXMuXG4gICAqICoqV0FSTklORzogZG8gbm90IGNoYW5nZSB0aGlzIG9wdGlvbiBpbiBhbiBhcHAgYWxyZWFkeSBkZXBsb3llZCBpbiBwcm9kdWN0aW9uLCBhcyBwcmV2aW91c2x5IHN0b3JlZCBkYXRhIHdvdWxkIGJlIGxvc3QuKipcbiAgICovXG4gIElEQlN0b3JlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3dzIHRvIGNoYW5nZSB0aGUgZGF0YWJhc2UgdmVyc2lvbiB1c2VkIGZvciBgaW5kZXhlZERCYCBkYXRhYmFzZS5cbiAgICogTXVzdCBiZSBhbiB1bnNpZ25lZCAqKmludGVnZXIqKi5cbiAgICogKipVc2Ugd2l0aCBjYXV0aW9uIGFzIHRoZSBjcmVhdGlvbiBvZiB0aGUgc3RvcmUgZGVwZW5kcyBvbiB0aGUgdmVyc2lvbi4qKlxuICAgKiAqVXNlIG9ubHkqIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggb3RoZXIgQVBJcyBvciB0byBhdm9pZCBjb2xsaXNpb24gZm9yIG11bHRpcGxlIGFwcHMgb24gdGhlIHNhbWUgc3ViZG9tYWluLlxuICAgKiAqKldBUk5JTkc6IGRvIG5vdCBjaGFuZ2UgdGhpcyBvcHRpb24gaW4gYW4gYXBwIGFscmVhZHkgZGVwbG95ZWQgaW4gcHJvZHVjdGlvbiwgYXMgcHJldmlvdXNseSBzdG9yZWQgZGF0YSB3b3VsZCBiZSBsb3N0LioqXG4gICAqL1xuICBJREJEQlZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFsbG93cyBpbnRlcm9wZXJhYmlsaXR5IHdpdGggbmF0aXZlIGBpbmRleGVkREJgIGFuZCBvdGhlciBzdG9yYWdlIGxpYnMsXG4gICAqIGJ5IGNoYW5naW5nIGhvdyB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBgaW5kZXhlZERCYCBkYXRhYmFzZS5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgLiBDaGFuZ2UgdG8gYGZhbHNlYCBmb3IgYmFja3dhcmQgY29tcGF0aWJsaXR5IGluIGV4aXN0aW5nIGFwcGxpY2F0aW9ucy5cbiAgICogKipETyBOT1QgQ0hBTkdFIFRISVMgQkVIQVZJT1IgT05DRSBJTiBQUk9EVUNUSU9OKiosIGFzIGl0IHdvdWxkIGJyZWFrIHdpdGggZXhpc3RpbmcgZGF0YS5cbiAgICovXG4gIElEQk5vV3JhcD86IGJvb2xlYW47XG5cbn1cbiJdfQ==