@po-ui/ng-storage 6.0.0-rc.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,381 +1,381 @@
1
- import { InjectionToken } from '@angular/core';
2
- import 'localforage';
3
- import { PoStorageConfig } from './po-storage-config.interface';
4
- import * as i0 from "@angular/core";
5
- export declare const PO_STORAGE_CONFIG_TOKEN: InjectionToken<unknown>;
6
- /**
7
- * @description
8
- *
9
- * O PO Storage é uma biblioteca que fornece um serviço para armazenamento de dados no dispositivo local, sendo semelhante
10
- * ao funcionamento do [IonicStorage](https://ionicframework.com/docs/storage/).
11
- * É possível utilizar os drivers [Websql](https://dev.w3.org/html5/webdatabase/), [Indexeddb](https://www.w3.org/TR/IndexedDB/),
12
- * [LocalStorage](https://html.spec.whatwg.org/multipage/webstorage.html) e também [LokiJS](https://github.com/techfort/LokiJS/wiki).
13
- *
14
- * Para um melhor ganho de performance ao buscar e salvar dados, recomendamos a utilização do `LokiJS`, um *database*
15
- * orientado a documento semelhante ao MongoDB, que além de permitir a persistência dos dados no dispositivo possibilita
16
- * também o armazenamento dos dados em memória. Outra vantagem, é o aumento do limite de armazenamento para
17
- * aproximadamente `300mb`.
18
- *
19
- * A estrutura utilizada para armazenar os dados é a de chave/valor, onde uma chave funciona como um identificador exclusivo.
20
- *
21
- * #### Instalando o PO Storage
22
- *
23
- * Para instalar o `po-storage` em sua aplicação execute o seguinte comando:
24
- *
25
- * ```shell
26
- * ng add @po-ui/ng-storage
27
- * ```
28
- * Será instalado o pacote `@po-ui/ng-storage` e também já importará `PoStorageModule` no módulo principal da sua aplicação, conforme abaixo:
29
- *
30
- * ```typescript
31
- * import { PoStorageModule } from '@po-ui/ng-storage';
32
- *
33
- * @NgModule({
34
- * declarations: [...],
35
- * imports: [
36
- * // Importação do módulo PoStorageModule
37
- * PoStorageModule.forRoot(),
38
- * ],
39
- * bootstrap: [IonicApp],
40
- * providers: [...]
41
- * })
42
- * export class AppModule {}
43
- * ```
44
- *
45
- * Com a declaração do módulo, é criada uma base de dados no armazenamento local e o serviço `PoStorageService` estará
46
- * pronto para ser utilizada na sua aplicação.
47
- *
48
- * #### Configurando as opções de armazenamento
49
- *
50
- * Na importação do módulo, o método `PoStorageModule.forRoot()` pode receber como parâmetro um objeto do tipo
51
- * [`PoStorageConfig`](documentation/po-storage#po-storage-config),
52
- * que serve para configurar as opções personalizadas do armazenamento, como por exemplo: o tipo de armazenamento
53
- * preferêncial.
54
- *
55
- * Caso não seja passada nenhuma configuração a ordem padrão será: ['websql', 'indexeddb', 'localstorage', 'lokijs'].
56
- *
57
- * Abaixo segue um exemplo de configuração onde o storage preferencial passa a ser o `lokijs`:
58
- *
59
- * ```typescript
60
- * import { PoStorageModule } from '@po-ui/ng-storage';
61
- *
62
- * @NgModule({
63
- * declarations: [...],
64
- * imports: [
65
- * // Importação do módulo PoStorageModule com a configuração personalizada
66
- * PoStorageModule.forRoot({
67
- * name: 'mystorage',
68
- * storeName: '_mystore',
69
- * driverOrder: ['lokijs', 'websql', 'indexeddb', 'localstorage']
70
- * }),
71
- * ],
72
- * bootstrap: [IonicApp],
73
- * providers: [...]
74
- * })
75
- * export class AppModule {}
76
- * ```
77
- */
78
- export declare class PoStorageService {
79
- private driver;
80
- private idleQueue;
81
- private storagePromise;
82
- private lokijsDriver;
83
- constructor(config?: PoStorageConfig);
84
- /**
85
- * Retorna a configuração padrão para o armazenamento. Caso nenhuma configuração seja inserida,
86
- * essa configuração será utilizada.
87
- *
88
- * @returns {PoStorageConfig} Objeto com a configuração padrão do armazenamento.
89
- */
90
- static getDefaultConfig(): PoStorageConfig;
91
- /**
92
- * Cria uma instância do `PoStorageService` com a configuração de armazenamento passada como parâmetro.
93
- *
94
- * @param {PoStorageConfig} storageConfig Configuração para o armazenamento.
95
- * @returns {PoStorageService} Instância do `PoStorageService`.
96
- */
97
- static providePoStorage(storageConfig?: PoStorageConfig): PoStorageService;
98
- private static getConfig;
99
- /**
100
- * Busca uma lista armazenada pela chave e concatena com a lista passada por parâmetro.
101
- *
102
- * Por exemplo:
103
- *
104
- * ``` typescript
105
- * const clients = [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }];
106
- *
107
- * this.poStorageService.set('clientKey', clients).then(() => {});
108
- *
109
- * ...
110
- *
111
- * const newClients = [ { name: 'Lisa', age: 36 }, { name: 'Bruce', age: 18 } ];
112
- *
113
- * this.poStorageService.appendArrayToArray('clientKey', newClients).then(() => {
114
- * // A lista agora será:
115
- * // [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }, { name: 'Lisa', age: 36 }, { name: 'Bruce', age: 18 }];
116
- * });
117
- * ```
118
- *
119
- * @param {string} key Chave da lista armazenada.
120
- * @param {Array} value Lista que será concatenada.
121
- *
122
- * @returns {Promise<any>} Promessa que é resolvida após as duas listas serem concatenadas e armazenadas localmente.
123
- */
124
- appendArrayToArray(key: string, value: Array<any>): Promise<any>;
125
- /**
126
- * Acrescenta um item em uma lista armazenada pela chave.
127
- *
128
- * @param {string} key Chave da lista armazenada.
129
- * @param {Array} value Item que será acrescentado na lista.
130
- *
131
- * @returns {Promise<any>} Promessa que é resolvida após o item ser acrescentado na lista armazenada.
132
- */
133
- appendItemToArray(key: string, value: any): Promise<any>;
134
- /**
135
- * Remove todos os itens da base de dados local configurada na declaração do módulo `PoStorageModule`.
136
- *
137
- * > Utilize este método com cautela, para evitar a perda indesejada de dados.
138
- *
139
- * @returns {Promise<void>} Promessa que é resolvida após todos os itens da base de dados local serem removidos.
140
- */
141
- clear(): Promise<void>;
142
- /**
143
- * Verifica se existe um valor dentro de uma determinada chave.
144
- *
145
- * @param {string} key Chave que será verificada.
146
- *
147
- * @returns {Promise<boolean>} Promessa que é resolvida quando a verificação da existência do valor na chave é concluída.
148
- */
149
- exists(key: string): Promise<boolean>;
150
- /**
151
- * Itera sobre todas as chaves armazenadas.
152
- *
153
- * @param {any} iteratorCallback Função de `callback` que é chamada a cada iteração, com os seguintes parâmetros:
154
- * valor, chave e número da iteração.
155
- *
156
- * Exemplo de utilização:
157
- *
158
- * ``` typescript
159
- * this.poStorageService.forEach((value: any, key: string, iterationNumber: number) => {
160
- * // Iteração sobre cada chave armazenada.
161
- * });
162
- * ```
163
- *
164
- * @returns {Promise<void>} Promessa que é resolvida após a iteração sobre todas as chaves armazenadas.
165
- */
166
- forEach(iteratorCallback: (value: any, key: string, iterationNumber: number) => any): Promise<void>;
167
- /**
168
- * Retorna o valor armazenado em uma determinada chave.
169
- *
170
- * @param {string} key Chave que identifica o item.
171
- * @param {boolean} lock Define se irá travar a leitura e a escrita da base de dados para não ser acessada de forma paralela.
172
- * Caso outra leitura/escrita já tenha sido iniciada, este método irá esperar o outro terminar para então começar.
173
- *
174
- * Padrão: `false`.
175
- *
176
- * > Esta definição só será válida se o outro acesso paralelo a este método também estiver com o parâmetro *lock* ativado.
177
- * @returns {Promise<any>} Promessa que é resolvida após o item ser buscado.
178
- */
179
- get(key: string, lock?: boolean): Promise<any>;
180
- /**
181
- * Retorna o nome do *driver* que está sendo usado para armazenar os dados, por exemplo: localStorage.
182
- *
183
- * @returns {string | null} Nome do *driver*.
184
- */
185
- getDriver(): string;
186
- /**
187
- * Retorna o primeiro item de uma lista para uma determinada chave.
188
- *
189
- * @param {string} key Chave da lista.
190
- * @returns {Promise<any>} Promessa que é resolvida após o primeiro item ser encontrado.
191
- */
192
- getFirstItem(key: string): Promise<any>;
193
- /**
194
- * Remove o primeiro item de uma lista a partir da chave.
195
- *
196
- * @param {string} key Chave da lista que será removido o primeiro item.
197
- * @returns {Promise<any>} Promessa que é resolvida após o primeiro item da lista ser removido.
198
- */
199
- getItemAndRemove(key: string): Promise<any>;
200
- /**
201
- * Busca o primeiro objeto encontrado dentro de uma lista pelo do valor de um campo.
202
- *
203
- * Por exemplo:
204
- *
205
- * ``` typescript
206
- * const clients = [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }];
207
- *
208
- * this.poStorageService.set('clientKey', clients).then(() => {});
209
- *
210
- * ...
211
- *
212
- * this.poStorageService.getItemByField('clientKey', 'name', 'Marie').then(client => {
213
- * // Resultado do console.log: { name: 'Marie', age: 23 }
214
- * console.log(client);
215
- * });
216
- * ```
217
- *
218
- * @param {string} key Chave da lista.
219
- * @param {string} fieldName O campo a ser filtrado.
220
- * @param {any} fieldValue O valor do campo.
221
- * @returns {Promise<any>} Promessa que é resolvida com o item que foi encontrado.
222
- */
223
- getItemByField(key: string, fieldName: string, fieldValue: any): Promise<any>;
224
- /**
225
- * Lista com todas as chaves armazenadas.
226
- *
227
- * @returns {Promise<Array<string>>} Promessa que é resolvida com todas as chaves armazenadas.
228
- */
229
- keys(): Promise<Array<string>>;
230
- /**
231
- * Quantidade de chaves armazenadas.
232
- *
233
- * @returns {Promise<number>} Promessa que é resolvida com o número de chaves armazenadas.
234
- */
235
- length(): Promise<number>;
236
- /**
237
- * Utilizado para gerenciar o bloqueio e desbloqueio de recursos no `PoStorageService`.
238
- * Aguardando a liberação da utilização dos recursos que participam deste comportamento e posteriormente envolve o recurso
239
- * passado como parâmetro em um comportamento de bloqueio e desbloqueio.
240
- *
241
- * Este método se comporta igual a utilização em conjunta dos métodos: `PoStorageService.requestIdlePromise()`,
242
- * `PoStorageService.lock()` e `PoStorageService.unlook()`.
243
- *
244
- * Veja mais no método: [`PoStorage.requestIdlePromise()`](documentation/po-storage#request-idle-promise).
245
- *
246
- * @param {Function} limitedResource Função que será envolvida no comportamento de bloqueio e desbloqueio.
247
- */
248
- limitedCallWrap(limitedResource: Function): Promise<any>;
249
- /**
250
- * Incrementa um valor na fila de bloqueio do `PoStorageService`. Utilizado juntamente com o método `unlock` para poder
251
- * controlar a execução de uma determinada tarefa com o `PoStorage.requestIdlePromise()`.
252
- *
253
- * Veja mais no método: [`PoStorage.requestIdlePromise()`](documentation/po-storage#request-idle-promise).
254
- */
255
- lock(): void;
256
- /**
257
- * Determina se o processo de inicialização do *driver* assíncrono foi concluído.
258
- *
259
- * @returns {Promise<LocalForage>} Promessa que é resolvida quando o processo de inicialização do *driver* assíncrono
260
- * for concluído.
261
- */
262
- ready(): Promise<LocalForage>;
263
- /**
264
- * Remove um valor associado a uma chave.
265
- *
266
- * @param {key} key Chave do valor que será removido.
267
- * @returns {Promise<any>} Promessa que é resolvida após o valor ser removido.
268
- */
269
- remove(key: string): Promise<any>;
270
- /**
271
- * Remove uma propriedade de um objeto armazenado.
272
- *
273
- * @param {string} key Chave do objeto armazenado.
274
- * @param {string} property Propriedade que será removida.
275
- *
276
- * @returns {Promise<any>} Promessa que é resolvida após a propriedade ser removida.
277
- */
278
- removeIndexFromObject(key: string, property: string): Promise<any>;
279
- /**
280
- * Remove um objeto de uma lista armazenada pelo valor de uma propriedade.
281
- *
282
- * Por exemplo:
283
- *
284
- * ``` typescript
285
- * const clients = [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }];
286
- *
287
- * this.poStorageService.set('clientKey', clients).then(() => {});
288
- *
289
- * ...
290
- *
291
- * this.poStorageService.removeItemFromArray('clientKey', 'name', 'Marie').then(() => {
292
- * // O objeto { name: 'Marie', age: 23 } foi removido da lista que está na chave 'clientKey'
293
- * });
294
- * ```
295
- *
296
- * @param {string} key Chave da lista que contém o item que será removido.
297
- * @param {string} field O campo a ser filtrado no item.
298
- * @param {string} value O valor do filtro.
299
- * @returns {Promise<any>} Promessa que é resolvida quando o objeto for removido da lista.
300
- */
301
- removeItemFromArray(key: string, field: string, value: any): Promise<any>;
302
- /**
303
- * <a id="request-idle-promise"></a>
304
- * Método que verifica se o acesso a base de dados configurada está liberado.
305
- *
306
- * Utilizado em conjunto com os métodos `lock()` e `unlock()` entre tarefas que não podem ser executadas de forma
307
- * paralela, para não causar inconsistências nos dados.
308
- *
309
- * Exemplo de utilização:
310
- *
311
- * ```
312
- * // Aguarda a liberação para continuar
313
- * await this.poStorage.requestIdlePromise();
314
- *
315
- * this.poStorage.lock();
316
- *
317
- * // Executa uma tarefa que irá ler e/ou escrever na base de dados configurada.
318
- *
319
- * this.poStorage.unlock();
320
- * ```
321
- *
322
- * > É importante sempre utilizá-lo antes de executar os métodos `lock()` e `unlock()` para garantir que a tarefa só
323
- * será executada caso o acesso esteja livre.
324
- *
325
- * @returns {Promise<any>} Promessa que é resolvida quando o acesso a base de dados configurada estiver liberado.
326
- */
327
- requestIdlePromise(): Promise<any>;
328
- /**
329
- * Grava um valor em uma determinada chave.
330
- *
331
- * @param {string} key Chave para o valor que será gravado.
332
- * @param {any} value Valor que será gravado.
333
- * @param {boolean} lock Define se irá travar a leitura e a escrita da base de dados para não ser acessada de forma paralela.
334
- * Caso outra leitura/escrita já tenha sido iniciada, este método irá esperar o outro terminar para então começar.
335
- *
336
- * Padrão: `false`.
337
- *
338
- * > Esta definição só será válida se o outro acesso paralelo a este método também estiver com o parâmetro *lock* ativado.
339
- * @returns {Promise<any>} Promessa que é resolvida após o valor ter sido gravado.
340
- */
341
- set(key: string, value: any, lock?: boolean): Promise<any>;
342
- /**
343
- * Atribui um valor a uma propriedade de um objeto armazenado pela chave.
344
- *
345
- * Por exemplo:
346
- *
347
- * ``` typescript
348
- * const clients = [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }];
349
- *
350
- * this.poStorageService.set('clientKey', clients).then(() => {});
351
- *
352
- * ...
353
- *
354
- * this.poStorageService.setIndexToObject('clientKey', 'name', 'Clare').then(() => {
355
- * // O objeto { name: 'Marie', age: 23 } passa a ser { name: 'Clare', age: 23 }
356
- * });
357
- * ```
358
- *
359
- * @param {string} key Chave do objeto.
360
- * @param {string} property Nome da propriedade do objeto.
361
- * @param {any} value Valor que será gravado na propriedade do objeto.
362
- */
363
- setIndexToObject(key: string, property: string, value: any): Promise<any>;
364
- /**
365
- * Decrementa um valor na fila de bloqueio. Utilizado juntamente com o método `lock` para poder
366
- * controlar a execução de uma determinada tarefa com o `PoStorage.requestIdlePromise()`.
367
- *
368
- * Veja mais no método: [`PoStorage.requestIdlePromise()`](documentation/po-storage#request-idle-promise).
369
- */
370
- unlock(): void;
371
- private getArrayOfStorage;
372
- private getImmutableItem;
373
- private defineLocalForageDriver;
374
- private getDriverOrder;
375
- private getObjectOfStorage;
376
- private setDriver;
377
- private setStoragePromise;
378
- private getStorageInstance;
379
- static ɵfac: i0.ɵɵFactoryDeclaration<PoStorageService, never>;
380
- static ɵprov: i0.ɵɵInjectableDeclaration<PoStorageService>;
381
- }
1
+ import { InjectionToken } from '@angular/core';
2
+ import 'localforage';
3
+ import { PoStorageConfig } from './po-storage-config.interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare const PO_STORAGE_CONFIG_TOKEN: InjectionToken<unknown>;
6
+ /**
7
+ * @description
8
+ *
9
+ * O PO Storage é uma biblioteca que fornece um serviço para armazenamento de dados no dispositivo local, sendo semelhante
10
+ * ao funcionamento do [IonicStorage](https://ionicframework.com/docs/storage/).
11
+ * É possível utilizar os drivers [Websql](https://dev.w3.org/html5/webdatabase/), [Indexeddb](https://www.w3.org/TR/IndexedDB/),
12
+ * [LocalStorage](https://html.spec.whatwg.org/multipage/webstorage.html) e também [LokiJS](https://github.com/techfort/LokiJS/wiki).
13
+ *
14
+ * Para um melhor ganho de performance ao buscar e salvar dados, recomendamos a utilização do `LokiJS`, um *database*
15
+ * orientado a documento semelhante ao MongoDB, que além de permitir a persistência dos dados no dispositivo possibilita
16
+ * também o armazenamento dos dados em memória. Outra vantagem, é o aumento do limite de armazenamento para
17
+ * aproximadamente `300mb`.
18
+ *
19
+ * A estrutura utilizada para armazenar os dados é a de chave/valor, onde uma chave funciona como um identificador exclusivo.
20
+ *
21
+ * #### Instalando o PO Storage
22
+ *
23
+ * Para instalar o `po-storage` em sua aplicação execute o seguinte comando:
24
+ *
25
+ * ```shell
26
+ * ng add @po-ui/ng-storage
27
+ * ```
28
+ * Será instalado o pacote `@po-ui/ng-storage` e também já importará `PoStorageModule` no módulo principal da sua aplicação, conforme abaixo:
29
+ *
30
+ * ```typescript
31
+ * import { PoStorageModule } from '@po-ui/ng-storage';
32
+ *
33
+ * @NgModule({
34
+ * declarations: [...],
35
+ * imports: [
36
+ * // Importação do módulo PoStorageModule
37
+ * PoStorageModule.forRoot(),
38
+ * ],
39
+ * bootstrap: [IonicApp],
40
+ * providers: [...]
41
+ * })
42
+ * export class AppModule {}
43
+ * ```
44
+ *
45
+ * Com a declaração do módulo, é criada uma base de dados no armazenamento local e o serviço `PoStorageService` estará
46
+ * pronto para ser utilizada na sua aplicação.
47
+ *
48
+ * #### Configurando as opções de armazenamento
49
+ *
50
+ * Na importação do módulo, o método `PoStorageModule.forRoot()` pode receber como parâmetro um objeto do tipo
51
+ * [`PoStorageConfig`](documentation/po-storage#po-storage-config),
52
+ * que serve para configurar as opções personalizadas do armazenamento, como por exemplo: o tipo de armazenamento
53
+ * preferêncial.
54
+ *
55
+ * Caso não seja passada nenhuma configuração a ordem padrão será: ['websql', 'indexeddb', 'localstorage', 'lokijs'].
56
+ *
57
+ * Abaixo segue um exemplo de configuração onde o storage preferencial passa a ser o `lokijs`:
58
+ *
59
+ * ```typescript
60
+ * import { PoStorageModule } from '@po-ui/ng-storage';
61
+ *
62
+ * @NgModule({
63
+ * declarations: [...],
64
+ * imports: [
65
+ * // Importação do módulo PoStorageModule com a configuração personalizada
66
+ * PoStorageModule.forRoot({
67
+ * name: 'mystorage',
68
+ * storeName: '_mystore',
69
+ * driverOrder: ['lokijs', 'websql', 'indexeddb', 'localstorage']
70
+ * }),
71
+ * ],
72
+ * bootstrap: [IonicApp],
73
+ * providers: [...]
74
+ * })
75
+ * export class AppModule {}
76
+ * ```
77
+ */
78
+ export declare class PoStorageService {
79
+ private driver;
80
+ private idleQueue;
81
+ private storagePromise;
82
+ private lokijsDriver;
83
+ constructor(config?: PoStorageConfig);
84
+ /**
85
+ * Retorna a configuração padrão para o armazenamento. Caso nenhuma configuração seja inserida,
86
+ * essa configuração será utilizada.
87
+ *
88
+ * @returns {PoStorageConfig} Objeto com a configuração padrão do armazenamento.
89
+ */
90
+ static getDefaultConfig(): PoStorageConfig;
91
+ /**
92
+ * Cria uma instância do `PoStorageService` com a configuração de armazenamento passada como parâmetro.
93
+ *
94
+ * @param {PoStorageConfig} storageConfig Configuração para o armazenamento.
95
+ * @returns {PoStorageService} Instância do `PoStorageService`.
96
+ */
97
+ static providePoStorage(storageConfig?: PoStorageConfig): PoStorageService;
98
+ private static getConfig;
99
+ /**
100
+ * Busca uma lista armazenada pela chave e concatena com a lista passada por parâmetro.
101
+ *
102
+ * Por exemplo:
103
+ *
104
+ * ``` typescript
105
+ * const clients = [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }];
106
+ *
107
+ * this.poStorageService.set('clientKey', clients).then(() => {});
108
+ *
109
+ * ...
110
+ *
111
+ * const newClients = [ { name: 'Lisa', age: 36 }, { name: 'Bruce', age: 18 } ];
112
+ *
113
+ * this.poStorageService.appendArrayToArray('clientKey', newClients).then(() => {
114
+ * // A lista agora será:
115
+ * // [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }, { name: 'Lisa', age: 36 }, { name: 'Bruce', age: 18 }];
116
+ * });
117
+ * ```
118
+ *
119
+ * @param {string} key Chave da lista armazenada.
120
+ * @param {Array} value Lista que será concatenada.
121
+ *
122
+ * @returns {Promise<any>} Promessa que é resolvida após as duas listas serem concatenadas e armazenadas localmente.
123
+ */
124
+ appendArrayToArray(key: string, value: Array<any>): Promise<any>;
125
+ /**
126
+ * Acrescenta um item em uma lista armazenada pela chave.
127
+ *
128
+ * @param {string} key Chave da lista armazenada.
129
+ * @param {Array} value Item que será acrescentado na lista.
130
+ *
131
+ * @returns {Promise<any>} Promessa que é resolvida após o item ser acrescentado na lista armazenada.
132
+ */
133
+ appendItemToArray(key: string, value: any): Promise<any>;
134
+ /**
135
+ * Remove todos os itens da base de dados local configurada na declaração do módulo `PoStorageModule`.
136
+ *
137
+ * > Utilize este método com cautela, para evitar a perda indesejada de dados.
138
+ *
139
+ * @returns {Promise<void>} Promessa que é resolvida após todos os itens da base de dados local serem removidos.
140
+ */
141
+ clear(): Promise<void>;
142
+ /**
143
+ * Verifica se existe um valor dentro de uma determinada chave.
144
+ *
145
+ * @param {string} key Chave que será verificada.
146
+ *
147
+ * @returns {Promise<boolean>} Promessa que é resolvida quando a verificação da existência do valor na chave é concluída.
148
+ */
149
+ exists(key: string): Promise<boolean>;
150
+ /**
151
+ * Itera sobre todas as chaves armazenadas.
152
+ *
153
+ * @param {any} iteratorCallback Função de `callback` que é chamada a cada iteração, com os seguintes parâmetros:
154
+ * valor, chave e número da iteração.
155
+ *
156
+ * Exemplo de utilização:
157
+ *
158
+ * ``` typescript
159
+ * this.poStorageService.forEach((value: any, key: string, iterationNumber: number) => {
160
+ * // Iteração sobre cada chave armazenada.
161
+ * });
162
+ * ```
163
+ *
164
+ * @returns {Promise<void>} Promessa que é resolvida após a iteração sobre todas as chaves armazenadas.
165
+ */
166
+ forEach(iteratorCallback: (value: any, key: string, iterationNumber: number) => any): Promise<void>;
167
+ /**
168
+ * Retorna o valor armazenado em uma determinada chave.
169
+ *
170
+ * @param {string} key Chave que identifica o item.
171
+ * @param {boolean} lock Define se irá travar a leitura e a escrita da base de dados para não ser acessada de forma paralela.
172
+ * Caso outra leitura/escrita já tenha sido iniciada, este método irá esperar o outro terminar para então começar.
173
+ *
174
+ * Padrão: `false`.
175
+ *
176
+ * > Esta definição só será válida se o outro acesso paralelo a este método também estiver com o parâmetro *lock* ativado.
177
+ * @returns {Promise<any>} Promessa que é resolvida após o item ser buscado.
178
+ */
179
+ get(key: string, lock?: boolean): Promise<any>;
180
+ /**
181
+ * Retorna o nome do *driver* que está sendo usado para armazenar os dados, por exemplo: localStorage.
182
+ *
183
+ * @returns {string | null} Nome do *driver*.
184
+ */
185
+ getDriver(): string;
186
+ /**
187
+ * Retorna o primeiro item de uma lista para uma determinada chave.
188
+ *
189
+ * @param {string} key Chave da lista.
190
+ * @returns {Promise<any>} Promessa que é resolvida após o primeiro item ser encontrado.
191
+ */
192
+ getFirstItem(key: string): Promise<any>;
193
+ /**
194
+ * Remove o primeiro item de uma lista a partir da chave.
195
+ *
196
+ * @param {string} key Chave da lista que será removido o primeiro item.
197
+ * @returns {Promise<any>} Promessa que é resolvida após o primeiro item da lista ser removido.
198
+ */
199
+ getItemAndRemove(key: string): Promise<any>;
200
+ /**
201
+ * Busca o primeiro objeto encontrado dentro de uma lista pelo do valor de um campo.
202
+ *
203
+ * Por exemplo:
204
+ *
205
+ * ``` typescript
206
+ * const clients = [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }];
207
+ *
208
+ * this.poStorageService.set('clientKey', clients).then(() => {});
209
+ *
210
+ * ...
211
+ *
212
+ * this.poStorageService.getItemByField('clientKey', 'name', 'Marie').then(client => {
213
+ * // Resultado do console.log: { name: 'Marie', age: 23 }
214
+ * console.log(client);
215
+ * });
216
+ * ```
217
+ *
218
+ * @param {string} key Chave da lista.
219
+ * @param {string} fieldName O campo a ser filtrado.
220
+ * @param {any} fieldValue O valor do campo.
221
+ * @returns {Promise<any>} Promessa que é resolvida com o item que foi encontrado.
222
+ */
223
+ getItemByField(key: string, fieldName: string, fieldValue: any): Promise<any>;
224
+ /**
225
+ * Lista com todas as chaves armazenadas.
226
+ *
227
+ * @returns {Promise<Array<string>>} Promessa que é resolvida com todas as chaves armazenadas.
228
+ */
229
+ keys(): Promise<Array<string>>;
230
+ /**
231
+ * Quantidade de chaves armazenadas.
232
+ *
233
+ * @returns {Promise<number>} Promessa que é resolvida com o número de chaves armazenadas.
234
+ */
235
+ length(): Promise<number>;
236
+ /**
237
+ * Utilizado para gerenciar o bloqueio e desbloqueio de recursos no `PoStorageService`.
238
+ * Aguardando a liberação da utilização dos recursos que participam deste comportamento e posteriormente envolve o recurso
239
+ * passado como parâmetro em um comportamento de bloqueio e desbloqueio.
240
+ *
241
+ * Este método se comporta igual a utilização em conjunta dos métodos: `PoStorageService.requestIdlePromise()`,
242
+ * `PoStorageService.lock()` e `PoStorageService.unlook()`.
243
+ *
244
+ * Veja mais no método: [`PoStorage.requestIdlePromise()`](documentation/po-storage#request-idle-promise).
245
+ *
246
+ * @param {Function} limitedResource Função que será envolvida no comportamento de bloqueio e desbloqueio.
247
+ */
248
+ limitedCallWrap(limitedResource: Function): Promise<any>;
249
+ /**
250
+ * Incrementa um valor na fila de bloqueio do `PoStorageService`. Utilizado juntamente com o método `unlock` para poder
251
+ * controlar a execução de uma determinada tarefa com o `PoStorage.requestIdlePromise()`.
252
+ *
253
+ * Veja mais no método: [`PoStorage.requestIdlePromise()`](documentation/po-storage#request-idle-promise).
254
+ */
255
+ lock(): void;
256
+ /**
257
+ * Determina se o processo de inicialização do *driver* assíncrono foi concluído.
258
+ *
259
+ * @returns {Promise<LocalForage>} Promessa que é resolvida quando o processo de inicialização do *driver* assíncrono
260
+ * for concluído.
261
+ */
262
+ ready(): Promise<LocalForage>;
263
+ /**
264
+ * Remove um valor associado a uma chave.
265
+ *
266
+ * @param {key} key Chave do valor que será removido.
267
+ * @returns {Promise<any>} Promessa que é resolvida após o valor ser removido.
268
+ */
269
+ remove(key: string): Promise<any>;
270
+ /**
271
+ * Remove uma propriedade de um objeto armazenado.
272
+ *
273
+ * @param {string} key Chave do objeto armazenado.
274
+ * @param {string} property Propriedade que será removida.
275
+ *
276
+ * @returns {Promise<any>} Promessa que é resolvida após a propriedade ser removida.
277
+ */
278
+ removeIndexFromObject(key: string, property: string): Promise<any>;
279
+ /**
280
+ * Remove um objeto de uma lista armazenada pelo valor de uma propriedade.
281
+ *
282
+ * Por exemplo:
283
+ *
284
+ * ``` typescript
285
+ * const clients = [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }];
286
+ *
287
+ * this.poStorageService.set('clientKey', clients).then(() => {});
288
+ *
289
+ * ...
290
+ *
291
+ * this.poStorageService.removeItemFromArray('clientKey', 'name', 'Marie').then(() => {
292
+ * // O objeto { name: 'Marie', age: 23 } foi removido da lista que está na chave 'clientKey'
293
+ * });
294
+ * ```
295
+ *
296
+ * @param {string} key Chave da lista que contém o item que será removido.
297
+ * @param {string} field O campo a ser filtrado no item.
298
+ * @param {string} value O valor do filtro.
299
+ * @returns {Promise<any>} Promessa que é resolvida quando o objeto for removido da lista.
300
+ */
301
+ removeItemFromArray(key: string, field: string, value: any): Promise<any>;
302
+ /**
303
+ * <a id="request-idle-promise"></a>
304
+ * Método que verifica se o acesso a base de dados configurada está liberado.
305
+ *
306
+ * Utilizado em conjunto com os métodos `lock()` e `unlock()` entre tarefas que não podem ser executadas de forma
307
+ * paralela, para não causar inconsistências nos dados.
308
+ *
309
+ * Exemplo de utilização:
310
+ *
311
+ * ```
312
+ * // Aguarda a liberação para continuar
313
+ * await this.poStorage.requestIdlePromise();
314
+ *
315
+ * this.poStorage.lock();
316
+ *
317
+ * // Executa uma tarefa que irá ler e/ou escrever na base de dados configurada.
318
+ *
319
+ * this.poStorage.unlock();
320
+ * ```
321
+ *
322
+ * > É importante sempre utilizá-lo antes de executar os métodos `lock()` e `unlock()` para garantir que a tarefa só
323
+ * será executada caso o acesso esteja livre.
324
+ *
325
+ * @returns {Promise<any>} Promessa que é resolvida quando o acesso a base de dados configurada estiver liberado.
326
+ */
327
+ requestIdlePromise(): Promise<any>;
328
+ /**
329
+ * Grava um valor em uma determinada chave.
330
+ *
331
+ * @param {string} key Chave para o valor que será gravado.
332
+ * @param {any} value Valor que será gravado.
333
+ * @param {boolean} lock Define se irá travar a leitura e a escrita da base de dados para não ser acessada de forma paralela.
334
+ * Caso outra leitura/escrita já tenha sido iniciada, este método irá esperar o outro terminar para então começar.
335
+ *
336
+ * Padrão: `false`.
337
+ *
338
+ * > Esta definição só será válida se o outro acesso paralelo a este método também estiver com o parâmetro *lock* ativado.
339
+ * @returns {Promise<any>} Promessa que é resolvida após o valor ter sido gravado.
340
+ */
341
+ set(key: string, value: any, lock?: boolean): Promise<any>;
342
+ /**
343
+ * Atribui um valor a uma propriedade de um objeto armazenado pela chave.
344
+ *
345
+ * Por exemplo:
346
+ *
347
+ * ``` typescript
348
+ * const clients = [ { name: 'Marie', age: 23 }, { name: 'Pether', age: 39 }];
349
+ *
350
+ * this.poStorageService.set('clientKey', clients).then(() => {});
351
+ *
352
+ * ...
353
+ *
354
+ * this.poStorageService.setIndexToObject('clientKey', 'name', 'Clare').then(() => {
355
+ * // O objeto { name: 'Marie', age: 23 } passa a ser { name: 'Clare', age: 23 }
356
+ * });
357
+ * ```
358
+ *
359
+ * @param {string} key Chave do objeto.
360
+ * @param {string} property Nome da propriedade do objeto.
361
+ * @param {any} value Valor que será gravado na propriedade do objeto.
362
+ */
363
+ setIndexToObject(key: string, property: string, value: any): Promise<any>;
364
+ /**
365
+ * Decrementa um valor na fila de bloqueio. Utilizado juntamente com o método `lock` para poder
366
+ * controlar a execução de uma determinada tarefa com o `PoStorage.requestIdlePromise()`.
367
+ *
368
+ * Veja mais no método: [`PoStorage.requestIdlePromise()`](documentation/po-storage#request-idle-promise).
369
+ */
370
+ unlock(): void;
371
+ private getArrayOfStorage;
372
+ private getImmutableItem;
373
+ private defineLocalForageDriver;
374
+ private getDriverOrder;
375
+ private getObjectOfStorage;
376
+ private setDriver;
377
+ private setStoragePromise;
378
+ private getStorageInstance;
379
+ static ɵfac: i0.ɵɵFactoryDeclaration<PoStorageService, never>;
380
+ static ɵprov: i0.ɵɵInjectableDeclaration<PoStorageService>;
381
+ }