{"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 { inject, InjectionToken, makeEnvironmentProviders, Provider, provideAppInitializer } 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\tprovideAppInitializer(() => {\n        const initializerFn = (appInit)();\n        return initializerFn();\n      }),\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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"}