valtech-components 2.0.417 → 2.0.419
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.
- package/esm2022/public-api.mjs +4 -2
- package/fesm2022/valtech-components.mjs +4 -2607
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/package.json +1 -3
- package/public-api.d.ts +0 -1
- package/esm2022/lib/services/firebase/config.mjs +0 -108
- package/esm2022/lib/services/firebase/firebase.service.mjs +0 -285
- package/esm2022/lib/services/firebase/firestore-collection.mjs +0 -266
- package/esm2022/lib/services/firebase/firestore.service.mjs +0 -508
- package/esm2022/lib/services/firebase/index.mjs +0 -46
- package/esm2022/lib/services/firebase/messaging.service.mjs +0 -503
- package/esm2022/lib/services/firebase/storage.service.mjs +0 -421
- package/esm2022/lib/services/firebase/types.mjs +0 -8
- package/esm2022/lib/services/firebase/utils/path-builder.mjs +0 -195
- package/esm2022/lib/services/firebase/utils/query-builder.mjs +0 -302
- package/lib/services/firebase/config.d.ts +0 -49
- package/lib/services/firebase/firebase.service.d.ts +0 -140
- package/lib/services/firebase/firestore-collection.d.ts +0 -195
- package/lib/services/firebase/firestore.service.d.ts +0 -303
- package/lib/services/firebase/index.d.ts +0 -38
- package/lib/services/firebase/messaging.service.d.ts +0 -254
- package/lib/services/firebase/storage.service.d.ts +0 -204
- package/lib/services/firebase/types.d.ts +0 -281
- package/lib/services/firebase/utils/path-builder.d.ts +0 -132
- package/lib/services/firebase/utils/query-builder.d.ts +0 -210
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { NotificationAction, NotificationClickEvent, NotificationPayload, NotificationPermission } from './types';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Estado interno del servicio de messaging
|
|
6
|
-
*/
|
|
7
|
-
interface MessagingState {
|
|
8
|
-
token: string | null;
|
|
9
|
-
permission: NotificationPermission;
|
|
10
|
-
isSupported: boolean;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Servicio para Firebase Cloud Messaging (FCM).
|
|
14
|
-
*
|
|
15
|
-
* Permite recibir notificaciones push en la aplicación web.
|
|
16
|
-
* Requiere VAPID key configurada en ValtechFirebaseConfig.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* @Component({...})
|
|
21
|
-
* export class NotificationComponent {
|
|
22
|
-
* private messaging = inject(MessagingService);
|
|
23
|
-
*
|
|
24
|
-
* token = signal<string | null>(null);
|
|
25
|
-
*
|
|
26
|
-
* async enableNotifications() {
|
|
27
|
-
* // Solicitar permiso y obtener token
|
|
28
|
-
* const token = await this.messaging.requestPermission();
|
|
29
|
-
*
|
|
30
|
-
* if (token) {
|
|
31
|
-
* this.token.set(token);
|
|
32
|
-
* // Enviar token a tu backend para almacenarlo
|
|
33
|
-
* await this.backend.registerDeviceToken(token);
|
|
34
|
-
* }
|
|
35
|
-
* }
|
|
36
|
-
*
|
|
37
|
-
* // Escuchar mensajes en foreground
|
|
38
|
-
* messages$ = this.messaging.onMessage();
|
|
39
|
-
* }
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
export declare class MessagingService {
|
|
43
|
-
private messaging;
|
|
44
|
-
private config;
|
|
45
|
-
private platformId;
|
|
46
|
-
private ngZone;
|
|
47
|
-
private messageSubject;
|
|
48
|
-
private notificationClickSubject;
|
|
49
|
-
private stateSubject;
|
|
50
|
-
private unsubscribeOnMessage?;
|
|
51
|
-
constructor();
|
|
52
|
-
/**
|
|
53
|
-
* Inicializa el servicio de messaging
|
|
54
|
-
*/
|
|
55
|
-
private initializeMessaging;
|
|
56
|
-
/**
|
|
57
|
-
* Configura listener para mensajes del Service Worker.
|
|
58
|
-
* Recibe eventos cuando el usuario hace click en una notificación background.
|
|
59
|
-
*/
|
|
60
|
-
private setupServiceWorkerListener;
|
|
61
|
-
/**
|
|
62
|
-
* Verifica si FCM está soportado en el navegador actual
|
|
63
|
-
*/
|
|
64
|
-
private checkSupport;
|
|
65
|
-
/**
|
|
66
|
-
* Solicita permiso de notificaciones y obtiene el token FCM.
|
|
67
|
-
*
|
|
68
|
-
* @returns Token FCM si se otorgó permiso, null si se denegó
|
|
69
|
-
*
|
|
70
|
-
* @example
|
|
71
|
-
* ```typescript
|
|
72
|
-
* const token = await messaging.requestPermission();
|
|
73
|
-
* if (token) {
|
|
74
|
-
* console.log('Token FCM:', token);
|
|
75
|
-
* // Enviar a backend
|
|
76
|
-
* } else {
|
|
77
|
-
* console.log('Permiso denegado o no soportado');
|
|
78
|
-
* }
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
requestPermission(): Promise<string | null>;
|
|
82
|
-
/**
|
|
83
|
-
* Obtiene el token FCM actual (sin solicitar permiso).
|
|
84
|
-
*
|
|
85
|
-
* @returns Token FCM si está disponible, null si no
|
|
86
|
-
*
|
|
87
|
-
* @example
|
|
88
|
-
* ```typescript
|
|
89
|
-
* const token = await messaging.getToken();
|
|
90
|
-
* ```
|
|
91
|
-
*/
|
|
92
|
-
getToken(): Promise<string | null>;
|
|
93
|
-
/**
|
|
94
|
-
* Elimina el token FCM actual (unsubscribe de notificaciones).
|
|
95
|
-
*
|
|
96
|
-
* @example
|
|
97
|
-
* ```typescript
|
|
98
|
-
* await messaging.deleteToken();
|
|
99
|
-
* console.log('Token eliminado, no recibirá más notificaciones');
|
|
100
|
-
* ```
|
|
101
|
-
*/
|
|
102
|
-
deleteToken(): Promise<void>;
|
|
103
|
-
/**
|
|
104
|
-
* Observable de mensajes recibidos en foreground.
|
|
105
|
-
*
|
|
106
|
-
* IMPORTANTE: Los mensajes en background son manejados por el Service Worker.
|
|
107
|
-
*
|
|
108
|
-
* @returns Observable que emite cuando llega un mensaje en foreground
|
|
109
|
-
*
|
|
110
|
-
* @example
|
|
111
|
-
* ```typescript
|
|
112
|
-
* messaging.onMessage().subscribe(payload => {
|
|
113
|
-
* console.log('Mensaje recibido:', payload);
|
|
114
|
-
* // Mostrar notificación custom o actualizar UI
|
|
115
|
-
* });
|
|
116
|
-
* ```
|
|
117
|
-
*/
|
|
118
|
-
onMessage(): Observable<NotificationPayload>;
|
|
119
|
-
/**
|
|
120
|
-
* Configura el listener de mensajes en foreground
|
|
121
|
-
*/
|
|
122
|
-
private setupMessageListener;
|
|
123
|
-
/**
|
|
124
|
-
* Obtiene el estado actual del permiso de notificaciones.
|
|
125
|
-
*
|
|
126
|
-
* @returns 'granted' | 'denied' | 'default'
|
|
127
|
-
*
|
|
128
|
-
* @example
|
|
129
|
-
* ```typescript
|
|
130
|
-
* const permission = messaging.getPermissionState();
|
|
131
|
-
* if (permission === 'granted') {
|
|
132
|
-
* // Ya tiene permiso
|
|
133
|
-
* } else if (permission === 'default') {
|
|
134
|
-
* // Puede solicitar permiso
|
|
135
|
-
* } else {
|
|
136
|
-
* // Denegado, debe habilitar manualmente
|
|
137
|
-
* }
|
|
138
|
-
* ```
|
|
139
|
-
*/
|
|
140
|
-
getPermissionState(): NotificationPermission;
|
|
141
|
-
/**
|
|
142
|
-
* Verifica si FCM está soportado en el navegador actual.
|
|
143
|
-
*
|
|
144
|
-
* @returns true si FCM está soportado
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ```typescript
|
|
148
|
-
* if (await messaging.isSupported()) {
|
|
149
|
-
* // Puede usar notificaciones push
|
|
150
|
-
* } else {
|
|
151
|
-
* // Navegador no soporta o no tiene Service Worker
|
|
152
|
-
* }
|
|
153
|
-
* ```
|
|
154
|
-
*/
|
|
155
|
-
isSupported(): Promise<boolean>;
|
|
156
|
-
/**
|
|
157
|
-
* Obtiene el token actual sin hacer request.
|
|
158
|
-
*
|
|
159
|
-
* @returns Token almacenado o null
|
|
160
|
-
*/
|
|
161
|
-
get currentToken(): string | null;
|
|
162
|
-
/**
|
|
163
|
-
* Observable del estado completo del servicio de messaging.
|
|
164
|
-
*/
|
|
165
|
-
get state$(): Observable<MessagingState>;
|
|
166
|
-
/**
|
|
167
|
-
* Verifica si el usuario ya otorgó permiso de notificaciones.
|
|
168
|
-
*/
|
|
169
|
-
get hasPermission(): boolean;
|
|
170
|
-
/**
|
|
171
|
-
* Observable de clicks en notificaciones.
|
|
172
|
-
*
|
|
173
|
-
* Emite cuando el usuario hace click en una notificación (foreground o background).
|
|
174
|
-
* Usa este observable para navegar a la página correspondiente.
|
|
175
|
-
*
|
|
176
|
-
* @returns Observable que emite NotificationClickEvent
|
|
177
|
-
*
|
|
178
|
-
* @example
|
|
179
|
-
* ```typescript
|
|
180
|
-
* @Component({...})
|
|
181
|
-
* export class AppComponent {
|
|
182
|
-
* private messaging = inject(MessagingService);
|
|
183
|
-
* private router = inject(Router);
|
|
184
|
-
*
|
|
185
|
-
* constructor() {
|
|
186
|
-
* this.messaging.onNotificationClick().subscribe(event => {
|
|
187
|
-
* if (event.action.route) {
|
|
188
|
-
* this.router.navigate([event.action.route], {
|
|
189
|
-
* queryParams: event.action.queryParams
|
|
190
|
-
* });
|
|
191
|
-
* }
|
|
192
|
-
* });
|
|
193
|
-
* }
|
|
194
|
-
* }
|
|
195
|
-
* ```
|
|
196
|
-
*/
|
|
197
|
-
onNotificationClick(): Observable<NotificationClickEvent>;
|
|
198
|
-
/**
|
|
199
|
-
* Extrae la acción de navegación de los datos de una notificación.
|
|
200
|
-
*
|
|
201
|
-
* Busca campos específicos en el payload de datos:
|
|
202
|
-
* - `route`: Ruta interna de la app (ej: '/orders/123')
|
|
203
|
-
* - `url`: URL externa (ej: 'https://example.com')
|
|
204
|
-
* - `action_type`: Tipo de acción personalizada
|
|
205
|
-
* - Campos con prefijo `action_`: Datos adicionales
|
|
206
|
-
*
|
|
207
|
-
* @param data - Datos del payload de la notificación
|
|
208
|
-
* @returns Acción de navegación extraída
|
|
209
|
-
*
|
|
210
|
-
* @example
|
|
211
|
-
* ```typescript
|
|
212
|
-
* // Payload desde el backend:
|
|
213
|
-
* // { route: '/orders/123', action_type: 'view_order', action_orderId: '123' }
|
|
214
|
-
*
|
|
215
|
-
* const action = messaging.extractActionFromData(notification.data);
|
|
216
|
-
* // { route: '/orders/123', actionType: 'view_order', actionData: { orderId: '123' } }
|
|
217
|
-
* ```
|
|
218
|
-
*/
|
|
219
|
-
extractActionFromData(data?: Record<string, string>): NotificationAction;
|
|
220
|
-
/**
|
|
221
|
-
* Emite manualmente un evento de click en notificación.
|
|
222
|
-
*
|
|
223
|
-
* Útil para manejar clicks en notificaciones foreground donde
|
|
224
|
-
* la app decide mostrar un banner custom.
|
|
225
|
-
*
|
|
226
|
-
* @param notification - Payload de la notificación
|
|
227
|
-
*
|
|
228
|
-
* @example
|
|
229
|
-
* ```typescript
|
|
230
|
-
* messaging.onMessage().subscribe(notification => {
|
|
231
|
-
* // Mostrar banner custom
|
|
232
|
-
* this.showBanner(notification, () => {
|
|
233
|
-
* // Usuario hizo click en el banner
|
|
234
|
-
* messaging.handleNotificationClick(notification);
|
|
235
|
-
* });
|
|
236
|
-
* });
|
|
237
|
-
* ```
|
|
238
|
-
*/
|
|
239
|
-
handleNotificationClick(notification: NotificationPayload): void;
|
|
240
|
-
/**
|
|
241
|
-
* Verifica si una notificación tiene acción de navegación.
|
|
242
|
-
*
|
|
243
|
-
* @param data - Datos del payload
|
|
244
|
-
* @returns true si tiene route o url
|
|
245
|
-
*/
|
|
246
|
-
hasNavigationAction(data?: Record<string, string>): boolean;
|
|
247
|
-
/**
|
|
248
|
-
* Parsea un query string en un objeto.
|
|
249
|
-
*/
|
|
250
|
-
private parseQueryString;
|
|
251
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MessagingService, never>;
|
|
252
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<MessagingService>;
|
|
253
|
-
}
|
|
254
|
-
export {};
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { StorageListResult, StorageMetadata, UploadProgress, UploadResult } from './types';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Servicio para Firebase Storage.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* @Component({...})
|
|
10
|
-
* export class FileUploadComponent {
|
|
11
|
-
* private storage = inject(StorageService);
|
|
12
|
-
*
|
|
13
|
-
* uploadProgress = signal<number>(0);
|
|
14
|
-
* downloadUrl = signal<string | null>(null);
|
|
15
|
-
*
|
|
16
|
-
* async onFileSelected(event: Event) {
|
|
17
|
-
* const file = (event.target as HTMLInputElement).files?.[0];
|
|
18
|
-
* if (!file) return;
|
|
19
|
-
*
|
|
20
|
-
* // Upload con progreso
|
|
21
|
-
* this.storage.upload(`uploads/${file.name}`, file).subscribe({
|
|
22
|
-
* next: (progress) => this.uploadProgress.set(progress.percentage),
|
|
23
|
-
* complete: async () => {
|
|
24
|
-
* const url = await this.storage.getDownloadUrl(`uploads/${file.name}`);
|
|
25
|
-
* this.downloadUrl.set(url);
|
|
26
|
-
* }
|
|
27
|
-
* });
|
|
28
|
-
* }
|
|
29
|
-
* }
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
export declare class StorageService {
|
|
33
|
-
private storage;
|
|
34
|
-
/**
|
|
35
|
-
* Sube un archivo con tracking de progreso.
|
|
36
|
-
*
|
|
37
|
-
* @param path - Ruta en Storage donde guardar el archivo
|
|
38
|
-
* @param file - Archivo a subir (File o Blob)
|
|
39
|
-
* @param metadata - Metadata opcional (contentType, customMetadata)
|
|
40
|
-
* @returns Observable que emite el progreso y completa cuando termina
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```typescript
|
|
44
|
-
* // Upload básico
|
|
45
|
-
* storage.upload('images/photo.jpg', file).subscribe({
|
|
46
|
-
* next: (progress) => console.log(`${progress.percentage}%`),
|
|
47
|
-
* complete: () => console.log('Upload completado')
|
|
48
|
-
* });
|
|
49
|
-
*
|
|
50
|
-
* // Con metadata
|
|
51
|
-
* storage.upload('docs/report.pdf', file, {
|
|
52
|
-
* contentType: 'application/pdf',
|
|
53
|
-
* customMetadata: { uploadedBy: 'user123' }
|
|
54
|
-
* }).subscribe(...);
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
upload(path: string, file: File | Blob, metadata?: StorageMetadata): Observable<UploadProgress>;
|
|
58
|
-
/**
|
|
59
|
-
* Sube un archivo y retorna la URL de descarga al completar.
|
|
60
|
-
*
|
|
61
|
-
* @param path - Ruta en Storage
|
|
62
|
-
* @param file - Archivo a subir
|
|
63
|
-
* @param metadata - Metadata opcional
|
|
64
|
-
* @returns Resultado del upload con URL de descarga
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* ```typescript
|
|
68
|
-
* const result = await storage.uploadAndGetUrl('avatars/user123.jpg', file);
|
|
69
|
-
* console.log('URL:', result.downloadUrl);
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
uploadAndGetUrl(path: string, file: File | Blob, metadata?: StorageMetadata): Promise<UploadResult>;
|
|
73
|
-
/**
|
|
74
|
-
* Sube un archivo desde una Data URL (base64).
|
|
75
|
-
*
|
|
76
|
-
* @param path - Ruta en Storage
|
|
77
|
-
* @param dataUrl - Data URL (ej: 'data:image/png;base64,...')
|
|
78
|
-
* @param metadata - Metadata opcional
|
|
79
|
-
* @returns Resultado del upload
|
|
80
|
-
*
|
|
81
|
-
* @example
|
|
82
|
-
* ```typescript
|
|
83
|
-
* // Desde canvas
|
|
84
|
-
* const dataUrl = canvas.toDataURL('image/png');
|
|
85
|
-
* const result = await storage.uploadFromDataUrl('images/drawing.png', dataUrl);
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
uploadFromDataUrl(path: string, dataUrl: string, metadata?: StorageMetadata): Promise<UploadResult>;
|
|
89
|
-
/**
|
|
90
|
-
* Obtiene la URL de descarga de un archivo.
|
|
91
|
-
*
|
|
92
|
-
* @param path - Ruta del archivo en Storage
|
|
93
|
-
* @returns URL de descarga
|
|
94
|
-
*
|
|
95
|
-
* @example
|
|
96
|
-
* ```typescript
|
|
97
|
-
* const url = await storage.getDownloadUrl('images/photo.jpg');
|
|
98
|
-
* // Usar en <img [src]="url">
|
|
99
|
-
* ```
|
|
100
|
-
*/
|
|
101
|
-
getDownloadUrl(path: string): Promise<string>;
|
|
102
|
-
/**
|
|
103
|
-
* Obtiene la metadata de un archivo.
|
|
104
|
-
*
|
|
105
|
-
* @param path - Ruta del archivo
|
|
106
|
-
* @returns Metadata del archivo
|
|
107
|
-
*/
|
|
108
|
-
getMetadata(path: string): Promise<StorageMetadata & {
|
|
109
|
-
size: number;
|
|
110
|
-
name: string;
|
|
111
|
-
}>;
|
|
112
|
-
/**
|
|
113
|
-
* Elimina un archivo.
|
|
114
|
-
*
|
|
115
|
-
* @param path - Ruta del archivo a eliminar
|
|
116
|
-
*
|
|
117
|
-
* @example
|
|
118
|
-
* ```typescript
|
|
119
|
-
* await storage.delete('images/old-photo.jpg');
|
|
120
|
-
* ```
|
|
121
|
-
*/
|
|
122
|
-
delete(path: string): Promise<void>;
|
|
123
|
-
/**
|
|
124
|
-
* Elimina múltiples archivos.
|
|
125
|
-
*
|
|
126
|
-
* @param paths - Array de rutas a eliminar
|
|
127
|
-
*
|
|
128
|
-
* @example
|
|
129
|
-
* ```typescript
|
|
130
|
-
* await storage.deleteMultiple([
|
|
131
|
-
* 'images/photo1.jpg',
|
|
132
|
-
* 'images/photo2.jpg'
|
|
133
|
-
* ]);
|
|
134
|
-
* ```
|
|
135
|
-
*/
|
|
136
|
-
deleteMultiple(paths: string[]): Promise<void>;
|
|
137
|
-
/**
|
|
138
|
-
* Lista archivos en un directorio.
|
|
139
|
-
*
|
|
140
|
-
* @param path - Ruta del directorio
|
|
141
|
-
* @returns Lista de rutas de archivos
|
|
142
|
-
*
|
|
143
|
-
* @example
|
|
144
|
-
* ```typescript
|
|
145
|
-
* const result = await storage.list('images/');
|
|
146
|
-
* console.log(result.items); // ['images/photo1.jpg', 'images/photo2.jpg']
|
|
147
|
-
* ```
|
|
148
|
-
*/
|
|
149
|
-
list(path: string): Promise<StorageListResult>;
|
|
150
|
-
/**
|
|
151
|
-
* Genera un nombre de archivo único con timestamp.
|
|
152
|
-
*
|
|
153
|
-
* @param originalName - Nombre original del archivo
|
|
154
|
-
* @param prefix - Prefijo opcional
|
|
155
|
-
* @returns Nombre único
|
|
156
|
-
*
|
|
157
|
-
* @example
|
|
158
|
-
* ```typescript
|
|
159
|
-
* const uniqueName = storage.generateFileName('photo.jpg', 'user123');
|
|
160
|
-
* // => 'user123_1703091234567_photo.jpg'
|
|
161
|
-
* ```
|
|
162
|
-
*/
|
|
163
|
-
generateFileName(originalName: string, prefix?: string): string;
|
|
164
|
-
/**
|
|
165
|
-
* Genera una ruta única para un archivo.
|
|
166
|
-
*
|
|
167
|
-
* @param directory - Directorio base
|
|
168
|
-
* @param originalName - Nombre original
|
|
169
|
-
* @param prefix - Prefijo opcional
|
|
170
|
-
* @returns Ruta completa única
|
|
171
|
-
*
|
|
172
|
-
* @example
|
|
173
|
-
* ```typescript
|
|
174
|
-
* const path = storage.generatePath('uploads', 'photo.jpg', 'user123');
|
|
175
|
-
* // => 'uploads/user123_1703091234567_photo.jpg'
|
|
176
|
-
* ```
|
|
177
|
-
*/
|
|
178
|
-
generatePath(directory: string, originalName: string, prefix?: string): string;
|
|
179
|
-
/**
|
|
180
|
-
* Obtiene la extensión de un archivo.
|
|
181
|
-
*
|
|
182
|
-
* @param filename - Nombre del archivo
|
|
183
|
-
* @returns Extensión (sin el punto)
|
|
184
|
-
*/
|
|
185
|
-
getExtension(filename: string): string;
|
|
186
|
-
/**
|
|
187
|
-
* Verifica si un archivo es una imagen basándose en su extensión.
|
|
188
|
-
*/
|
|
189
|
-
isImage(filename: string): boolean;
|
|
190
|
-
/**
|
|
191
|
-
* Verifica si un archivo es un documento.
|
|
192
|
-
*/
|
|
193
|
-
isDocument(filename: string): boolean;
|
|
194
|
-
/**
|
|
195
|
-
* Mapea el estado de la tarea de upload
|
|
196
|
-
*/
|
|
197
|
-
private mapTaskState;
|
|
198
|
-
/**
|
|
199
|
-
* Convierte errores de Storage a mensajes en español
|
|
200
|
-
*/
|
|
201
|
-
private getErrorMessage;
|
|
202
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<StorageService, never>;
|
|
203
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<StorageService>;
|
|
204
|
-
}
|