UNPKG

ngx-webstorage

Version:

### Local and session storage - Angular service This library provides an easy to use service to manage the web storages (local and session) from your Angular application. It provides also two decorators to synchronize the component attributes and the web

1 lines 47.7 kB
{"version":3,"file":"ngx-webstorage.mjs","sources":["../../../projects/ngx-webstorage/src/lib/constants/strategy.ts","../../../projects/ngx-webstorage/src/lib/helpers/compat.ts","../../../projects/ngx-webstorage/src/lib/helpers/noop.ts","../../../projects/ngx-webstorage/src/lib/constants/config.ts","../../../projects/ngx-webstorage/src/lib/helpers/storageKeyManager.ts","../../../projects/ngx-webstorage/src/lib/core/templates/syncStorage.ts","../../../projects/ngx-webstorage/src/lib/core/templates/asyncStorage.ts","../../../projects/ngx-webstorage/src/lib/core/strategyCache.ts","../../../projects/ngx-webstorage/src/lib/core/nativeStorage.ts","../../../projects/ngx-webstorage/src/lib/strategies/baseSyncStorage.ts","../../../projects/ngx-webstorage/src/lib/strategies/localStorage.ts","../../../projects/ngx-webstorage/src/lib/strategies/sessionStorage.ts","../../../projects/ngx-webstorage/src/lib/strategies/inMemory.ts","../../../projects/ngx-webstorage/src/lib/strategies/index.ts","../../../projects/ngx-webstorage/src/stubs/storageStrategy.stub.ts","../../../projects/ngx-webstorage/src/stubs/storage.stub.ts","../../../projects/ngx-webstorage/src/lib/services/strategyIndex.ts","../../../projects/ngx-webstorage/src/lib/services/localStorage.ts","../../../projects/ngx-webstorage/src/lib/services/sessionStorage.ts","../../../projects/ngx-webstorage/src/lib/helpers/decoratorBuilder.ts","../../../projects/ngx-webstorage/src/lib/decorators.ts","../../../projects/ngx-webstorage/src/lib/provider.ts","../../../projects/ngx-webstorage/src/public_api.ts","../../../projects/ngx-webstorage/src/ngx-webstorage.ts"],"sourcesContent":["export enum StorageStrategies {\n\tLocal = 'local_strategy',\n\tSession = 'session_strategy',\n\tInMemory = 'in_memory_strategy'\n}\n","import {WebStorage} from '../core/interfaces/webStorage';\n\nclass CompatHelper {\n\n\tstatic isStorageAvailable(storage: WebStorage): boolean {\n\t\tlet available = true;\n\t\ttry {\n\t\t\tif (typeof storage === 'object') {\n\t\t\t\tstorage.setItem('test-storage', 'foobar');\n\t\t\t\tstorage.removeItem('test-storage');\n\t\t\t} else available = false;\n\t\t} catch(e) {\n\t\t\tavailable = false;\n\t\t}\n\t\treturn available;\n\t}\n\n}\n\nexport {CompatHelper};\n","export function noop() {}\n","export const DefaultPrefix = 'ngx-webstorage';\nexport const DefaultSeparator = '|';\nexport const DefaultIsCaseSensitive = false;\n","import {DefaultIsCaseSensitive, DefaultPrefix, DefaultSeparator} from '../constants/config';\nimport {NgxWebstorageConfiguration} from '../config';\n\nclass StorageKeyManager {\n\n\tstatic prefix = DefaultPrefix;\n\tstatic separator = DefaultSeparator;\n\tstatic isCaseSensitive = DefaultIsCaseSensitive;\n\n\tstatic normalize(raw: string) {\n\t\traw = StorageKeyManager.isCaseSensitive ? raw : raw.toLowerCase();\n\t\treturn `${StorageKeyManager.prefix}${StorageKeyManager.separator}${raw}`;\n\t}\n\n\tstatic isNormalizedKey(key: string) {\n\t\treturn key.indexOf(StorageKeyManager.prefix + StorageKeyManager.separator) === 0;\n\t}\n\n\tstatic setPrefix(prefix: string) {\n\t\tStorageKeyManager.prefix = prefix;\n\t}\n\n\tstatic setSeparator(separator: string) {\n\t\tStorageKeyManager.separator = separator;\n\t}\n\n\tstatic setCaseSensitive(enable: boolean) {\n\t\tStorageKeyManager.isCaseSensitive = enable;\n\t}\n\n\tstatic consumeConfiguration(config: NgxWebstorageConfiguration) {\n\t\tif ('prefix' in config) this.setPrefix(config.prefix);\n\t\tif ('separator' in config) this.setSeparator(config.separator);\n\t\tif ('caseSensitive' in config) this.setCaseSensitive(config.caseSensitive);\n\t}\n}\n\nexport {StorageKeyManager};\n","import {StorageStrategy} from '../interfaces/storageStrategy';\nimport {noop} from '../../helpers/noop';\nimport {StorageService} from '../interfaces/storageService';\nimport {StorageKeyManager} from '../../helpers/storageKeyManager';\nimport {Observable} from 'rxjs';\nimport {distinctUntilChanged, filter, shareReplay, switchMap} from 'rxjs/operators';\n\nclass SyncStorage implements StorageService {\n\tconstructor(protected strategy: StorageStrategy<any>) {\n\t}\n\n\tretrieve(key: string): any {\n\t\tlet value: any;\n\t\tthis.strategy.get(StorageKeyManager.normalize(key)).subscribe((result) => value = typeof result === 'undefined' ? null : result);\n\t\treturn value;\n\t}\n\n\tstore(key: string, value: any): any {\n\t\tthis.strategy.set(StorageKeyManager.normalize(key), value).subscribe(noop);\n\t\treturn value;\n\t}\n\n\tclear(key?: string): void {\n\t\tif (key !== undefined)\n\t\t\tthis.strategy.del(StorageKeyManager.normalize(key)).subscribe(noop);\n\t\telse this.strategy.clear().subscribe(noop);\n\t}\n\n\tgetStrategyName(): string {return this.strategy.name; }\n\n\tobserve(key: string): Observable<any> {\n\t\tkey = StorageKeyManager.normalize(key);\n\t\treturn this.strategy.keyChanges.pipe(\n\t\t\tfilter((changed: string) => changed === null || changed === key),\n\t\t\tswitchMap(() => this.strategy.get(key)),\n\t\t\tdistinctUntilChanged(),\n\t\t\tshareReplay({refCount: true, bufferSize: 1})\n\t\t);\n\t}\n\n}\n\nexport {SyncStorage};\n","import {StorageStrategy} from '../interfaces/storageStrategy';\nimport {Observable} from 'rxjs';\nimport {StorageService} from '../interfaces/storageService';\nimport {StorageKeyManager} from '../../helpers/storageKeyManager';\nimport {distinctUntilChanged, filter, map, shareReplay, switchMap} from 'rxjs/operators';\n\nclass AsyncStorage implements StorageService {\n\n\tconstructor(protected strategy: StorageStrategy<any>) {\n\t}\n\n\tretrieve(key: string): Observable<any> {\n\t\treturn this.strategy.get(StorageKeyManager.normalize(key)).pipe(\n\t\t\tmap((value: any) => typeof value === 'undefined' ? null : value)\n\t\t);\n\t}\n\n\tstore(key: string, value: any): Observable<any> {\n\t\treturn this.strategy.set(StorageKeyManager.normalize(key), value);\n\t}\n\n\tclear(key?: string): Observable<void> {\n\t\treturn key !== undefined ? this.strategy.del(StorageKeyManager.normalize(key)) : this.strategy.clear();\n\t}\n\n\tgetStrategyName(): string { return this.strategy.name; }\n\n\tobserve(key: string): Observable<any> {\n\t\tkey = StorageKeyManager.normalize(key);\n\t\treturn this.strategy.keyChanges.pipe(\n\t\t\tfilter((changed: string) => changed === null || changed === key),\n\t\t\tswitchMap(() => this.strategy.get(key)),\n\t\t\tdistinctUntilChanged(),\n\t\t\tshareReplay({refCount: true, bufferSize: 1})\n\t\t);\n\t}\n}\nexport {AsyncStorage};\n","import {Injectable} from '@angular/core';\n\nexport interface StrategyCache {\n\t[key: string]: any;\n}\n\n@Injectable({providedIn: 'root'})\nclass StrategyCacheService {\n\n\tprotected caches: { [name: string]: StrategyCache } = {};\n\n\tget(strategyName: string, key: string) {\n\t\treturn this.getCacheStore(strategyName)[key];\n\t}\n\n\tset(strategyName: string, key: string, value: any) {\n\t\tthis.getCacheStore(strategyName)[key] = value;\n\t}\n\n\tdel(strategyName: string, key: string) {\n\t\tdelete this.getCacheStore(strategyName)[key];\n\t}\n\n\tclear(strategyName: string) {\n\t\tthis.caches[strategyName] = {} as StrategyCache;\n\t}\n\n\tprotected getCacheStore(strategyName: string): StrategyCache {\n\t\tif (strategyName in this.caches) return this.caches[strategyName];\n\t\treturn this.caches[strategyName] = {} as StrategyCache;\n\t}\n}\n\nexport {StrategyCacheService};\n","import {FactoryProvider, InjectionToken} from '@angular/core';\nimport {WebStorage} from './interfaces/webStorage';\n\nexport const LOCAL_STORAGE: InjectionToken<WebStorage> = new InjectionToken<WebStorage>('window_local_storage');\n\nexport function getLocalStorage() {\n\treturn (typeof window !== 'undefined') ? window.localStorage : null;\n}\n\nexport const LocalStorageProvider: FactoryProvider = {provide: LOCAL_STORAGE, useFactory: getLocalStorage};\n\nexport const SESSION_STORAGE: InjectionToken<WebStorage> = new InjectionToken<WebStorage>('window_session_storage');\n\nexport function getSessionStorage() {\n\treturn (typeof window !== 'undefined') ? window.sessionStorage : null;\n}\n\nexport const SessionStorageProvider: FactoryProvider = {provide: SESSION_STORAGE, useFactory: getSessionStorage};\n","import {StorageStrategy} from '../core/interfaces/storageStrategy';\nimport {Observable, of, Subject} from 'rxjs';\nimport {StrategyCacheService} from '../core/strategyCache';\nimport {CompatHelper} from '../helpers/compat';\nimport {WebStorage} from '../core/interfaces/webStorage';\n\nabstract class BaseSyncStorageStrategy implements StorageStrategy<any> {\n\treadonly keyChanges: Subject<string> = new Subject();\n\tabstract readonly name: string;\n\n\tconstructor(protected storage: WebStorage, protected cache: StrategyCacheService) {}\n\n\tprotected _isAvailable: boolean;\n\n\tget isAvailable(): boolean {\n\t\tif (this._isAvailable === undefined) this._isAvailable = CompatHelper.isStorageAvailable(this.storage);\n\t\treturn this._isAvailable;\n\t}\n\n\tget(key: string): Observable<any> {\n\t\tlet data: any = this.cache.get(this.name, key);\n\t\tif (data !== undefined) return of(data);\n\n\t\ttry {\n\t\t\tconst item: any = this.storage.getItem(key);\n\t\t\tif (item !== null) {\n\t\t\t\tdata = JSON.parse(item);\n\t\t\t\tthis.cache.set(this.name, key, data);\n\t\t\t}\n\t\t} catch(err) {\n\t\t\tconsole.warn(err);\n\t\t}\n\n\t\treturn of(data);\n\t}\n\n\tset(key: string, value: any): Observable<any> {\n\t\tconst data: string = JSON.stringify(value);\n\t\tthis.storage.setItem(key, data);\n\t\tthis.cache.set(this.name, key, value);\n\t\tthis.keyChanges.next(key);\n\t\treturn of(value);\n\t}\n\n\tdel(key: string): Observable<void> {\n\t\tthis.storage.removeItem(key);\n\t\tthis.cache.del(this.name, key);\n\t\tthis.keyChanges.next(key);\n\t\treturn of(null);\n\t}\n\n\tclear(): Observable<void> {\n\t\tthis.storage.clear();\n\t\tthis.cache.clear(this.name);\n\t\tthis.keyChanges.next(null);\n\t\treturn of(null);\n\t}\n\n}\n\nexport {BaseSyncStorageStrategy};\n","import {StrategyCacheService} from '../core/strategyCache';\nimport {BaseSyncStorageStrategy} from './baseSyncStorage';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\nimport {LOCAL_STORAGE} from '../core/nativeStorage';\nimport {StorageStrategies} from '../constants/strategy';\nimport {isPlatformBrowser} from '@angular/common';\nimport {WebStorage} from '../core/interfaces/webStorage';\n\n@Injectable()\nclass LocalStorageStrategy extends BaseSyncStorageStrategy {\n\tstatic readonly strategyName: string = StorageStrategies.Local;\n\treadonly name: string = LocalStorageStrategy.strategyName;\n\n\tconstructor(@Inject(LOCAL_STORAGE) protected storage: WebStorage,\n\t\t\t\tprotected cache: StrategyCacheService,\n\t\t\t\t@Inject(PLATFORM_ID) protected platformId: any,\n\t\t\t\tprotected zone: NgZone) {\n\t\tsuper(storage, cache);\n\t\tif (isPlatformBrowser(this.platformId)) this.listenExternalChanges();\n\t}\n\n\tprotected listenExternalChanges() {\n\t\twindow.addEventListener('storage', (event: StorageEvent) => this.zone.run(() => {\n\t\t\tif (event.storageArea !== this.storage) return;\n\t\t\tconst key: string = event.key;\n\t\t\tif (key !== null) this.cache.del(this.name, event.key);\n\t\t\telse this.cache.clear(this.name);\n\t\t\tthis.keyChanges.next(key);\n\t\t}));\n\t}\n\n}\n\nexport {LocalStorageStrategy};\n","import {StrategyCacheService} from '../core/strategyCache';\nimport {BaseSyncStorageStrategy} from './baseSyncStorage';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\nimport {SESSION_STORAGE} from '../core/nativeStorage';\nimport {StorageStrategies} from '../constants/strategy';\nimport {isPlatformBrowser} from '@angular/common';\nimport {WebStorage} from '../core/interfaces/webStorage';\n\n@Injectable()\n class SessionStorageStrategy extends BaseSyncStorageStrategy {\n\tstatic readonly strategyName: string = StorageStrategies.Session;\n\treadonly name: string = SessionStorageStrategy.strategyName;\n\n\tconstructor(@Inject(SESSION_STORAGE) protected storage: WebStorage,\n\t protected cache: StrategyCacheService,\n\t @Inject(PLATFORM_ID) protected platformId: any,\n\t protected zone: NgZone) {\n\t\tsuper(storage, cache);\n\t\tif (isPlatformBrowser(this.platformId)) this.listenExternalChanges();\n\t}\n\n\tprotected listenExternalChanges() {\n\t\twindow.addEventListener('storage', (event: StorageEvent) => this.zone.run(() => {\n\t\t\tif (event.storageArea !== this.storage) return;\n\t\t\tconst key: string = event.key;\n\t\t\tif (event.key !== null) this.cache.del(this.name, event.key);\n\t\t\telse this.cache.clear(this.name);\n\t\t\tthis.keyChanges.next(key);\n\t\t}));\n\t}\n\n}\n\nexport {SessionStorageStrategy};\n","import {StorageStrategy} from '../core/interfaces/storageStrategy';\nimport {Observable, of, Subject} from 'rxjs';\nimport {StrategyCacheService} from '../core/strategyCache';\nimport {StorageStrategies} from '../constants/strategy';\nimport {Inject, Injectable} from '@angular/core';\n\n@Injectable()\nclass InMemoryStorageStrategy implements StorageStrategy<any> {\n\tstatic readonly strategyName: string = StorageStrategies.InMemory;\n\treadonly keyChanges: Subject<string> = new Subject();\n\tisAvailable: boolean = true;\n\treadonly name: string = InMemoryStorageStrategy.strategyName;\n\n\tconstructor(@Inject(StrategyCacheService) protected cache: StrategyCacheService) {}\n\n\tget(key: string): Observable<any> {\n\t\treturn of(this.cache.get(this.name, key));\n\t}\n\n\tset(key: string, value: any): Observable<any> {\n\t\tthis.cache.set(this.name, key, value);\n\t\tthis.keyChanges.next(key);\n\t\treturn of(value);\n\t}\n\n\tdel(key: string): Observable<void> {\n\t\tthis.cache.del(this.name, key);\n\t\tthis.keyChanges.next(key);\n\t\treturn of(null);\n\t}\n\n\tclear(): Observable<void> {\n\t\tthis.cache.clear(this.name);\n\t\tthis.keyChanges.next(null);\n\t\treturn of(null);\n\t}\n\n}\n\nexport {InMemoryStorageStrategy};\n","import {InjectionToken, Provider} from '@angular/core';\nimport {StorageStrategy} from '../core/interfaces/storageStrategy';\nimport {LocalStorageStrategy} from './localStorage';\nimport {SessionStorageStrategy} from './sessionStorage';\nimport {InMemoryStorageStrategy} from './inMemory';\n\nexport const STORAGE_STRATEGIES: InjectionToken<StorageStrategy<any>> = new InjectionToken<StorageStrategy<any>>('STORAGE_STRATEGIES');\n\nexport const Strategies: Provider[] = [\n\t{provide: STORAGE_STRATEGIES, useClass: InMemoryStorageStrategy, multi: true},\n\t{provide: STORAGE_STRATEGIES, useClass: LocalStorageStrategy, multi: true},\n\t{provide: STORAGE_STRATEGIES, useClass: SessionStorageStrategy, multi: true},\n];\n\nexport const [InMemoryStorageStrategyProvider, LocalStorageStrategyProvider, SessionStorageStrategyProvider] = Strategies;\n","import {Observable, of, Subject} from 'rxjs';\nimport {StorageStrategy} from '../lib/core/interfaces/storageStrategy';\n\nexport const StorageStrategyStubName: string = 'stub_strategy';\n\nclass StorageStrategyStub implements StorageStrategy<any> {\n\n\treadonly keyChanges: Subject<string> = new Subject();\n\tpublic store: any = {};\n\tpublic _available: boolean = true;\n\treadonly name: string;\n\n\tconstructor(name?: string) {\n\t\tthis.name = name || StorageStrategyStubName;\n\t}\n\n\tget isAvailable(): boolean {\n\t\treturn this._available;\n\t}\n\n\tget(key: string): Observable<any> {\n\t\treturn of(this.store[key]);\n\t}\n\n\tset(key: string, value: any): Observable<any> {\n\t\tthis.store[key] = value;\n\t\tthis.keyChanges.next(key);\n\t\treturn of(value);\n\t}\n\n\tdel(key: string): Observable<void> {\n\t\tdelete this.store[key];\n\t\tthis.keyChanges.next(key);\n\t\treturn of(null);\n\t}\n\n\tclear(): Observable<void> {\n\t\tthis.store = {};\n\t\tthis.keyChanges.next(null);\n\t\treturn of(null);\n\t}\n\n}\n\nexport {StorageStrategyStub};\n","import {WebStorage} from '../lib/core/interfaces/webStorage';\n\nclass StorageStub implements WebStorage {\n\t[name: string]: any;\n\n\tpublic store: { [prop: string]: any } = {};\n\n\tget length(): number {\n\t\treturn Object.keys(this.store).length;\n\t}\n\n\tclear(): void {\n\t\tthis.store = {};\n\t}\n\n\tgetItem(key: string): string | null {\n\t\treturn this.store[key] || null;\n\t}\n\n\tkey(index: number): string | null {\n\t\treturn Object.keys(this.store)[index];\n\t}\n\n\tremoveItem(key: string): void {\n\t\tdelete this.store[key];\n\t}\n\n\tsetItem(key: string, value: string): void {\n\t\tthis.store[key] = value;\n\t}\n\n}\nexport {StorageStub};\n","import {StorageStrategy} from '../core/interfaces/storageStrategy';\nimport {Subject} from 'rxjs';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {STORAGE_STRATEGIES} from '../strategies';\nimport {StorageStrategies} from '../constants/strategy';\n\nexport const InvalidStrategyError = 'invalid_strategy';\n\n@Injectable({providedIn: 'root'})\nexport class StrategyIndex {\n\n\tstatic index: { [name: string]: StorageStrategy<any> } = {};\n\treadonly registration$: Subject<string> = new Subject();\n\n\tconstructor(@Optional() @Inject(STORAGE_STRATEGIES) protected strategies: StorageStrategy<any>[]) {\n\t\tif (!strategies) strategies = [];\n\t\tthis.strategies = strategies.reverse()\n\t\t\t.map((strategy: StorageStrategy<any>, index, arr) => strategy.name)\n\t\t\t.map((name: string, index, arr) => arr.indexOf(name) === index ? index : null)\n\t\t\t.filter((index: number) => index !== null)\n\t\t\t.map((index: number) => strategies[index]);\n\t}\n\n\tstatic get(name: string): StorageStrategy<any> {\n\t\tif (!this.isStrategyRegistered(name)) throw Error(InvalidStrategyError);\n\t\tlet strategy: StorageStrategy<any> = this.index[name];\n\t\tif (!strategy.isAvailable) {\n\t\t\tstrategy = this.index[StorageStrategies.InMemory];\n\t\t}\n\t\treturn strategy;\n\t}\n\n\tstatic set(name: string, strategy): void {\n\t\tthis.index[name] = strategy;\n\t}\n\n\tstatic clear(name?: string): void {\n\t\tif (name !== undefined) delete this.index[name];\n\t\telse this.index = {};\n\t}\n\n\tstatic isStrategyRegistered(name: string): boolean {\n\t\treturn name in this.index;\n\t}\n\n\tstatic hasRegistredStrategies(): boolean {\n\t\treturn Object.keys(this.index).length > 0;\n\t}\n\n\tpublic getStrategy(name: string): StorageStrategy<any> {\n\t\treturn StrategyIndex.get(name);\n\t}\n\n\tpublic indexStrategies() {\n\t\tthis.strategies.forEach((strategy: StorageStrategy<any>) => this.register(strategy.name, strategy));\n\t}\n\n\tpublic indexStrategy(name: string, overrideIfExists: boolean = false): StorageStrategy<any> {\n\t\tif (StrategyIndex.isStrategyRegistered(name) && !overrideIfExists) return StrategyIndex.get(name);\n\t\tconst strategy: StorageStrategy<any> = this.strategies.find((strategy: StorageStrategy<any>) => strategy.name === name);\n\t\tif (!strategy) throw new Error(InvalidStrategyError);\n\t\tthis.register(name, strategy, overrideIfExists);\n\t\treturn strategy;\n\t}\n\n\tpublic register(name: string, strategy: StorageStrategy<any>, overrideIfExists: boolean = false) {\n\t\tif (!StrategyIndex.isStrategyRegistered(name) || overrideIfExists) {\n\t\t\tStrategyIndex.set(name, strategy);\n\t\t\tthis.registration$.next(name);\n\t\t}\n\t}\n\n}\n\nexport {StorageStrategy};\n","import {FactoryProvider} from '@angular/core';\nimport {SyncStorage} from '../core/templates/syncStorage';\nimport {StrategyIndex} from './strategyIndex';\nimport {StorageStrategy} from '../core/interfaces/storageStrategy';\nimport {StorageStrategies} from '../constants/strategy';\n\nclass LocalStorageService extends SyncStorage {}\n\nexport {LocalStorageService};\n\nexport function buildService(index: StrategyIndex) {\n\tconst strategy: StorageStrategy<any> = index.indexStrategy(StorageStrategies.Local);\n\treturn new SyncStorage(strategy);\n}\n\nexport const LocalStorageServiceProvider: FactoryProvider = {\n\tprovide: LocalStorageService,\n\tuseFactory: buildService,\n\tdeps: [StrategyIndex]\n};\n","import {FactoryProvider} from '@angular/core';\nimport {SyncStorage} from '../core/templates/syncStorage';\nimport {StrategyIndex} from './strategyIndex';\nimport {StorageStrategy} from '../core/interfaces/storageStrategy';\nimport {StorageStrategies} from '../constants/strategy';\n\nclass SessionStorageService extends SyncStorage {}\n\nexport {SessionStorageService};\n\nexport function buildService(index: StrategyIndex) {\n\tconst strategy: StorageStrategy<any> = index.indexStrategy(StorageStrategies.Session);\n\treturn new SyncStorage(strategy);\n}\n\nexport const SessionStorageServiceProvider: FactoryProvider = {\n\tprovide: SessionStorageService,\n\tuseFactory: buildService,\n\tdeps: [StrategyIndex]\n};\n","import {StrategyIndex} from '../services/strategyIndex';\nimport {StorageStrategies} from '../constants/strategy';\nimport {StorageKeyManager} from './storageKeyManager';\nimport {noop} from './noop';\n\nclass DecoratorBuilder {\n\n\tstatic buildSyncStrategyDecorator(strategyName: string | StorageStrategies, prototype, propName: string, key?: string, defaultValue: any = null) {\n\t\tconst rawKey: string = key || propName;\n\t\tlet storageKey: string;\n\n\t\tObject.defineProperty(prototype, propName, {\n\t\t\tget: function() {\n\t\t\t\tlet value: any;\n\t\t\t\tStrategyIndex.get(strategyName).get(getKey()).subscribe((result) => value = result);\n\t\t\t\treturn value === undefined ? defaultValue : value;\n\t\t\t},\n\t\t\tset: function(value) {\n\t\t\t\tStrategyIndex.get(strategyName).set(getKey(), value).subscribe(noop);\n\t\t\t}\n\t\t});\n\n\t\tfunction getKey() {\n\t\t\tif (storageKey !== undefined) return storageKey;\n\t\t\treturn storageKey = StorageKeyManager.normalize(rawKey);\n\t\t}\n\t}\n}\n\nexport {DecoratorBuilder};\n","import {StorageStrategies} from './constants/strategy';\nimport {DecoratorBuilder} from './helpers/decoratorBuilder';\n\nexport function LocalStorage(key?: string, defaultValue?: any) {\n\treturn function(prototype, propName) {\n\t\tDecoratorBuilder.buildSyncStrategyDecorator(StorageStrategies.Local, prototype, propName, key, defaultValue);\n\t};\n}\n\nexport function SessionStorage(key?: string, defaultValue?: any) {\n\treturn function(prototype, propName) {\n\t\tDecoratorBuilder.buildSyncStrategyDecorator(StorageStrategies.Session, prototype, propName, key, defaultValue);\n\t};\n}\n","import {APP_INITIALIZER, inject, InjectionToken, makeEnvironmentProviders, Provider} from '@angular/core';\nimport {NgxWebstorageConfiguration} from './config';\nimport {StrategyIndex} from '../public_api';\nimport {InMemoryStorageStrategyProvider, LocalStorageStrategyProvider, SessionStorageStrategyProvider} from './strategies';\nimport {LocalStorageProvider, SessionStorageProvider} from './core/nativeStorage';\nimport {LocalStorageServiceProvider} from './services/localStorage';\nimport {SessionStorageServiceProvider} from './services/sessionStorage';\nimport {DefaultIsCaseSensitive, DefaultPrefix, DefaultSeparator} from './constants/config';\nimport {StorageKeyManager} from './helpers/storageKeyManager';\n\nexport const LIB_CONFIG: InjectionToken<NgxWebstorageConfiguration> = new InjectionToken<NgxWebstorageConfiguration>('ngx_webstorage_config');\n\nexport enum InternalNgxWebstorageFeatureKind {\n\tConfig = 1,\n\tLocalStorage = 2,\n\tSessionStorage = 3,\n}\n\nexport type NgxWebstorageFeatureKind = string | InternalNgxWebstorageFeatureKind;\n\nexport type NgxWebstorageFeature<FeatureKind extends NgxWebstorageFeatureKind> = {\n\tkind: FeatureKind;\n\tproviders: Provider[];\n};\n\nfunction appInit() {\n\tconst config = inject(LIB_CONFIG);\n\tconst index = inject(StrategyIndex);\n\treturn () => {\n\t\tStorageKeyManager.consumeConfiguration(config);\n\t\tindex.indexStrategies();\n\t};\n}\n\n/**\n * Provide ngx-webstorage basic features.\n *\n * - You can customise the configuration with the `withConfiguration` feature.\n * - You can enable the `LocalStorage` features with the `withLocalStorage` feature.\n * - You can enable the `SessionStorage` features with the `withSessionStorage` feature.\n *\n * @default config { prefix: 'ngx-webstorage', separator: '|', caseSensitive: false }\n */\nexport function provideNgxWebstorage(...features: NgxWebstorageFeature<NgxWebstorageFeatureKind>[]) {\n\tconst {configProvider, featureProviders} = parseFeatures(features);\n\treturn makeEnvironmentProviders([\n\t\tconfigProvider,\n\t\tInMemoryStorageStrategyProvider,\n\t\t{provide: APP_INITIALIZER, useFactory: appInit, multi: true},\n\t\t...featureProviders,\n\t]);\n}\n\nfunction parseFeatures(features: NgxWebstorageFeature<NgxWebstorageFeatureKind>[]) {\n\tlet configProvider: Provider;\n\tconst featureProviders: Provider[] = [];\n\n\tconst parsedFeatures = new Set<NgxWebstorageFeatureKind>();\n\n\tfor (const feature of features) {\n\t\tif (parsedFeatures.has(feature.kind)) throw new Error(`Feature ${feature.kind} is already provided.`);\n\n\t\tif (feature.kind === InternalNgxWebstorageFeatureKind.Config) {\n\t\t\tconfigProvider = feature.providers[0];\n\t\t} else featureProviders.push(...feature.providers);\n\n\t\tparsedFeatures.add(feature.kind);\n\t}\n\n\treturn {\n\t\tconfigProvider: configProvider ?? {\n\t\t\tprovide: LIB_CONFIG,\n\t\t\tuseValue: {prefix: DefaultPrefix, separator: DefaultSeparator, caseSensitive: DefaultIsCaseSensitive}\n\t\t},\n\t\tfeatureProviders\n\t};\n}\n\nexport function makeNgxWebstorageFeature<FeatureKind extends NgxWebstorageFeatureKind>(kind: FeatureKind, providers: Provider[]): NgxWebstorageFeature<FeatureKind> {\n\treturn {kind, providers};\n}\n\nexport function withNgxWebstorageConfig(config: NgxWebstorageConfiguration) {\n\treturn makeNgxWebstorageFeature(InternalNgxWebstorageFeatureKind.Config, [{provide: LIB_CONFIG, useValue: config}]);\n}\n\n/** Provides everything necessary to use the `LocalStorage` features. */\nexport function withLocalStorage() {\n\treturn makeNgxWebstorageFeature(InternalNgxWebstorageFeatureKind.LocalStorage, [\n\t\tLocalStorageProvider,\n\t\tLocalStorageServiceProvider,\n\t\tLocalStorageStrategyProvider,\n\t]);\n}\n\nexport function withSessionStorage() {\n\treturn makeNgxWebstorageFeature(InternalNgxWebstorageFeatureKind.SessionStorage, [\n\t\tSessionStorageProvider,\n\t\tSessionStorageServiceProvider,\n\t\tSessionStorageStrategyProvider,\n\t]);\n}\n","/*\n * Public API Surface of ngx-webstorage\n */\n\nexport * from './lib/constants/strategy';\n\nexport * from './lib/helpers/compat';\n\nexport * from './lib/core/templates/syncStorage';\nexport * from './lib/core/templates/asyncStorage';\nexport * from './lib/core/strategyCache';\nexport {LOCAL_STORAGE, SESSION_STORAGE} from './lib/core/nativeStorage';\n\nexport {STORAGE_STRATEGIES} from './lib/strategies/index';\nexport * from './lib/strategies/localStorage';\nexport * from './lib/strategies/sessionStorage';\nexport * from './lib/strategies/inMemory';\nexport * from './stubs/storageStrategy.stub';\nexport * from './stubs/storage.stub';\n\nexport * from './lib/services/strategyIndex';\nexport {LocalStorageService} from './lib/services/localStorage';\nexport {SessionStorageService} from './lib/services/sessionStorage';\n\nexport * from './lib/core/interfaces/storageStrategy';\nexport * from './lib/decorators';\nexport * from './lib/provider';\n\n\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.StrategyCacheService","buildService"],"mappings":"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"}