{"version":3,"file":"ngneat-cashew.mjs","sources":["../../../../projects/ngneat/cashew/src/lib/key-serializer.ts","../../../../projects/ngneat/cashew/src/lib/cache-config.ts","../../../../projects/ngneat/cashew/src/lib/cache-storage.ts","../../../../projects/ngneat/cashew/src/lib/storage/tokens.ts","../../../../projects/ngneat/cashew/src/lib/ttl-manager.ts","../../../../projects/ngneat/cashew/src/lib/cache-guard.ts","../../../../projects/ngneat/cashew/src/lib/requests-queue.ts","../../../../projects/ngneat/cashew/src/lib/cache-bucket.ts","../../../../projects/ngneat/cashew/src/lib/requests-cache.ts","../../../../projects/ngneat/cashew/src/lib/versions.ts","../../../../projects/ngneat/cashew/src/lib/cache-manager.service.ts","../../../../projects/ngneat/cashew/src/lib/cache-context.ts","../../../../projects/ngneat/cashew/src/lib/cache-interceptor.ts","../../../../projects/ngneat/cashew/src/lib/cache-interceptor.providers.ts","../../../../projects/ngneat/cashew/src/lib/storage/browser-storage-cache.ts","../../../../projects/ngneat/cashew/src/lib/storage/browser-storage-ttl.ts","../../../../projects/ngneat/cashew/src/lib/storage/browser-storage-version-manager.ts","../../../../projects/ngneat/cashew/src/lib/local-storage/local-storage.ts","../../../../projects/ngneat/cashew/src/lib/local-storage/local-storage-providers.ts","../../../../projects/ngneat/cashew/src/lib/session-storage/session-storage.ts","../../../../projects/ngneat/cashew/src/lib/session-storage/session-storage-providers.ts","../../../../projects/ngneat/cashew/src/lib/utils.ts","../../../../projects/ngneat/cashew/src/ngneat-cashew.ts"],"sourcesContent":["import { HttpRequest } from '@angular/common/http';\nimport { ContextOptions } from './cache-context';\n\nexport abstract class KeySerializer {\n  abstract serialize(request: HttpRequest<any>, context: ContextOptions): string;\n}\n\nexport class DefaultKeySerializer extends KeySerializer {\n  serialize(request: HttpRequest<any>, context: ContextOptions) {\n    const { key } = context;\n\n    if (key) {\n      return (typeof key === 'function' ? key(request) : key).toString();\n    }\n\n    return request.urlWithParams;\n  }\n}\n","import { InjectionToken, inject, makeEnvironmentProviders } from '@angular/core';\n\nexport interface HttpCacheConfig {\n  strategy: 'implicit' | 'explicit';\n  mode: 'stateManagement' | 'cache';\n  ttl: number;\n  responseSerializer?: (value: any) => any;\n}\n\nexport const defaultConfig: HttpCacheConfig = {\n  strategy: 'explicit',\n  mode: 'cache',\n  ttl: 3_600_000 // One hour\n};\n\nexport const HTTP_CACHE_CONFIG = new InjectionToken<HttpCacheConfig>('HTTP_CACHE_CONFIG');\n\nexport function injectCacheConfig() {\n  return inject(HTTP_CACHE_CONFIG);\n}\n\nexport function withConfig(config: Partial<HttpCacheConfig>) {\n  return makeEnvironmentProviders([\n    {\n      provide: HTTP_CACHE_CONFIG,\n      useValue: { ...defaultConfig, ...config }\n    }\n  ]);\n}\n\nexport function isHttpCacheConfig(value: unknown): value is Partial<HttpCacheConfig> {\n  if (!value || typeof value !== 'object' || Array.isArray(value)) {\n    return false;\n  }\n\n  const obj = value as Record<string, unknown>;\n\n  // Check if it has any HttpCacheConfig properties\n  const hasStrategy = 'strategy' in obj && (obj.strategy === 'implicit' || obj.strategy === 'explicit');\n  const hasMode = 'mode' in obj && (obj.mode === 'stateManagement' || obj.mode === 'cache');\n  const hasTtl = 'ttl' in obj && typeof obj.ttl === 'number';\n  const hasResponseSerializer = 'responseSerializer' in obj && typeof obj.responseSerializer === 'function';\n\n  return hasStrategy || hasMode || hasTtl || hasResponseSerializer;\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nexport abstract class HttpCacheStorage extends Map<string, HttpResponse<any> | boolean> {}\n\n@Injectable()\nexport class DefaultHttpCacheStorage extends HttpCacheStorage {}\n","import { InjectionToken } from '@angular/core';\nimport { BrowserStorageHttpCacheStorage } from './browser-storage-cache';\nimport { BrowserStorageTTLManager } from './browser-storage-ttl';\nimport { BrowserStorageVersionsManager } from './browser-storage-version-manager';\n\nexport const LocalStorageHttpCacheStorage = new InjectionToken<BrowserStorageHttpCacheStorage>(\n  'LocalStorageHttpCacheStorage'\n);\nexport const LocalStorageTTLManager = new InjectionToken<BrowserStorageTTLManager>('LocalStorageTTLManager');\nexport const LocalStorageVersionsManager = new InjectionToken<BrowserStorageVersionsManager>(\n  'LocalStorageVersionsManager'\n);\n\nexport const SessionStorageHttpCacheStorage = new InjectionToken<BrowserStorageHttpCacheStorage>(\n  'SessionStorageHttpCacheStorage'\n);\nexport const SessionStorageTTLManager = new InjectionToken<BrowserStorageTTLManager>('SessionStorageTTLManager');\nexport const SessionStorageVersionsManager = new InjectionToken<BrowserStorageVersionsManager>(\n  'SessionStorageVersionsManager'\n);\n","import { Injectable } from '@angular/core';\nimport { injectCacheConfig } from './cache-config';\n\nexport abstract class TTLManager extends Map<string, number> {\n  abstract isValid(key: string): boolean;\n}\n\n@Injectable()\nexport class DefaultTTLManager extends TTLManager {\n  private config = injectCacheConfig();\n\n  isValid(key: string): boolean {\n    return this.get(key)! > new Date().getTime();\n  }\n\n  set(key: string, ttl: number) {\n    return super.set(key, new Date().setMilliseconds(ttl || this.config.ttl));\n  }\n}\n","import { HttpRequest } from '@angular/common/http';\n\nexport abstract class HttpCacheGuard {\n  abstract canActivate(request: HttpRequest<any>): boolean;\n}\n\nexport class DefaultHttpCacheGuard implements HttpCacheGuard {\n  canActivate(request: HttpRequest<any>): boolean {\n    return request.method === 'GET' && request.responseType === 'json';\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class RequestsQueue extends Map<string, Observable<HttpEvent<any>>> {}\n","export class CacheBucket extends Set<string> {}\n","import { Injectable } from '@angular/core';\nimport { HttpRequest } from '@angular/common/http';\n\n@Injectable()\nexport class RequestsCache extends Map<string, HttpRequest<any>> {}\n","import { Injectable } from '@angular/core';\n\nexport abstract class HttpCacheVersions extends Map<string, string> {}\n\n@Injectable()\nexport class DefaultHttpVersions extends HttpCacheVersions {}\n","import { HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Injectable, inject, Injector } from '@angular/core';\nimport { injectCacheConfig } from './cache-config';\nimport { DefaultHttpCacheStorage, HttpCacheStorage } from './cache-storage';\nimport {\n  LocalStorageHttpCacheStorage,\n  LocalStorageTTLManager,\n  LocalStorageVersionsManager,\n  SessionStorageHttpCacheStorage,\n  SessionStorageTTLManager,\n  SessionStorageVersionsManager\n} from './storage/tokens';\nimport { DefaultTTLManager, TTLManager } from './ttl-manager';\nimport { HttpCacheGuard } from './cache-guard';\nimport { RequestsQueue } from './requests-queue';\nimport { CacheBucket } from './cache-bucket';\nimport { RequestsCache } from './requests-cache';\nimport { HttpCacheVersions } from './versions';\nimport { CacheStorageStrategy } from './cache-context';\n\ninterface ResolvedCacheServices {\n  storage: HttpCacheStorage;\n  ttlManager: TTLManager;\n  versions: HttpCacheVersions;\n}\n\n@Injectable()\nexport class HttpCacheManager {\n  private config = injectCacheConfig();\n  private queue = inject(RequestsQueue);\n  private guard = inject(HttpCacheGuard);\n  private requests = inject(RequestsCache);\n  private injector = inject(Injector);\n\n  private _getCacheServices(storageStrategy?: CacheStorageStrategy): ResolvedCacheServices {\n    if (storageStrategy === 'localStorage') {\n      const lsStorage = this.injector.get(LocalStorageHttpCacheStorage, null, { optional: true });\n      const lsTtl = this.injector.get(LocalStorageTTLManager, null, { optional: true });\n      const lsVersions = this.injector.get(LocalStorageVersionsManager, null, { optional: true });\n\n      if (lsStorage && lsTtl && lsVersions) {\n        return { storage: lsStorage, ttlManager: lsTtl, versions: lsVersions };\n      } else {\n        throw new Error(\n          'HttpCacheManager: LocalStorage strategy chosen, but not available. Did you forget to configure it via `withLocalStorage()`?'\n        );\n      }\n    }\n\n    if (storageStrategy === 'sessionStorage') {\n      const ssStorage = this.injector.get(SessionStorageHttpCacheStorage, null, { optional: true });\n      const ssTtl = this.injector.get(SessionStorageTTLManager, null, { optional: true });\n      const ssVersions = this.injector.get(SessionStorageVersionsManager, null, { optional: true });\n\n      if (ssStorage && ssTtl && ssVersions) {\n        return { storage: ssStorage, ttlManager: ssTtl, versions: ssVersions };\n      } else {\n        throw new Error(\n          'HttpCacheManager: SessionStorage strategy chosen, but not available. Did you forget to configure it via `withSessionStorage()`?'\n        );\n      }\n    }\n\n    if (storageStrategy && storageStrategy !== 'memory') {\n      console.warn(\n        `HttpCacheManager: Storage strategy '${storageStrategy}' not supported, defaulting to memory strategy.`\n      );\n    }\n\n    // default strategy\n    return {\n      storage: this.injector.get(DefaultHttpCacheStorage),\n      ttlManager: this.injector.get(DefaultTTLManager),\n      versions: this.injector.get(HttpCacheVersions)\n    };\n  }\n\n  validate(key: string, strategy?: CacheStorageStrategy) {\n    const { storage, ttlManager } = this._getCacheServices(strategy);\n    const has = storage.has(key);\n    const isValid = ttlManager.isValid(key);\n\n    if (has && isValid) return true;\n\n    storage.delete(key);\n\n    return false;\n  }\n\n  get<T = any>(key: string, strategy?: CacheStorageStrategy): HttpResponse<T> {\n    const { storage } = this._getCacheServices(strategy);\n    return this._resolveResponse<T>(storage.get(key)! as HttpResponse<any>);\n  }\n\n  has(key: string, strategy?: CacheStorageStrategy) {\n    const { storage } = this._getCacheServices(strategy);\n    return storage.has(key);\n  }\n\n  set(\n    key: string,\n    body: HttpResponse<any> | any,\n    { ttl, bucket, strategy }: { ttl?: number; bucket?: CacheBucket; strategy?: CacheStorageStrategy } = {}\n  ) {\n    let response = body;\n\n    if (!(body instanceof HttpResponse)) {\n      response = new HttpResponse({\n        body,\n        status: 200,\n        url: key\n      });\n    }\n\n    this._set(key, response, ttl ?? this.config.ttl, strategy);\n    bucket && bucket.add(key);\n  }\n\n  delete(\n    key: string | CacheBucket,\n    {\n      deleteRequests,\n      deleteVersions,\n      strategy\n    }: { deleteVersions?: boolean; deleteRequests?: boolean; strategy?: CacheStorageStrategy } = {}\n  ): void {\n    if (key instanceof CacheBucket) {\n      key.forEach(value => this.delete(value, { deleteRequests, deleteVersions, strategy }));\n      key.clear();\n      return;\n    }\n\n    const { storage, ttlManager, versions: versionsManager } = this._getCacheServices(strategy);\n\n    storage.delete(key);\n    ttlManager.delete(key);\n    this.queue.delete(key);\n\n    if (deleteRequests) {\n      this._getRequests().delete(key);\n    }\n\n    if (deleteVersions) {\n      versionsManager.delete(key);\n    }\n  }\n\n  /**\n   * If a strategy is provided, will clear the cache for that specific storage strategy.\n   * Defaults to clear all storages.\n   * @param strategy - The storage strategy to clear (memory or localStorage).\n   */\n  clear(strategy?: CacheStorageStrategy) {\n    if (strategy) {\n      const { storage, ttlManager, versions: versionsManager } = this._getCacheServices(strategy);\n      storage.clear();\n      ttlManager.clear();\n      versionsManager.clear();\n    } else {\n      // Clear all storages (memory, localStorage and sessionStorage if available)\n      // Memory\n      const { storage, ttlManager, versions: versionsManager } = this._getCacheServices('memory');\n      storage.clear();\n      ttlManager.clear();\n      versionsManager.clear();\n      // LocalStorage (if available)\n      try {\n        const { storage, ttlManager, versions: versionsManager } = this._getCacheServices('localStorage');\n        storage.clear();\n        ttlManager.clear();\n        versionsManager.clear();\n      } catch {\n        // Ignore if localStorage services are not available\n      }\n\n      // SessionStorage (if available)\n      try {\n        const { storage, ttlManager, versions: versionsManager } = this._getCacheServices('sessionStorage');\n        storage.clear();\n        ttlManager.clear();\n        versionsManager.clear();\n      } catch {\n        // Ignore if sessionStorage services are not available\n      }\n    }\n    this.queue.clear();\n    this._getRequests().clear();\n  }\n\n  _getQueue() {\n    return this.queue;\n  }\n\n  _getRequests() {\n    return this.requests;\n  }\n\n  _getVersions(strategy?: CacheStorageStrategy): HttpCacheVersions {\n    return this._getCacheServices(strategy).versions;\n  }\n\n  _isCacheable(canActivate: boolean, cache: boolean) {\n    const strategy = this.config.strategy;\n\n    if (strategy === 'explicit') {\n      return cache;\n    }\n\n    if (canActivate && strategy === 'implicit') {\n      return cache;\n    }\n\n    return false;\n  }\n\n  _set(key: string, response: HttpResponse<any> | boolean, ttl: number, strategy?: CacheStorageStrategy) {\n    const { storage, ttlManager } = this._getCacheServices(strategy);\n    storage.set(key, response);\n    ttlManager.set(key, ttl);\n  }\n\n  _canActivate(request: HttpRequest<any>) {\n    return this.guard.canActivate(request);\n  }\n\n  _resolveResponse<T = any>(event: HttpResponse<T>): HttpResponse<T> {\n    return this.config.responseSerializer ? event.clone({ body: this.config.responseSerializer(event.body) }) : event;\n  }\n}\n","import { HttpContext, HttpContextToken, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { EMPTY, Observable } from 'rxjs';\nimport { CacheBucket } from './cache-bucket';\nimport { HttpCacheConfig } from './cache-config';\n\nexport type CacheStorageStrategy = 'memory' | 'localStorage' | 'sessionStorage';\n\nexport type CacheContextKey = string | number;\n\nexport interface ContextOptions {\n  cache?: boolean;\n  ttl?: number;\n  key?: CacheContextKey | ((request: HttpRequest<any>) => CacheContextKey);\n  bucket?: CacheBucket;\n  version?: string;\n  clearCachePredicate?<T>(\n    previousRequest: HttpRequest<T> | undefined,\n    currentRequest: HttpRequest<T>,\n    key: string\n  ): boolean;\n  context?: HttpContext;\n  mode?: HttpCacheConfig['mode'];\n  returnSource?: Observable<HttpResponse<any>>;\n  storage?: CacheStorageStrategy;\n}\n\nexport const CACHE_CONTEXT = new HttpContextToken<ContextOptions>(() => ({}));\n\nexport function withCache(options: ContextOptions = {}) {\n  const { context, ...remainingOptions } = options;\n  return (context ?? new HttpContext()).set(CACHE_CONTEXT, {\n    cache: true,\n    returnSource: EMPTY,\n    ...remainingOptions\n  });\n}\n","import { isPlatformServer } from '@angular/common';\nimport { HttpInterceptorFn, HttpResponse } from '@angular/common/http';\nimport { inject, PLATFORM_ID } from '@angular/core';\nimport { of } from 'rxjs';\nimport { share, tap } from 'rxjs/operators';\nimport { injectCacheConfig } from './cache-config';\nimport { CACHE_CONTEXT } from './cache-context';\nimport { HttpCacheManager } from './cache-manager.service';\nimport { KeySerializer } from './key-serializer';\n\nexport const httpCacheInterceptor: HttpInterceptorFn = (request, next) => {\n  const config = injectCacheConfig();\n  const httpCacheManager = inject(HttpCacheManager);\n  const keySerializer = inject(KeySerializer);\n  const platformId = inject(PLATFORM_ID);\n\n  const context = request.context.get(CACHE_CONTEXT);\n\n  if (isPlatformServer(platformId)) {\n    return next(request);\n  }\n\n  const key = keySerializer.serialize(request, context);\n\n  const {\n    cache = config.strategy === 'implicit',\n    ttl,\n    bucket,\n    clearCachePredicate,\n    version,\n    mode,\n    returnSource,\n    storage\n  } = context;\n\n  if (version) {\n    const versions = httpCacheManager._getVersions(storage);\n    const currentVersion = versions.get(key);\n\n    if (currentVersion !== version) {\n      httpCacheManager.delete(key, { strategy: storage });\n    }\n\n    versions.set(key, version);\n  }\n\n  if (key && clearCachePredicate) {\n    const requests = httpCacheManager._getRequests();\n    const clearCache = clearCachePredicate(requests.get(key)!, requests.set(key, request).get(key)!, key);\n\n    if (clearCache) {\n      httpCacheManager.delete(key, { deleteRequests: false, deleteVersions: false, strategy: storage });\n    }\n  }\n\n  const canActivate = httpCacheManager._canActivate(request);\n\n  if (httpCacheManager._isCacheable(canActivate, cache!)) {\n    const queue = httpCacheManager._getQueue();\n\n    bucket && bucket.add(key);\n\n    if (queue.has(key)) {\n      return queue.get(key)!;\n    }\n\n    if (httpCacheManager.validate(key, storage)) {\n      return mode === 'stateManagement' ? returnSource! : of(httpCacheManager.get(key, storage));\n    }\n\n    const shared = next(request).pipe(\n      tap(\n        event => {\n          if (event instanceof HttpResponse) {\n            if (mode === 'stateManagement') {\n              httpCacheManager._set(key, true, ttl || config.ttl, storage);\n            } else {\n              const cacheResponse = httpCacheManager._resolveResponse(event);\n              httpCacheManager._set(key, cacheResponse, ttl || config.ttl, storage);\n            }\n            queue.delete(key);\n          }\n        },\n        err => queue.delete(key)\n      ),\n      share()\n    );\n\n    queue.set(key, shared);\n\n    return shared;\n  }\n\n  return next(request);\n};\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { defaultConfig, HTTP_CACHE_CONFIG, HttpCacheConfig, isHttpCacheConfig } from './cache-config';\nimport { DefaultHttpCacheGuard, HttpCacheGuard } from './cache-guard';\nimport { httpCacheInterceptor } from './cache-interceptor';\nimport { HttpCacheManager } from './cache-manager.service';\nimport { DefaultHttpCacheStorage } from './cache-storage';\nimport { DefaultKeySerializer, KeySerializer } from './key-serializer';\nimport { RequestsCache } from './requests-cache';\nimport { RequestsQueue } from './requests-queue';\nimport { DefaultTTLManager } from './ttl-manager';\nimport { DefaultHttpVersions, HttpCacheVersions } from './versions';\n\nexport function withHttpCacheInterceptor() {\n  return httpCacheInterceptor;\n}\n\nexport function provideHttpCache(\n  ...extensions: Array<ReturnType<typeof makeEnvironmentProviders>>\n): ReturnType<typeof makeEnvironmentProviders>;\nexport function provideHttpCache(\n  config: Partial<HttpCacheConfig>,\n  ...extensions: Array<ReturnType<typeof makeEnvironmentProviders>>\n): ReturnType<typeof makeEnvironmentProviders>;\n\nexport function provideHttpCache(\n  configOrExtension?: Partial<HttpCacheConfig> | ReturnType<typeof makeEnvironmentProviders>,\n  ...extensions: Array<ReturnType<typeof makeEnvironmentProviders>>\n) {\n  let config: Partial<HttpCacheConfig> = defaultConfig;\n  let extensionProviders: Array<ReturnType<typeof makeEnvironmentProviders>> = [];\n\n  if (isHttpCacheConfig(configOrExtension)) {\n    config = { ...config, ...configOrExtension };\n    extensionProviders = extensions;\n  } else if (configOrExtension) {\n    extensionProviders = [configOrExtension, ...extensions];\n  }\n\n  const flatProviders = extensionProviders.flatMap(p => p);\n\n  return makeEnvironmentProviders([\n    { provide: HTTP_CACHE_CONFIG, useValue: config },\n    { provide: KeySerializer, useClass: DefaultKeySerializer },\n    { provide: DefaultHttpCacheStorage, useClass: DefaultHttpCacheStorage },\n    { provide: DefaultTTLManager, useClass: DefaultTTLManager },\n    { provide: HttpCacheGuard, useClass: DefaultHttpCacheGuard },\n    { provide: HttpCacheVersions, useClass: DefaultHttpVersions },\n    HttpCacheManager,\n    RequestsQueue,\n    RequestsCache,\n    ...flatProviders\n  ]);\n}\n","import { HttpResponse, HttpHeaders } from '@angular/common/http';\nimport { HttpCacheStorage } from '../cache-storage';\nimport { BrowserStorage } from './index';\n\nconst KEY = `@cache`;\n\nfunction createKey(key: string) {\n  return `${KEY}-${key}`;\n}\n\nexport class BrowserStorageHttpCacheStorage extends HttpCacheStorage {\n  constructor(private storage: BrowserStorage) {\n    super();\n  }\n\n  has(key: string): boolean {\n    const generatedKey = createKey(key);\n\n    return super.has(generatedKey) || !!this.storage.getItem(generatedKey);\n  }\n\n  get(key: string): HttpResponse<any> | boolean {\n    const generatedKey = createKey(key);\n\n    const cacheValue = super.get(generatedKey);\n\n    if (cacheValue) {\n      return cacheValue;\n    }\n\n    const value = this.storage.getItem(generatedKey);\n\n    if (value) {\n      value.headers = new HttpHeaders(value.headers);\n      value.headers.init();\n      const response = new HttpResponse(value);\n      super.set(generatedKey, response);\n    }\n\n    return super.get(generatedKey)!;\n  }\n\n  set(key: string, response: HttpResponse<any>) {\n    const generatedKey = createKey(key);\n\n    const httpResponse: any = { ...response, headers: {} };\n    response.headers.keys().forEach(headerKey => {\n      httpResponse.headers[headerKey] = response.headers.get(headerKey);\n    });\n\n    this.storage.setItem(generatedKey, httpResponse);\n\n    return super.set(generatedKey, response);\n  }\n\n  delete(key: string) {\n    const generatedKey = createKey(key);\n\n    this.storage.clearItem(generatedKey);\n\n    return super.delete(generatedKey);\n  }\n\n  clear() {\n    super.forEach((_value, key) => {\n      super.delete(key);\n      this.storage.clearItem(key);\n    });\n  }\n}\n","import { injectCacheConfig } from '../cache-config';\nimport { DefaultTTLManager, TTLManager } from '../ttl-manager';\nimport { BrowserStorage } from './index';\n\nconst KEY = `@ttl`;\n\nfunction createKey(key: string) {\n  return `${KEY}-${key}`;\n}\n\nexport class BrowserStorageTTLManager extends TTLManager {\n  private readonly ttl = new DefaultTTLManager();\n  private readonly config = injectCacheConfig();\n\n  constructor(private storage: BrowserStorage) {\n    super();\n  }\n\n  isValid(key: string): boolean {\n    const valid = this.ttl.isValid(createKey(key));\n    if (valid) {\n      return true;\n    }\n    const storageTimeStamp = this.storage.getItem(createKey(key));\n    const validInStorage = storageTimeStamp > new Date().getTime();\n    if (validInStorage) {\n      this.ttl.set(createKey(key), storageTimeStamp - new Date().getTime());\n    }\n    return validInStorage;\n  }\n\n  set(key: string, ttl?: number) {\n    const resolveTTL = ttl ?? this.config.ttl;\n    this.storage.setItem(createKey(key), new Date().setMilliseconds(resolveTTL));\n    this.ttl.set(createKey(key), resolveTTL);\n    return this;\n  }\n\n  delete(key: string) {\n    this.ttl.delete(createKey(key));\n    this.storage.clearItem(createKey(key));\n    return true;\n  }\n\n  clear() {\n    this.ttl.forEach((_: any, key: string) => {\n      this.ttl.delete(key);\n      this.storage.clearItem(key);\n    });\n  }\n}\n","import { HttpCacheVersions } from '../versions';\nimport { BrowserStorage } from './index';\nconst KEY = `@version`;\n\nfunction createKey(key: string) {\n  return `${KEY}-${key}`;\n}\n\nexport class BrowserStorageVersionsManager extends HttpCacheVersions {\n  constructor(private storage: BrowserStorage) {\n    super();\n  }\n\n  has(key: string): boolean {\n    return super.has(createKey(key)) || !!this.storage.getItem(createKey(key));\n  }\n\n  get(key: string): string {\n    const cacheValue = super.get(createKey(key));\n    if (cacheValue) {\n      return cacheValue;\n    }\n    const value = this.storage.getItem(createKey(key));\n    if (value) {\n      super.set(createKey(key), value);\n    }\n    return super.get(createKey(key))!;\n  }\n\n  set(key: string, version: string) {\n    this.storage.setItem(createKey(key), version);\n    return super.set(createKey(key), version);\n  }\n\n  delete(key: string) {\n    super.delete(key);\n    this.storage.clearItem(createKey(key));\n    return true;\n  }\n\n  clear() {\n    super.forEach((_: any, key: string) => {\n      super.delete(key);\n      this.storage.clearItem(key);\n    });\n  }\n}\n","import { BrowserStorage } from '../storage';\n\nexport const storage: BrowserStorage = {\n  type: 'localStorage',\n  clearItem(key: string) {\n    localStorage.removeItem(key);\n  },\n  setItem(key: string, value: any) {\n    localStorage.setItem(key, JSON.stringify(value));\n  },\n  getItem(key: string): any {\n    const value = localStorage.getItem(key);\n\n    if (!value) {\n      return undefined;\n    }\n\n    return JSON.parse(value);\n  }\n};\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { HttpCacheStorage } from '../cache-storage';\nimport { BrowserStorageHttpCacheStorage } from '../storage/browser-storage-cache';\nimport { BrowserStorageTTLManager } from '../storage/browser-storage-ttl';\nimport { BrowserStorageVersionsManager } from '../storage/browser-storage-version-manager';\nimport {\n  LocalStorageHttpCacheStorage as LocalStorageHttpCacheStorageToken,\n  LocalStorageTTLManager as LocalStorageTTLManagerToken,\n  LocalStorageVersionsManager as LocalStorageVersionsManagerToken\n} from '../storage/tokens';\nimport { TTLManager } from '../ttl-manager';\nimport { HttpCacheVersions } from '../versions';\nimport { storage } from './local-storage';\n\n/**\n * @deprecated This provider is no longer needed. Please update your configuration to use `withLocalStorage()` instead.\n */\nexport function provideHttpCacheLocalStorageStrategy() {\n  console.warn(\n    'provideHttpCacheLocalStorageStrategy is deprecated and will be removed in the future. Use withLocalStorage() instead.'\n  );\n  return makeEnvironmentProviders([\n    { provide: HttpCacheStorage, useFactory: () => new BrowserStorageHttpCacheStorage(storage) },\n    { provide: TTLManager, useFactory: () => new BrowserStorageTTLManager(storage) },\n    { provide: HttpCacheVersions, useFactory: () => new BrowserStorageVersionsManager(storage) }\n  ]);\n}\n\n// Returns providers for use with provideHttpCache(..., withLocalStorage())\nexport function withLocalStorage() {\n  return makeEnvironmentProviders([\n    {\n      provide: LocalStorageHttpCacheStorageToken,\n      useFactory: () => new BrowserStorageHttpCacheStorage(storage)\n    },\n    {\n      provide: LocalStorageTTLManagerToken,\n      useFactory: () => new BrowserStorageTTLManager(storage)\n    },\n    {\n      provide: LocalStorageVersionsManagerToken,\n      useFactory: () => new BrowserStorageVersionsManager(storage)\n    }\n  ]);\n}\n","import { BrowserStorage } from '../storage';\n\nexport const storage: BrowserStorage = {\n  type: 'sessionStorage',\n  clearItem(key: string) {\n    sessionStorage.removeItem(key);\n  },\n  setItem(key: string, value: any) {\n    sessionStorage.setItem(key, JSON.stringify(value));\n  },\n  getItem(key: string): any {\n    const value = sessionStorage.getItem(key);\n\n    if (!value) {\n      return undefined;\n    }\n\n    return JSON.parse(value);\n  }\n};\n","import { makeEnvironmentProviders } from '@angular/core';\nimport { BrowserStorageHttpCacheStorage } from '../storage/browser-storage-cache';\nimport { BrowserStorageTTLManager } from '../storage/browser-storage-ttl';\nimport { BrowserStorageVersionsManager } from '../storage/browser-storage-version-manager';\nimport {\n  SessionStorageHttpCacheStorage,\n  SessionStorageTTLManager,\n  SessionStorageVersionsManager\n} from '../storage/tokens';\nimport { storage } from './session-storage';\n\n// Returns providers for use with provideHttpCache(..., withSessionStorage())\nexport function withSessionStorage() {\n  return makeEnvironmentProviders([\n    {\n      provide: SessionStorageHttpCacheStorage,\n      useFactory: () => new BrowserStorageHttpCacheStorage(storage)\n    },\n    {\n      provide: SessionStorageTTLManager,\n      useFactory: () => new BrowserStorageTTLManager(storage)\n    },\n    {\n      provide: SessionStorageVersionsManager,\n      useFactory: () => new BrowserStorageVersionsManager(storage)\n    }\n  ]);\n}\n","import { HttpRequest } from '@angular/common/http';\n\nexport function requestDataChanged(previousRequest: HttpRequest<any> | undefined, currentRequest: HttpRequest<any>) {\n  return (\n    previousRequest?.urlWithParams !== currentRequest.urlWithParams ||\n    JSON.stringify(previousRequest?.body) !== JSON.stringify(currentRequest.body)\n  );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["KEY","createKey","storage","LocalStorageHttpCacheStorageToken","LocalStorageTTLManagerToken","LocalStorageVersionsManagerToken"],"mappings":"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"}