{"version":3,"file":"ngx-simple-indexeddb.mjs","sources":["../../../projects/ngx-simple-indexeddb/src/lib/indexdb-meta-models.ts","../../../projects/ngx-simple-indexeddb/src/utils/database.ts","../../../projects/ngx-simple-indexeddb/src/utils/transactions.ts","../../../projects/ngx-simple-indexeddb/src/lib/indexdb-storage.ts","../../../projects/ngx-simple-indexeddb/src/lib/ngx-simple-indexeddb.service.ts","../../../projects/ngx-simple-indexeddb/src/lib/ngx-simple-indexeddb.module.ts","../../../projects/ngx-simple-indexeddb/src/public-api.ts","../../../projects/ngx-simple-indexeddb/src/ngx-simple-indexeddb.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\n\r\nexport interface OptionsIndex {\r\n    unique: boolean;\r\n}\r\n\r\nexport interface IndexObj {\r\n    name?: string;\r\n    keyPath?: string;\r\n    options?: OptionsIndex;\r\n}\r\n\r\nexport interface StoreConfig {\r\n    keyPath?: string;\r\n    autoIncrement?: boolean;\r\n}\r\n\r\nexport class StoreMetaDataConfig {\r\n    store!: string;\r\n    storeConfig!: StoreConfig;\r\n    storeIndexes?: IndexObj[];\r\n}\r\n\r\nexport class IDBSchema {\r\n    dbName!: string;\r\n    dbVersion?: number;\r\n    dbStoresMetaData!: StoreMetaDataConfig[]\r\n}\r\n\r\nexport interface ResponseStoreIndexedDB {    \r\n    event: string;\r\n    dbName: string;\r\n    storeName?: string;\r\n    data?: any;\r\n}\r\n\r\nexport const SCHEMA_TOKEN = new InjectionToken<IDBSchema[]>('');","import { IDBSchema, StoreMetaDataConfig } from \"../public-api\";\r\n\r\nconst NOT_AVAILABLE_DB = 'IndexedDB not available';\r\nconst INVALID_PARAMETERS = 'Invalid parameters';\r\n\r\n/**\r\n   * Function to create connection to database\r\n   * @param indexedDB \r\n   * @param database\r\n   * @param upgradeCB \r\n   * @returns \r\n   */\r\nexport function connectDatabase(\r\n  indexedDB: IDBFactory,\r\n  database: IDBSchema,\r\n  upgradeCB?: (event: Event, database: IDBDatabase) => void\r\n) {\r\n  const promise = new Promise<IDBDatabase>((resolve, reject) => {\r\n    if (!indexedDB) reject(NOT_AVAILABLE_DB);\r\n\r\n    const request = indexedDB.open(database.dbName, database.dbVersion);\r\n    let db: IDBDatabase;\r\n\r\n    request.onerror = (e: Event) => reject(e);\r\n    request.onsuccess = (event: Event) => {\r\n      db = request.result;\r\n      resolve(db);\r\n    };\r\n\r\n    if (typeof upgradeCB === 'function')\r\n      request.onupgradeneeded = (e: Event) => upgradeCB(e, db);\r\n  });\r\n  return promise;\r\n}\r\n\r\n/**\r\n * Function to create object store\r\n * @param indexedDB \r\n * @param database \r\n * @returns \r\n */\r\nexport function createDatabaseAndObjectsStore(\r\n  indexedDB: IDBFactory,\r\n  database: IDBSchema\r\n): void {\r\n  if (!indexedDB) return;\r\n  const request: IDBOpenDBRequest = indexedDB.open(database.dbName, database.dbVersion);\r\n\r\n  request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\r\n    const db: IDBDatabase = (event.target as any).result;\r\n    database.dbStoresMetaData.forEach((storeSchema: StoreMetaDataConfig) => {\r\n      if (!db.objectStoreNames.contains(storeSchema.store)) {\r\n        const objectStore = db.createObjectStore(storeSchema.store, storeSchema.storeConfig);\r\n        if (storeSchema && storeSchema.storeIndexes) {\r\n          for (let schema of storeSchema.storeIndexes) {\r\n            if (!schema.name || !schema.keyPath) continue;\r\n            objectStore.createIndex(schema.name!, schema.keyPath!, schema.options);\r\n          }\r\n        }\r\n      }\r\n    });\r\n    db.close();\r\n  };\r\n  request.onsuccess = (e: any) => e.target.result.close();\r\n}\r\n\r\n/**\r\n * Function to delete object storage\r\n * @param indexedDB \r\n * @param database \r\n * @param storeName \r\n * @returns \r\n */\r\nexport function deleteObjectStore(indexedDB: IDBFactory, database: IDBSchema, storeName: string): Promise<boolean> {\r\n  return new Promise<boolean>((resolve, reject) => {\r\n    if (!database.dbName || !storeName) reject(INVALID_PARAMETERS);\r\n\r\n    try {\r\n      validateDatabase(database).then((data) => {\r\n        const request: IDBOpenDBRequest = indexedDB.open(data.dbName, ++data.dbVersion!);\r\n        request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\r\n          const database: IDBDatabase = (event.target as any).result;\r\n          database.deleteObjectStore(storeName);\r\n          database.close();\r\n          resolve(true);\r\n        };\r\n        request.onerror = (e: Event) => reject(e);\r\n      });\r\n    } catch (error) {\r\n      reject(error);\r\n    }\r\n  });\r\n}\r\n\r\n/**\r\n * Function to validate database and set version if not was specified\r\n * @param database \r\n * @returns \r\n */\r\nexport function validateDatabase(database: IDBSchema): Promise<IDBSchema> {\r\n  return new Promise<IDBSchema>((resolve) => {\r\n    connectDatabase(indexedDB, database).then((db) => {\r\n      if (!database.hasOwnProperty('dbVersion') || !database.dbVersion) {\r\n        database.dbVersion = db.version;\r\n        resolve(database);\r\n      }\r\n    });\r\n  });\r\n}\r\n\r\n/**\r\n * Function to export database in json file\r\n * @param jsonData \r\n * @param fileName \r\n * @returns \r\n */\r\nexport function exportDatabaseToJSON(jsonData: any, fileName?: string): Promise<boolean> {\r\n  return new Promise<boolean>((resolve, reject) => {\r\n    try {\r\n      const data = JSON.stringify(jsonData);\r\n      const uri = 'data:application/json;charset=utf-8,' + encodeURIComponent(data);\r\n      const fileNameExport = fileName ?? 'indexeddb-exported.json';\r\n      const el = document.createElement('a');\r\n      el.setAttribute('href', uri);\r\n      el.setAttribute('download', fileNameExport);\r\n      el.click();\r\n      resolve(true);\r\n    } catch (e) {\r\n      reject(e);\r\n    }\r\n  });\r\n}\r\n","var IDBTransaction: any;\r\n\r\nexport enum TXMode {\r\n\treadonly = 'readonly',\r\n\treadwrite = 'readwrite'\r\n}\r\n\r\nexport function existStore(db: IDBDatabase, storeName: string): boolean {\t\r\n\treturn db.objectStoreNames.contains(storeName);\r\n}\r\n\r\nexport function createTx(db: IDBDatabase, storeName: string, mode: TXMode) {\r\n\tconst tx = IDBTransaction = db.transaction(storeName, mode);\r\n\treturn tx;\r\n}\r\n\r\nexport function getPK(item: any) {\r\n\treturn item.hasOwnProperty('pk') && item['pk'] ? item['pk'] : null;\r\n}\r\n","import { connectDatabase, createDatabaseAndObjectsStore, deleteObjectStore } from \"../utils/database\";\r\nimport { createTx, TXMode, getPK, existStore } from \"../utils/transactions\";\r\nimport { IDBSchema } from \"./indexdb-meta-models\";\r\n\r\nconst NOT_AVAILABLE_DB = 'IndexedDB not available';\r\nconst DATABASE_NOT_EXIST = 'Database not exist';\r\nconst STORENAME_NOT_EXIST = 'Not exist object store';\r\nconst REQUEST_UNAVAILABLE = 'Request unavailable';\r\n\r\nexport abstract class IndexedDBStorage {\r\n\r\n  private indexedDB!: IDBFactory;\r\n  private databases!: Map<string, IDBSchema>;\r\n\r\n  constructor(databases: Map<string, IDBSchema>) {\r\n    this.databases = databases;\r\n    this.initialize();\r\n  }\r\n\r\n  protected abstract eventsIndexedDB(event: string, dbName: string, storeName?: string, data?: any): void;\r\n\r\n  /**\r\n   * Initialize factory indexedDB\r\n   */\r\n  private initialize() {\r\n    this.indexedDB =\r\n      window.indexedDB ||\r\n      (window as any).mozIndexedDB ||\r\n      (window as any).msIndexedDB ||\r\n      (window as any).webkitIndexedDB;\r\n\r\n    if (!indexedDB) throw new Error(NOT_AVAILABLE_DB);\r\n    this.createDatabases(this.databases);\r\n  }\r\n\r\n  /**\r\n  * Function to create databases\r\n  * @param databases \r\n  */\r\n  private createDatabases(databases: Map<string, IDBSchema>) {\r\n    if (!databases.size) throw new Error('Please, provide databases schema');\r\n    databases.forEach(item => {\r\n      this.eventsIndexedDB('createdDatabase', item.dbName);\r\n      createDatabaseAndObjectsStore(this.indexedDB, item);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Function to get connection from Map\r\n   * @param dbName \r\n   * @returns IDBSchema\r\n   */\r\n  private getDatabase(dbName: string): IDBSchema {\r\n    return <IDBSchema>this.databases.get(dbName);\r\n  }\r\n\r\n  /**\r\n   * Function to delete connection\r\n   * @param dbName \r\n   * @returns\r\n   */\r\n  protected deleteBD(dbName: string): Promise<any> {\r\n    const promise = new Promise<boolean>((resolve, reject) => {\r\n      const connection = <IDBSchema>this.getDatabase(dbName);\r\n      if (!connection) reject(`${DATABASE_NOT_EXIST} ${dbName}`);\r\n\r\n      const request = this.indexedDB.deleteDatabase(connection.dbName);\r\n      this.databases.delete(connection.dbName);\r\n      request.onsuccess = (e: any) => {\r\n        this.eventsIndexedDB('deleteBD', dbName);\r\n        resolve(true);\r\n      }\r\n    });\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * Function to add records to database\r\n   * @param dbName \r\n   * @param storeName \r\n   * @param data \r\n   * @returns Promise\r\n   */\r\n  protected addItems(dbName: string, storeName: string, data: any): Promise<any> {\r\n    const promise = new Promise((resolve, reject) => {\r\n      const database = <IDBSchema>this.getDatabase(dbName);\r\n      if (!database) reject(`${DATABASE_NOT_EXIST} ${dbName}`);\r\n\r\n      connectDatabase(this.indexedDB, database)\r\n        .then((db: IDBDatabase) => {\r\n          if (!existStore(db, storeName)) reject(`${STORENAME_NOT_EXIST} ${storeName}`);\r\n          const tx = createTx(db, storeName, TXMode.readwrite);\r\n          const store = tx.objectStore(storeName);\r\n\r\n          let request;\r\n          const arr = Array.isArray(data) ? data : [data];\r\n          for (let item of arr) {\r\n            const pk = getPK(item);\r\n            if (pk) request = store.put(item, pk);\r\n            else request = store.put(item);\r\n          }\r\n\r\n          if (!request) {\r\n            reject(REQUEST_UNAVAILABLE);\r\n            return;\r\n          }\r\n          request.onsuccess = (e: any) => {\r\n            this.eventsIndexedDB('addedItem', dbName, storeName, data);\r\n            resolve(e.target.result);\r\n          }\r\n          request.onerror = (e: any) => reject(e);\r\n        })\r\n        .catch((error: any) => reject(error));\r\n    });\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * Function to get data from database\r\n   * @param dbName \r\n   * @param storeName \r\n   * @param key \r\n   * @param indexName \r\n   * @returns Promise\r\n   */\r\n  protected getItem(dbName: string, storeName: string, key: string | number, indexName?: string): Promise<any> {\r\n    const promise = new Promise<any>((resolve, reject) => {\r\n      const database = <IDBSchema>this.getDatabase(dbName);\r\n      if (!database) reject(`${DATABASE_NOT_EXIST} ${dbName}`);\r\n\r\n      connectDatabase(this.indexedDB, database)\r\n        .then((db: IDBDatabase) => {\r\n          if (!existStore(db, storeName)) reject(`${STORENAME_NOT_EXIST} ${storeName}`);\r\n          const tx = createTx(db, storeName, TXMode.readonly);\r\n          const store = tx.objectStore(storeName);\r\n\r\n          let request;\r\n          if (indexName) {\r\n            const index = store.index(indexName);\r\n            request = index.get(key);\r\n          } else request = store.get(key);\r\n\r\n          request.onsuccess = (e: any) => resolve(e.target.result);\r\n          request.onerror = (e: any) => reject(e);\r\n        })\r\n        .catch((error: any) => reject(error));\r\n    });\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * Function to get all data from store\r\n   * @param dbName \r\n   * @param storeName \r\n   * @param withKeys \r\n   * @returns \r\n   */\r\n  protected getAllItems(dbName: string, storeName: string, withKeys: boolean = false, withStoreName: boolean = false): Promise<any> {\r\n    const promise = new Promise<any>((resolve, reject) => {\r\n      const database = <IDBSchema>this.getDatabase(dbName);\r\n      if (!database) reject([]);\r\n\r\n      connectDatabase(this.indexedDB, database)\r\n        .then((db: IDBDatabase) => {\r\n          if (!existStore(db, storeName)) reject(`${STORENAME_NOT_EXIST} ${storeName}`);\r\n          const tx = createTx(db, storeName, TXMode.readonly);\r\n          const store = tx.objectStore(storeName);\r\n          const data: any = [];\r\n\r\n          if (withKeys) {\r\n            store.openCursor().onsuccess = (e: any) => {\r\n              const cursor = e.target.result;\r\n              if (cursor) {\r\n                data.push({ key: cursor.key, value: cursor.value });\r\n                cursor.continue();\r\n              } else {\r\n                if (withStoreName) resolve({ store: storeName, data: data });\r\n                else resolve(data);\r\n              }\r\n            };\r\n          } else\r\n            store.getAll().onsuccess = (e: any) => {\r\n              if (withStoreName) resolve({ store: storeName, data: e.target.result });\r\n              else resolve(e.target.result);\r\n            }\r\n          store.getAll().onerror = (e: any) => reject(e);\r\n        })\r\n        .catch((error: any) => reject(error));\r\n    });\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * Function to update record in store from database\r\n   * @param dbName \r\n   * @param storeName \r\n   * @param key \r\n   * @param newValue \r\n   * @returns \r\n   */\r\n  protected updateItem(dbName: string, storeName: string, key: string | number, newValue: any): Promise<any> {\r\n    const promise = new Promise<any>((resolve, reject) => {\r\n      const database = <IDBSchema>this.getDatabase(dbName);\r\n      if (!database) reject(`${DATABASE_NOT_EXIST} ${dbName}`);\r\n\r\n      connectDatabase(this.indexedDB, database)\r\n        .then((db: IDBDatabase) => {\r\n          if (!existStore(db, storeName)) reject(`${STORENAME_NOT_EXIST} ${storeName}`);\r\n          const tx = createTx(db, storeName, TXMode.readwrite);\r\n          const store = tx.objectStore(storeName);\r\n          const request = store.put(newValue, key);\r\n          request.onsuccess = (e: any) => {\r\n            this.eventsIndexedDB('updatedItem', dbName, storeName, { key: key, newValue: newValue });\r\n            resolve(e.target.result);\r\n          }\r\n          request.onerror = (e: any) => reject(e);\r\n        })\r\n        .catch((error: any) => reject(error))\r\n    });\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * Function to delete record of store from database\r\n   * @param dbName \r\n   * @param storeName \r\n   * @param key \r\n   * @returns \r\n   */\r\n  protected deleteItem(dbName: string, storeName: string, key: string | number): Promise<any> {\r\n    const promise = new Promise<any>((resolve, reject) => {\r\n      const database = <IDBSchema>this.getDatabase(dbName);\r\n      if (!database) reject(`${DATABASE_NOT_EXIST} ${dbName}`);\r\n\r\n      connectDatabase(this.indexedDB, database)\r\n        .then((db: IDBDatabase) => {\r\n          if (!existStore(db, storeName)) reject(`${STORENAME_NOT_EXIST} ${storeName}`);\r\n          const tx = createTx(db, storeName, TXMode.readwrite);\r\n          const store = tx.objectStore(storeName);\r\n          const request = store.delete(key);\r\n          request.onsuccess = (e: any) => {\r\n            this.eventsIndexedDB('deletedItem', dbName, storeName, key);\r\n            resolve(true);\r\n          }\r\n          request.onerror = (e: any) => reject(e);\r\n        })\r\n        .catch((error: any) => reject(error))\r\n    });\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * Function to count items of store\r\n   * @param dbName \r\n   * @param storeName \r\n   */\r\n  protected countItems(dbName: string, storeName: string): Promise<any> {\r\n    return new Promise<number>((resolve, reject) => {\r\n      const database = <IDBSchema>this.getDatabase(dbName);\r\n      if (!database) reject(`${DATABASE_NOT_EXIST} ${dbName}`);\r\n\r\n      connectDatabase(this.indexedDB, database)\r\n        .then((db: IDBDatabase) => {\r\n          if (!existStore(db, storeName)) reject(`${STORENAME_NOT_EXIST} ${storeName}`);\r\n          const tx = createTx(db, storeName, TXMode.readonly);\r\n          const store = tx.objectStore(storeName);\r\n          const request: IDBRequest = store.count();\r\n          request.onsuccess = (e: any) => resolve(e.target.result);\r\n          request.onerror = (e: any) => reject(e);\r\n        })\r\n        .catch((error: any) => reject(error))\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Function to clear object storage\r\n   * @param dbName \r\n   * @param storeName \r\n   * @returns \r\n   */\r\n  protected clearStore(dbName: string, storeName: string): Promise<any> {\r\n    const promise = new Promise<any>((resolve, reject) => {\r\n      const database = <IDBSchema>this.getDatabase(dbName);\r\n      if (!database) reject(`${DATABASE_NOT_EXIST} ${dbName}`);\r\n\r\n      connectDatabase(this.indexedDB, database)\r\n        .then((db: IDBDatabase) => {\r\n          if (!existStore(db, storeName)) reject(`${STORENAME_NOT_EXIST} ${storeName}`);\r\n          const tx = createTx(db, storeName, TXMode.readwrite);\r\n          const store = tx.objectStore(storeName);\r\n          store.clear();\r\n          tx.oncomplete = () => {\r\n            this.eventsIndexedDB('clearStore', dbName, storeName);\r\n            resolve(true);\r\n          }\r\n        })\r\n        .catch((error: any) => reject(error))\r\n    });\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * Function to delete object storage\r\n   * @param dbName \r\n   * @param storeName \r\n   * @returns \r\n   */\r\n  protected deleteObjectStore(dbName: string, storeName: string): Promise<any> {\r\n    const promise = new Promise<any>((resolve, reject) => {\r\n      const database = <IDBSchema>this.getDatabase(dbName);\r\n      if (!database) reject(`${DATABASE_NOT_EXIST} ${dbName}`);\r\n\r\n      deleteObjectStore(this.indexedDB, database, storeName)\r\n        .then((data) => {\r\n          this.eventsIndexedDB('deletedObjectStore', dbName, storeName);\r\n          resolve(data);\r\n        })\r\n        .catch((error: any) => reject(error));\r\n    });\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * Function to create new database inline\r\n   * @param database \r\n   * @returns \r\n   */\r\n  protected createDatabase(database: IDBSchema): Promise<boolean> {\r\n    const promise = new Promise<any>((resolve, reject) => {\r\n      if (!database) reject(false);\r\n      this.eventsIndexedDB('createdDatabase', database.dbName);\r\n      this.databases.set(database.dbName, database);\r\n      createDatabaseAndObjectsStore(this.indexedDB, database);\r\n      resolve(true);\r\n    });\r\n    return promise;\r\n  }\r\n\r\n  /**\r\n   * Function to export database or table of database\r\n   * @param dbName \r\n   * @param storeName \r\n   * @param withKeys \r\n   * @returns \r\n   */\r\n  protected exportDatabase(dbName: string, storeName?: string, withKeys: boolean = false): Promise<any> {\r\n    const promise = new Promise<any>((resolve, reject) => {\r\n      if (storeName)\r\n        this.getAllItems(dbName, storeName, withKeys).then(data => resolve({ store: storeName, data: data }));\r\n      else {\r\n        const dataExport: any[][] = [];\r\n        const promises: any = [];        \r\n        const database = <IDBSchema>this.getDatabase(dbName);\r\n        if (!database) reject([]);\r\n\r\n        database.dbStoresMetaData.forEach(item =>\r\n          promises.push(this.getAllItems(dbName, item.store, withKeys, true)));\r\n        Promise.all(promises).then(data => {\r\n          dataExport.push(data);\r\n          resolve(dataExport);\r\n        });\r\n      }\r\n      this.eventsIndexedDB('exportedDatabase', dbName, storeName);\r\n    });\r\n    return promise;\r\n  }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { exportDatabaseToJSON } from '../utils/database';\nimport { IDBSchema, ResponseStoreIndexedDB, SCHEMA_TOKEN } from './indexdb-meta-models';\nimport { IndexedDBStorage } from './indexdb-storage';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxSimpleIndexeddbService extends IndexedDBStorage {\n\n  private subject = new Subject<ResponseStoreIndexedDB>();\n\n  constructor(\n    @Inject(SCHEMA_TOKEN) databases: IDBSchema[]\n  ) {\n    if (!databases.length)\n      throw new Error('Please, provide databases schema');\n\n    const map = new Map<string, IDBSchema>();\n    for (let item of databases)\n      map.set(item.dbName, item);\n    super(map);\n  }\n\n  get eventsIndexedObs(): Observable<ResponseStoreIndexedDB> {\n    return this.subject.asObservable();\n  }\n\n  eventsIndexedDB(event: string, dbName: string, storeName?: string, data?: any): void {\n    if (!this.subject) return;\n    this.subject.next({\n      event: event,\n      dbName: dbName,\n      storeName: storeName,\n      data: data\n    });\n    this.subject.complete();\n  }\n\n  /**\n   * Method to add records in database\n   * @param database \n   * @param storeName \n   * @param data \n   * @returns \n   */\n  addRecords(database: string, storeName: string, data: any): Observable<any> {\n    return new Observable<any>((obs) => {\n      this.addItems(database, storeName, data)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Add records in store\n   * @param database \n   * @param storeName \n   * @param key \n   * @param indexName \n   * @returns \n   */\n  getRecord(database: string, storeName: string, key: string | number, indexName?: string): Observable<any> {\n    return new Observable<any>((obs) => {\n      this.getItem(database, storeName, key, indexName)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Get list records of store\n   * @param database \n   * @param storeName \n   * @param withKeys \n   * @returns \n   */\n  getRecords(database: string, storeName: string, withKeys: boolean = false): Observable<any> {\n    return new Observable<any>((obs) => {\n      this.getAllItems(database, storeName, withKeys)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Update record of store\n   * @param database \n   * @param storeName \n   * @param key \n   * @param newValue \n   * @returns \n   */\n  updateRecord(database: string, storeName: string, key: string | number, newValue: any): Observable<any> {\n    return new Observable<any>((obs) => {\n      this.updateItem(database, storeName, key, newValue)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Delete record of store\n   * @param database \n   * @param storeName \n   * @param key \n   * @returns \n   */\n  deleteRecord(database: string, storeName: string, key: string | number): Observable<any> {\n    return new Observable<any>((obs) => {\n      this.deleteItem(database, storeName, key)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Count records of store\n   * @param database \n   * @param storeName \n   * @returns \n   */\n  countRecords(database: string, storeName: string): Observable<number> {\n    return new Observable<any>((obs) => {\n      this.countItems(database, storeName)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Clear all data of store\n   * @param database \n   * @param storeName \n   * @returns \n   */\n  clearObjStore(database: string, storeName: string) {\n    return new Observable<any>((obs) => {\n      this.clearStore(database, storeName)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Delete object store\n   * @param database \n   * @param storeName \n   * @returns \n   */\n  deleteObjStore(database: string, storeName: string) {\n    return new Observable<any>((obs) => {\n      this.deleteObjectStore(database, storeName)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Delete or remove database\n   * @param database \n   * @returns \n   */\n  removeDB(database: string) {\n    return new Observable<any>((obs) => {\n      this.deleteBD(database)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Create new database\n   * @param database\n   */\n  addDatabase(database: IDBSchema): Observable<boolean> {\n    return new Observable<any>((obs) => {\n      this.createDatabase(database)\n        .then(data => {\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n\n  /**\n   * Export database or table\n   * @param database \n   * @param storeName \n   * @param withKeys \n   * @returns \n   */\n  exportToJSON(database: string, storeName?: string, withKeys: boolean = false): Observable<boolean> {\n    return new Observable<any>((obs) => {\n      this.exportDatabase(database, storeName, withKeys)\n        .then(data => {\n          exportDatabaseToJSON(data);\n          obs.next(data);\n          obs.complete();\n        })\n        .catch(err => {\n          obs.error(err);\n          obs.complete();\n        });\n    });\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { IDBSchema, SCHEMA_TOKEN } from './indexdb-meta-models';\nimport { NgxSimpleIndexeddbService } from './ngx-simple-indexeddb.service';\n\n@NgModule()\nexport class NgxSimpleIndexeddbModule {\n  static forRoot(schemas: IDBSchema[]): ModuleWithProviders<NgxSimpleIndexeddbModule> {\n    return {\n      ngModule: NgxSimpleIndexeddbModule,\n      providers: [        \n        NgxSimpleIndexeddbService, \n        { \n          provide: SCHEMA_TOKEN, \n          useValue: schemas \n        }\n      ],\n    };\n  }\n}\n\n","/*\n * Public API Surface of ngx-simple-indexeddb\n */\n\nexport * from './lib/indexdb-meta-models';\nexport * from './lib/ngx-simple-indexeddb.service';\nexport * from './lib/ngx-simple-indexeddb.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NOT_AVAILABLE_DB"],"mappings":"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"}