123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- /// <reference types="localforage" />
- 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 _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);
- /**
- * Get the name of the driver being used.
- * @returns {string | null} Name of the driver
- */
- readonly driver: string;
- /**
- * Reflect the readiness of the store.
- * @returns {Promise<LocalForage>} Returns a promise that resolves when the store is ready
- */
- ready(): Promise<LocalForage>;
- _getDriverOrder(driverOrder: any): any;
- /**
- * Get the value associated with the given key.
- * @param {any} key the key to identify this value
- * @returns {Promise} Returns a promise with the value of the given key
- */
- get(key: string): Promise<any>;
- /**
- * Set the value for the given key.
- * @param {any} key the key to identify this value
- * @param {any} value the value for this key
- * @returns {Promise} Returns a promise that resolves when the key and value are set
- */
- set(key: string, value: any): Promise<any>;
- /**
- * Remove any value associated with this key.
- * @param {any} key the key to identify this value
- * @returns {Promise} Returns a promise that resolves when the value is removed
- */
- remove(key: string): Promise<any>;
- /**
- * Clear the entire key value store. WARNING: HOT!
- * @returns {Promise} Returns a promise that resolves when the store is cleared
- */
- clear(): Promise<void>;
- /**
- * @returns {Promise} Returns a promise that resolves with the number of keys stored.
- */
- length(): Promise<number>;
- /**
- * @returns {Promise} Returns a promise that resolves with the keys in the store.
- */
- keys(): Promise<string[]>;
- /**
- * Iterate through each key,value pair.
- * @param {any} iteratorCallback a callback of the form (value, key, iterationNumber)
- * @returns {Promise} Returns a promise that resolves when the iteration has finished.
- */
- forEach(iteratorCallback: (value: any, key: string, iterationNumber: Number) => any): Promise<void>;
- }
- /** @hidden */
- export declare function getDefaultConfig(): {
- name: string;
- storeName: string;
- driverOrder: string[];
- };
- /** @hidden */
- export interface StorageConfig {
- name?: string;
- storeName?: string;
- driverOrder?: string[];
- }
- /** @hidden */
- export declare const StorageConfigToken: InjectionToken<{}>;
- /** @hidden */
- export declare function provideStorage(storageConfig: StorageConfig): Storage;
|