valtech-components 2.0.417 → 2.0.418
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 -1
- 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,281 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Firebase Types
|
|
3
|
-
*
|
|
4
|
-
* Tipos e interfaces para la integración de Firebase en valtech-components.
|
|
5
|
-
* Todos los modelos de Firestore deben extender FirestoreDocument.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Configuración de Firebase (valores de firebaseConfig)
|
|
9
|
-
*/
|
|
10
|
-
export interface FirebaseConfig {
|
|
11
|
-
apiKey: string;
|
|
12
|
-
authDomain: string;
|
|
13
|
-
projectId: string;
|
|
14
|
-
storageBucket: string;
|
|
15
|
-
messagingSenderId: string;
|
|
16
|
-
appId: string;
|
|
17
|
-
measurementId?: string;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Configuración de emuladores para desarrollo local
|
|
21
|
-
*/
|
|
22
|
-
export interface EmulatorConfig {
|
|
23
|
-
firestore?: {
|
|
24
|
-
host: string;
|
|
25
|
-
port: number;
|
|
26
|
-
};
|
|
27
|
-
auth?: {
|
|
28
|
-
host: string;
|
|
29
|
-
port: number;
|
|
30
|
-
};
|
|
31
|
-
storage?: {
|
|
32
|
-
host: string;
|
|
33
|
-
port: number;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Configuración completa de Valtech Firebase
|
|
38
|
-
*/
|
|
39
|
-
export interface ValtechFirebaseConfig {
|
|
40
|
-
/** Configuración de Firebase */
|
|
41
|
-
firebase: FirebaseConfig;
|
|
42
|
-
/** Configuración de emuladores (opcional, para desarrollo) */
|
|
43
|
-
emulator?: EmulatorConfig;
|
|
44
|
-
/** Habilitar persistencia offline de Firestore (default: false) */
|
|
45
|
-
persistence?: boolean;
|
|
46
|
-
/** Habilitar Firebase Cloud Messaging (default: false) - requiere Service Worker */
|
|
47
|
-
enableMessaging?: boolean;
|
|
48
|
-
/** VAPID key para Firebase Cloud Messaging */
|
|
49
|
-
messagingVapidKey?: string;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Interface base para todos los documentos de Firestore.
|
|
53
|
-
* Todos los modelos deben extender esta interface.
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* interface User extends FirestoreDocument {
|
|
57
|
-
* name: string;
|
|
58
|
-
* email: string;
|
|
59
|
-
* }
|
|
60
|
-
*/
|
|
61
|
-
export interface FirestoreDocument {
|
|
62
|
-
/** ID del documento (asignado por Firestore) */
|
|
63
|
-
id?: string;
|
|
64
|
-
/** Fecha de creación (manejada automáticamente) */
|
|
65
|
-
createdAt?: Date;
|
|
66
|
-
/** Fecha de última actualización (manejada automáticamente) */
|
|
67
|
-
updatedAt?: Date;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Operadores disponibles para cláusulas where
|
|
71
|
-
*/
|
|
72
|
-
export type WhereOperator = '==' | '!=' | '<' | '<=' | '>' | '>=' | 'array-contains' | 'array-contains-any' | 'in' | 'not-in';
|
|
73
|
-
/**
|
|
74
|
-
* Cláusula where para filtrar documentos
|
|
75
|
-
*/
|
|
76
|
-
export interface WhereClause {
|
|
77
|
-
/** Campo a filtrar */
|
|
78
|
-
field: string;
|
|
79
|
-
/** Operador de comparación */
|
|
80
|
-
operator: WhereOperator;
|
|
81
|
-
/** Valor a comparar */
|
|
82
|
-
value: unknown;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Dirección de ordenamiento
|
|
86
|
-
*/
|
|
87
|
-
export type OrderDirection = 'asc' | 'desc';
|
|
88
|
-
/**
|
|
89
|
-
* Cláusula orderBy para ordenar resultados
|
|
90
|
-
*/
|
|
91
|
-
export interface OrderByClause {
|
|
92
|
-
/** Campo por el cual ordenar */
|
|
93
|
-
field: string;
|
|
94
|
-
/** Dirección del ordenamiento */
|
|
95
|
-
direction: OrderDirection;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Opciones para queries de Firestore
|
|
99
|
-
*/
|
|
100
|
-
export interface QueryOptions {
|
|
101
|
-
/** Filtros where (AND entre todos) */
|
|
102
|
-
where?: WhereClause[];
|
|
103
|
-
/** Ordenamiento de resultados */
|
|
104
|
-
orderBy?: OrderByClause[];
|
|
105
|
-
/** Límite de documentos a retornar */
|
|
106
|
-
limit?: number;
|
|
107
|
-
/** Cursor para paginación: empezar después de este documento */
|
|
108
|
-
startAfter?: unknown;
|
|
109
|
-
/** Cursor para paginación: empezar en este documento */
|
|
110
|
-
startAt?: unknown;
|
|
111
|
-
/** Cursor para paginación: terminar antes de este documento */
|
|
112
|
-
endBefore?: unknown;
|
|
113
|
-
/** Cursor para paginación: terminar en este documento */
|
|
114
|
-
endAt?: unknown;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Opciones adicionales para subscripciones real-time
|
|
118
|
-
*/
|
|
119
|
-
export interface SubscriptionOptions extends QueryOptions {
|
|
120
|
-
/** Incluir cambios de metadata (ej: pendingWrites) */
|
|
121
|
-
includeMetadataChanges?: boolean;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Resultado de una query paginada
|
|
125
|
-
*/
|
|
126
|
-
export interface PaginatedResult<T> {
|
|
127
|
-
/** Documentos de la página actual */
|
|
128
|
-
data: T[];
|
|
129
|
-
/** Indica si hay más páginas disponibles */
|
|
130
|
-
hasMore: boolean;
|
|
131
|
-
/** Cursor para la siguiente página (pasar a startAfter) */
|
|
132
|
-
lastDoc: unknown;
|
|
133
|
-
/** Total de documentos (opcional, requiere query adicional) */
|
|
134
|
-
total?: number;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Estado de una operación de upload
|
|
138
|
-
*/
|
|
139
|
-
export type UploadState = 'running' | 'paused' | 'success' | 'canceled' | 'error';
|
|
140
|
-
/**
|
|
141
|
-
* Progreso de upload de archivo
|
|
142
|
-
*/
|
|
143
|
-
export interface UploadProgress {
|
|
144
|
-
/** Bytes transferidos hasta ahora */
|
|
145
|
-
bytesTransferred: number;
|
|
146
|
-
/** Total de bytes a transferir */
|
|
147
|
-
totalBytes: number;
|
|
148
|
-
/** Porcentaje completado (0-100) */
|
|
149
|
-
percentage: number;
|
|
150
|
-
/** Estado actual del upload */
|
|
151
|
-
state: UploadState;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Resultado de un upload completado
|
|
155
|
-
*/
|
|
156
|
-
export interface UploadResult {
|
|
157
|
-
/** URL de descarga del archivo */
|
|
158
|
-
downloadUrl: string;
|
|
159
|
-
/** Ruta completa en Storage */
|
|
160
|
-
fullPath: string;
|
|
161
|
-
/** Nombre del archivo */
|
|
162
|
-
name: string;
|
|
163
|
-
/** Tamaño en bytes */
|
|
164
|
-
size: number;
|
|
165
|
-
/** Tipo MIME del archivo */
|
|
166
|
-
contentType: string;
|
|
167
|
-
/** Metadata personalizada */
|
|
168
|
-
metadata: Record<string, string>;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Metadata para archivos en Storage
|
|
172
|
-
*/
|
|
173
|
-
export interface StorageMetadata {
|
|
174
|
-
/** Tipo MIME del archivo */
|
|
175
|
-
contentType?: string;
|
|
176
|
-
/** Metadata personalizada (key-value) */
|
|
177
|
-
customMetadata?: Record<string, string>;
|
|
178
|
-
/** Control de caché HTTP */
|
|
179
|
-
cacheControl?: string;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Resultado de listar archivos en Storage
|
|
183
|
-
*/
|
|
184
|
-
export interface StorageListResult {
|
|
185
|
-
/** Rutas de los archivos encontrados */
|
|
186
|
-
items: string[];
|
|
187
|
-
/** Token para la siguiente página (si hay más) */
|
|
188
|
-
nextPageToken?: string;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Información del usuario de Firebase (simplificada)
|
|
192
|
-
*/
|
|
193
|
-
export interface FirebaseUser {
|
|
194
|
-
/** UID único del usuario */
|
|
195
|
-
uid: string;
|
|
196
|
-
/** Email del usuario */
|
|
197
|
-
email: string | null;
|
|
198
|
-
/** Nombre para mostrar */
|
|
199
|
-
displayName: string | null;
|
|
200
|
-
/** URL de foto de perfil */
|
|
201
|
-
photoURL: string | null;
|
|
202
|
-
/** Email verificado */
|
|
203
|
-
emailVerified: boolean;
|
|
204
|
-
/** Usuario anónimo */
|
|
205
|
-
isAnonymous: boolean;
|
|
206
|
-
/** Proveedor de autenticación */
|
|
207
|
-
providerId: string;
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Estado de la sesión de Firebase
|
|
211
|
-
*/
|
|
212
|
-
export interface SessionState {
|
|
213
|
-
/** Usuario actual (null si no autenticado) */
|
|
214
|
-
user: FirebaseUser | null;
|
|
215
|
-
/** Indica si el usuario está autenticado */
|
|
216
|
-
isAuthenticated: boolean;
|
|
217
|
-
/** Indica si se está cargando el estado de auth */
|
|
218
|
-
isLoading: boolean;
|
|
219
|
-
/** Error de autenticación (si lo hay) */
|
|
220
|
-
error: Error | null;
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Estado del permiso de notificaciones
|
|
224
|
-
*/
|
|
225
|
-
export type NotificationPermission = 'granted' | 'denied' | 'default';
|
|
226
|
-
/**
|
|
227
|
-
* Payload de una notificación push
|
|
228
|
-
*/
|
|
229
|
-
export interface NotificationPayload {
|
|
230
|
-
/** Título de la notificación */
|
|
231
|
-
title?: string;
|
|
232
|
-
/** Cuerpo del mensaje */
|
|
233
|
-
body?: string;
|
|
234
|
-
/** URL de imagen */
|
|
235
|
-
image?: string;
|
|
236
|
-
/** Datos personalizados */
|
|
237
|
-
data?: Record<string, string>;
|
|
238
|
-
/** ID del mensaje de FCM */
|
|
239
|
-
messageId?: string;
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Acción de navegación desde una notificación
|
|
243
|
-
*/
|
|
244
|
-
export interface NotificationAction {
|
|
245
|
-
/** Ruta interna de la app (ej: '/orders/123') */
|
|
246
|
-
route?: string;
|
|
247
|
-
/** URL externa (ej: 'https://example.com') */
|
|
248
|
-
url?: string;
|
|
249
|
-
/** Parámetros de query string */
|
|
250
|
-
queryParams?: Record<string, string>;
|
|
251
|
-
/** Tipo de acción personalizada */
|
|
252
|
-
actionType?: string;
|
|
253
|
-
/** Datos adicionales para la acción */
|
|
254
|
-
actionData?: Record<string, unknown>;
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Evento de click en una notificación
|
|
258
|
-
*/
|
|
259
|
-
export interface NotificationClickEvent {
|
|
260
|
-
/** Payload original de la notificación */
|
|
261
|
-
notification: NotificationPayload;
|
|
262
|
-
/** Acción de navegación extraída */
|
|
263
|
-
action: NotificationAction;
|
|
264
|
-
/** Timestamp del click */
|
|
265
|
-
timestamp: Date;
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Códigos de error de Firebase
|
|
269
|
-
*/
|
|
270
|
-
export type FirebaseErrorCode = 'permission-denied' | 'not-found' | 'already-exists' | 'resource-exhausted' | 'cancelled' | 'unknown' | 'invalid-argument' | 'deadline-exceeded' | 'unauthenticated';
|
|
271
|
-
/**
|
|
272
|
-
* Error de Firebase tipado
|
|
273
|
-
*/
|
|
274
|
-
export interface FirebaseError {
|
|
275
|
-
/** Código del error */
|
|
276
|
-
code: FirebaseErrorCode;
|
|
277
|
-
/** Mensaje de error (en español) */
|
|
278
|
-
message: string;
|
|
279
|
-
/** Error original de Firebase */
|
|
280
|
-
originalError?: unknown;
|
|
281
|
-
}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Path Builder
|
|
3
|
-
*
|
|
4
|
-
* Utilidades para construir rutas de Firestore con templates.
|
|
5
|
-
* Soporta rutas multi-nivel y anidadas.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Construye una ruta de Firestore reemplazando placeholders.
|
|
9
|
-
*
|
|
10
|
-
* @param template - Template con placeholders en formato {param}
|
|
11
|
-
* @param params - Objeto con los valores a reemplazar
|
|
12
|
-
* @returns Ruta construida
|
|
13
|
-
* @throws Error si faltan parámetros requeridos
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* // Ruta simple
|
|
18
|
-
* buildPath('users/{userId}', { userId: 'abc123' });
|
|
19
|
-
* // => 'users/abc123'
|
|
20
|
-
*
|
|
21
|
-
* // Ruta anidada
|
|
22
|
-
* buildPath('users/{userId}/documents/{docId}', {
|
|
23
|
-
* userId: 'abc123',
|
|
24
|
-
* docId: 'doc456'
|
|
25
|
-
* });
|
|
26
|
-
* // => 'users/abc123/documents/doc456'
|
|
27
|
-
*
|
|
28
|
-
* // Múltiples niveles
|
|
29
|
-
* buildPath('orgs/{orgId}/teams/{teamId}/members/{memberId}', {
|
|
30
|
-
* orgId: 'org1',
|
|
31
|
-
* teamId: 'team2',
|
|
32
|
-
* memberId: 'member3'
|
|
33
|
-
* });
|
|
34
|
-
* // => 'orgs/org1/teams/team2/members/member3'
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
export declare function buildPath(template: string, params: Record<string, string>): string;
|
|
38
|
-
/**
|
|
39
|
-
* Extrae los nombres de los parámetros de un template de ruta.
|
|
40
|
-
*
|
|
41
|
-
* @param template - Template de ruta
|
|
42
|
-
* @returns Array con los nombres de los parámetros
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
* ```typescript
|
|
46
|
-
* extractParams('users/{userId}/documents/{docId}');
|
|
47
|
-
* // => ['userId', 'docId']
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
export declare function extractPathParams(template: string): string[];
|
|
51
|
-
/**
|
|
52
|
-
* Valida que una ruta de Firestore sea válida.
|
|
53
|
-
*
|
|
54
|
-
* @param path - Ruta a validar
|
|
55
|
-
* @returns true si la ruta es válida
|
|
56
|
-
*
|
|
57
|
-
* @example
|
|
58
|
-
* ```typescript
|
|
59
|
-
* isValidPath('users/abc123'); // true
|
|
60
|
-
* isValidPath('users/abc123/documents'); // true
|
|
61
|
-
* isValidPath('users//documents'); // false (segmento vacío)
|
|
62
|
-
* isValidPath(''); // false (vacío)
|
|
63
|
-
* ```
|
|
64
|
-
*/
|
|
65
|
-
export declare function isValidPath(path: string): boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Obtiene la ruta de la colección padre de un documento.
|
|
68
|
-
*
|
|
69
|
-
* @param documentPath - Ruta completa del documento
|
|
70
|
-
* @returns Ruta de la colección padre
|
|
71
|
-
*
|
|
72
|
-
* @example
|
|
73
|
-
* ```typescript
|
|
74
|
-
* getCollectionPath('users/abc123');
|
|
75
|
-
* // => 'users'
|
|
76
|
-
*
|
|
77
|
-
* getCollectionPath('users/abc123/documents/doc456');
|
|
78
|
-
* // => 'users/abc123/documents'
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
export declare function getCollectionPath(documentPath: string): string;
|
|
82
|
-
/**
|
|
83
|
-
* Obtiene el ID del documento de una ruta.
|
|
84
|
-
*
|
|
85
|
-
* @param documentPath - Ruta completa del documento
|
|
86
|
-
* @returns ID del documento
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```typescript
|
|
90
|
-
* getDocumentId('users/abc123');
|
|
91
|
-
* // => 'abc123'
|
|
92
|
-
*
|
|
93
|
-
* getDocumentId('users/abc123/documents/doc456');
|
|
94
|
-
* // => 'doc456'
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
export declare function getDocumentId(documentPath: string): string;
|
|
98
|
-
/**
|
|
99
|
-
* Verifica si una ruta apunta a un documento (número par de segmentos).
|
|
100
|
-
*
|
|
101
|
-
* @param path - Ruta a verificar
|
|
102
|
-
* @returns true si es una ruta de documento
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* ```typescript
|
|
106
|
-
* isDocumentPath('users/abc123'); // true
|
|
107
|
-
* isDocumentPath('users'); // false (colección)
|
|
108
|
-
* isDocumentPath('users/abc123/documents'); // false (colección)
|
|
109
|
-
* ```
|
|
110
|
-
*/
|
|
111
|
-
export declare function isDocumentPath(path: string): boolean;
|
|
112
|
-
/**
|
|
113
|
-
* Verifica si una ruta apunta a una colección (número impar de segmentos).
|
|
114
|
-
*
|
|
115
|
-
* @param path - Ruta a verificar
|
|
116
|
-
* @returns true si es una ruta de colección
|
|
117
|
-
*/
|
|
118
|
-
export declare function isCollectionPath(path: string): boolean;
|
|
119
|
-
/**
|
|
120
|
-
* Combina una ruta base con segmentos adicionales.
|
|
121
|
-
*
|
|
122
|
-
* @param basePath - Ruta base
|
|
123
|
-
* @param segments - Segmentos adicionales
|
|
124
|
-
* @returns Ruta combinada
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* ```typescript
|
|
128
|
-
* joinPath('users', 'abc123', 'documents');
|
|
129
|
-
* // => 'users/abc123/documents'
|
|
130
|
-
* ```
|
|
131
|
-
*/
|
|
132
|
-
export declare function joinPath(...segments: string[]): string;
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Query Builder
|
|
3
|
-
*
|
|
4
|
-
* Builder fluido para construir queries de Firestore de manera legible.
|
|
5
|
-
* Alternativa más expresiva a pasar objetos QueryOptions directamente.
|
|
6
|
-
*/
|
|
7
|
-
import { OrderDirection, QueryOptions, WhereOperator } from '../types';
|
|
8
|
-
/**
|
|
9
|
-
* Builder fluido para queries de Firestore.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* // Construir query con builder
|
|
14
|
-
* const options = new QueryBuilder()
|
|
15
|
-
* .where('status', '==', 'active')
|
|
16
|
-
* .where('age', '>=', 18)
|
|
17
|
-
* .orderBy('createdAt', 'desc')
|
|
18
|
-
* .limit(10)
|
|
19
|
-
* .build();
|
|
20
|
-
*
|
|
21
|
-
* // Usar con FirestoreService
|
|
22
|
-
* const users = await firestoreService.getDocs<User>('users', options);
|
|
23
|
-
*
|
|
24
|
-
* // O con método estático
|
|
25
|
-
* const options2 = QueryBuilder.create()
|
|
26
|
-
* .where('category', '==', 'electronics')
|
|
27
|
-
* .orderBy('price', 'asc')
|
|
28
|
-
* .build();
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
export declare class QueryBuilder {
|
|
32
|
-
private whereConditions;
|
|
33
|
-
private orderByConditions;
|
|
34
|
-
private limitValue?;
|
|
35
|
-
private startAfterValue?;
|
|
36
|
-
private startAtValue?;
|
|
37
|
-
private endBeforeValue?;
|
|
38
|
-
private endAtValue?;
|
|
39
|
-
/**
|
|
40
|
-
* Crea una nueva instancia del builder (método estático alternativo).
|
|
41
|
-
*/
|
|
42
|
-
static create(): QueryBuilder;
|
|
43
|
-
/**
|
|
44
|
-
* Agrega una condición where.
|
|
45
|
-
*
|
|
46
|
-
* @param field - Campo a filtrar
|
|
47
|
-
* @param operator - Operador de comparación
|
|
48
|
-
* @param value - Valor a comparar
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```typescript
|
|
52
|
-
* builder.where('status', '==', 'active')
|
|
53
|
-
* builder.where('price', '>=', 100)
|
|
54
|
-
* builder.where('tags', 'array-contains', 'featured')
|
|
55
|
-
* builder.where('category', 'in', ['electronics', 'books'])
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
where(field: string, operator: WhereOperator, value: unknown): QueryBuilder;
|
|
59
|
-
/**
|
|
60
|
-
* Shortcut para where con operador '=='.
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```typescript
|
|
64
|
-
* builder.whereEquals('status', 'active')
|
|
65
|
-
* // equivalente a: builder.where('status', '==', 'active')
|
|
66
|
-
* ```
|
|
67
|
-
*/
|
|
68
|
-
whereEquals(field: string, value: unknown): QueryBuilder;
|
|
69
|
-
/**
|
|
70
|
-
* Shortcut para where con operador '!='.
|
|
71
|
-
*/
|
|
72
|
-
whereNotEquals(field: string, value: unknown): QueryBuilder;
|
|
73
|
-
/**
|
|
74
|
-
* Shortcut para where con operador '>'.
|
|
75
|
-
*/
|
|
76
|
-
whereGreaterThan(field: string, value: unknown): QueryBuilder;
|
|
77
|
-
/**
|
|
78
|
-
* Shortcut para where con operador '>='.
|
|
79
|
-
*/
|
|
80
|
-
whereGreaterOrEqual(field: string, value: unknown): QueryBuilder;
|
|
81
|
-
/**
|
|
82
|
-
* Shortcut para where con operador '<'.
|
|
83
|
-
*/
|
|
84
|
-
whereLessThan(field: string, value: unknown): QueryBuilder;
|
|
85
|
-
/**
|
|
86
|
-
* Shortcut para where con operador '<='.
|
|
87
|
-
*/
|
|
88
|
-
whereLessOrEqual(field: string, value: unknown): QueryBuilder;
|
|
89
|
-
/**
|
|
90
|
-
* Shortcut para where con operador 'array-contains'.
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* ```typescript
|
|
94
|
-
* builder.whereArrayContains('tags', 'featured')
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
whereArrayContains(field: string, value: unknown): QueryBuilder;
|
|
98
|
-
/**
|
|
99
|
-
* Shortcut para where con operador 'array-contains-any'.
|
|
100
|
-
*
|
|
101
|
-
* @example
|
|
102
|
-
* ```typescript
|
|
103
|
-
* builder.whereArrayContainsAny('tags', ['featured', 'new'])
|
|
104
|
-
* ```
|
|
105
|
-
*/
|
|
106
|
-
whereArrayContainsAny(field: string, values: unknown[]): QueryBuilder;
|
|
107
|
-
/**
|
|
108
|
-
* Shortcut para where con operador 'in'.
|
|
109
|
-
*
|
|
110
|
-
* @example
|
|
111
|
-
* ```typescript
|
|
112
|
-
* builder.whereIn('status', ['active', 'pending'])
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
whereIn(field: string, values: unknown[]): QueryBuilder;
|
|
116
|
-
/**
|
|
117
|
-
* Shortcut para where con operador 'not-in'.
|
|
118
|
-
*/
|
|
119
|
-
whereNotIn(field: string, values: unknown[]): QueryBuilder;
|
|
120
|
-
/**
|
|
121
|
-
* Agrega ordenamiento por un campo.
|
|
122
|
-
*
|
|
123
|
-
* @param field - Campo por el cual ordenar
|
|
124
|
-
* @param direction - Dirección: 'asc' o 'desc' (default: 'asc')
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* ```typescript
|
|
128
|
-
* builder.orderBy('createdAt', 'desc')
|
|
129
|
-
* builder.orderBy('name') // asc por defecto
|
|
130
|
-
* ```
|
|
131
|
-
*/
|
|
132
|
-
orderBy(field: string, direction?: OrderDirection): QueryBuilder;
|
|
133
|
-
/**
|
|
134
|
-
* Shortcut para orderBy descendente.
|
|
135
|
-
*/
|
|
136
|
-
orderByDesc(field: string): QueryBuilder;
|
|
137
|
-
/**
|
|
138
|
-
* Shortcut para orderBy ascendente.
|
|
139
|
-
*/
|
|
140
|
-
orderByAsc(field: string): QueryBuilder;
|
|
141
|
-
/**
|
|
142
|
-
* Limita el número de resultados.
|
|
143
|
-
*
|
|
144
|
-
* @param count - Número máximo de documentos
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ```typescript
|
|
148
|
-
* builder.limit(10)
|
|
149
|
-
* ```
|
|
150
|
-
*/
|
|
151
|
-
limit(count: number): QueryBuilder;
|
|
152
|
-
/**
|
|
153
|
-
* Cursor para paginación: empezar después de un documento.
|
|
154
|
-
*
|
|
155
|
-
* @param cursor - Documento o snapshot desde donde continuar
|
|
156
|
-
*
|
|
157
|
-
* @example
|
|
158
|
-
* ```typescript
|
|
159
|
-
* // Primera página
|
|
160
|
-
* const page1 = await service.getPaginated('users', builder.limit(10).build());
|
|
161
|
-
*
|
|
162
|
-
* // Siguiente página
|
|
163
|
-
* const page2 = await service.getPaginated('users',
|
|
164
|
-
* builder.startAfter(page1.lastDoc).limit(10).build()
|
|
165
|
-
* );
|
|
166
|
-
* ```
|
|
167
|
-
*/
|
|
168
|
-
startAfter(cursor: unknown): QueryBuilder;
|
|
169
|
-
/**
|
|
170
|
-
* Cursor para paginación: empezar en un documento.
|
|
171
|
-
*/
|
|
172
|
-
startAt(cursor: unknown): QueryBuilder;
|
|
173
|
-
/**
|
|
174
|
-
* Cursor para paginación: terminar antes de un documento.
|
|
175
|
-
*/
|
|
176
|
-
endBefore(cursor: unknown): QueryBuilder;
|
|
177
|
-
/**
|
|
178
|
-
* Cursor para paginación: terminar en un documento.
|
|
179
|
-
*/
|
|
180
|
-
endAt(cursor: unknown): QueryBuilder;
|
|
181
|
-
/**
|
|
182
|
-
* Construye el objeto QueryOptions.
|
|
183
|
-
*
|
|
184
|
-
* @returns QueryOptions para usar con FirestoreService
|
|
185
|
-
*/
|
|
186
|
-
build(): QueryOptions;
|
|
187
|
-
/**
|
|
188
|
-
* Resetea el builder para reutilización.
|
|
189
|
-
*/
|
|
190
|
-
reset(): QueryBuilder;
|
|
191
|
-
/**
|
|
192
|
-
* Clona el builder actual.
|
|
193
|
-
*/
|
|
194
|
-
clone(): QueryBuilder;
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Función helper para crear un QueryBuilder.
|
|
198
|
-
*
|
|
199
|
-
* @example
|
|
200
|
-
* ```typescript
|
|
201
|
-
* import { query } from 'valtech-components';
|
|
202
|
-
*
|
|
203
|
-
* const options = query()
|
|
204
|
-
* .where('status', '==', 'active')
|
|
205
|
-
* .orderBy('createdAt', 'desc')
|
|
206
|
-
* .limit(10)
|
|
207
|
-
* .build();
|
|
208
|
-
* ```
|
|
209
|
-
*/
|
|
210
|
-
export declare function query(): QueryBuilder;
|