/// import { InjectionToken } from '@angular/core'; /** * Storage is an easy way to store key/value pairs and JSON objects. * Storage uses a variety of storage engines underneath, picking the best one available * depending on the platform. * * When running in a native app context, Storage will prioritize using SQLite, as it's one of * the most stable and widely used file-based databases, and avoids some of the * pitfalls of things like localstorage and IndexedDB, such as the OS deciding to clear out such * data in low disk-space situations. * * When running in the web or as a Progressive Web App, Storage will attempt to use * IndexedDB, WebSQL, and localstorage, in that order. * * @usage * First, if you'd like to use SQLite, install the cordova-sqlite-storage plugin: * ```bash * ionic cordova plugin add cordova-sqlite-storage * ``` * * Next, install the package (comes by default for Ionic apps > Ionic V1): * ```bash * npm install --save @ionic/storage * ``` * * Next, add it to the imports list in your `NgModule` declaration (for example, in `src/app/app.module.ts`): * * ```typescript * import { IonicStorageModule } from '@ionic/storage'; * * @NgModule({ * declarations: [ * // ... * ], * imports: [ * BrowserModule, * IonicModule.forRoot(MyApp), * IonicStorageModule.forRoot() * ], * bootstrap: [IonicApp], * entryComponents: [ * // ... * ], * providers: [ * // ... * ] * }) * export class AppModule {} *``` * * Finally, inject it into any of your components or pages: * ```typescript * import { Storage } from '@ionic/storage'; * export class MyApp { * constructor(private storage: Storage) { } * * ... * * // set a key/value * storage.set('name', 'Max'); * * // Or to get a key/value pair * storage.get('age').then((val) => { * console.log('Your age is', val); * }); * } * ``` * * * ### Configuring Storage * * The Storage engine can be configured both with specific storage engine priorities, or custom configuration * options to pass to localForage. See the localForage config docs for possible options: https://github.com/localForage/localForage#configuration * * Note: Any custom configurations will be merged with the default configuration * * ```typescript * import { IonicStorageModule } from '@ionic/storage'; * * @NgModule({ * declarations: [...], * imports: [ * IonicStorageModule.forRoot({ * name: '__mydb', driverOrder: ['indexeddb', 'sqlite', 'websql'] * }) * ], * bootstrap: [...], * entryComponents: [...], * providers: [...] * }) * export class AppModule { } * ``` */ export declare class Storage { private platformId; private _dbPromise; private _driver; /** * Create a new Storage instance using the order of drivers and any additional config * options to pass to LocalForage. * * Possible driver options are: ['sqlite', 'indexeddb', 'websql', 'localstorage'] and the * default is that exact ordering. */ constructor(config: StorageConfig, platformId: Object); /** * Get the name of the driver being used. * @returns Name of the driver */ get driver(): string | null; /** * Reflect the readiness of the store. * @returns Returns a promise that resolves when the store is ready */ ready(): Promise; /** @hidden */ private _getDriverOrder; /** * Get the value associated with the given key. * @param key the key to identify this value * @returns Returns a promise with the value of the given key */ get(key: string): Promise; /** * Set the value for the given key. * @param key the key to identify this value * @param value the value for this key * @returns Returns a promise that resolves when the key and value are set */ set(key: string, value: any): Promise; /** * Remove any value associated with this key. * @param key the key to identify this value * @returns Returns a promise that resolves when the value is removed */ remove(key: string): Promise; /** * Clear the entire key value store. WARNING: HOT! * @returns Returns a promise that resolves when the store is cleared */ clear(): Promise; /** * @returns Returns a promise that resolves with the number of keys stored. */ length(): Promise; /** * @returns Returns a promise that resolves with the keys in the store. */ keys(): Promise; /** * Iterate through each key,value pair. * @param iteratorCallback a callback of the form (value, key, iterationNumber) * @returns Returns a promise that resolves when the iteration has finished. */ forEach(iteratorCallback: (value: any, key: string, iterationNumber: Number) => any): Promise; } /** @hidden */ export declare function getDefaultConfig(): { name: string; storeName: string; dbKey: string; driverOrder: string[]; }; /** @hidden */ export interface StorageConfig { name?: string; version?: number; size?: number; storeName?: string; description?: string; driverOrder?: string[]; dbKey?: string; } /** @hidden */ export declare const StorageConfigToken: InjectionToken; /** @hidden */ export declare function provideStorage(storageConfig: StorageConfig, platformID: Object): Storage;