{"version":3,"file":"igo2-core-storage.mjs","sources":["../../../packages/core/storage/src/storage.interface.ts","../../../packages/core/storage/src/storage.ts","../../../packages/core/storage/src/storage.service.ts","../../../packages/core/storage/src/igo2-core-storage.ts"],"sourcesContent":["export enum StorageScope {\n  SESSION = 'Session',\n  LOCAL = 'Local'\n}\n\nexport interface StorageOptions {\n  key: string;\n}\n\nexport interface StorageServiceEvent {\n  key?: string;\n  scope: StorageScope;\n  event: StorageServiceEventEnum;\n  previousValue?: any;\n  currentValue?: any;\n}\n\nexport enum StorageServiceEventEnum {\n  ADDED = 'Added',\n  MODIFIED = 'Modified',\n  REMOVED = 'Removed',\n  CLEARED = 'Cleared'\n}\n","import { ConfigService } from '@igo2/core/config';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport {\n  StorageOptions,\n  StorageScope,\n  StorageServiceEvent,\n  StorageServiceEventEnum\n} from './storage.interface';\n\nexport abstract class BaseStorage<T extends StorageOptions = StorageOptions> {\n  protected options?: T;\n\n  public storageChange$ = new BehaviorSubject<StorageServiceEvent>(undefined);\n\n  constructor(config: ConfigService) {\n    this.options = config.getConfig<T>('storage') || ({ key: 'igo' } as T);\n  }\n\n  /**\n   * Use to get the data found in storage file\n   */\n  get(key: string, scope?: StorageScope): string | object | boolean | number {\n    let value: any;\n\n    if (!scope || scope === StorageScope.SESSION) {\n      value = sessionStorage.getItem(`${this.options.key}.${key}`);\n    }\n\n    if (scope === StorageScope.LOCAL || (!value && !scope)) {\n      value = localStorage.getItem(`${this.options.key}.${key}`);\n    }\n\n    if (value) {\n      try {\n        return JSON.parse(value);\n      } catch {\n        return value;\n      }\n    }\n\n    return value;\n  }\n\n  set(\n    key: string,\n    value: string | object | boolean | number,\n    scope: StorageScope = StorageScope.LOCAL\n  ) {\n    const previousValue = this.get(key, scope);\n    if (scope === StorageScope.SESSION) {\n      sessionStorage.setItem(\n        `${this.options.key}.${key}`,\n        JSON.stringify(value)\n      );\n    } else {\n      localStorage.setItem(`${this.options.key}.${key}`, JSON.stringify(value));\n    }\n    const currentValue = this.get(key, scope);\n\n    if (currentValue !== previousValue) {\n      this.storageChange$.next({\n        key,\n        scope,\n        event:\n          previousValue !== undefined\n            ? StorageServiceEventEnum.MODIFIED\n            : StorageServiceEventEnum.ADDED,\n        previousValue,\n        currentValue\n      });\n    }\n  }\n\n  remove(key: string, scope: StorageScope = StorageScope.LOCAL) {\n    const previousValue = this.get(key, scope);\n    if (scope === StorageScope.SESSION) {\n      sessionStorage.removeItem(`${this.options.key}.${key}`);\n    } else {\n      localStorage.removeItem(`${this.options.key}.${key}`);\n    }\n    this.storageChange$.next({\n      key,\n      scope,\n      event: StorageServiceEventEnum.REMOVED,\n      previousValue\n    });\n  }\n\n  clear(scope: StorageScope = StorageScope.LOCAL) {\n    if (scope === StorageScope.SESSION) {\n      sessionStorage.clear();\n    } else {\n      localStorage.clear();\n    }\n    this.storageChange$.next({ scope, event: StorageServiceEventEnum.CLEARED });\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\n\nimport { BaseStorage } from './storage';\nimport { StorageOptions } from './storage.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class StorageService extends BaseStorage<StorageOptions> {\n  constructor(private config: ConfigService) {\n    super(config);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}