valtech-components 2.0.427 → 2.0.429

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.
Files changed (31) hide show
  1. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +49 -20
  2. package/esm2022/lib/components/molecules/glow-card/types.mjs +1 -1
  3. package/esm2022/lib/components/organisms/article/article.component.mjs +28 -3
  4. package/esm2022/lib/services/firebase/config.mjs +108 -0
  5. package/esm2022/lib/services/firebase/firebase.service.mjs +285 -0
  6. package/esm2022/lib/services/firebase/firestore-collection.mjs +266 -0
  7. package/esm2022/lib/services/firebase/firestore.service.mjs +508 -0
  8. package/esm2022/lib/services/firebase/index.mjs +46 -0
  9. package/esm2022/lib/services/firebase/messaging.service.mjs +503 -0
  10. package/esm2022/lib/services/firebase/storage.service.mjs +421 -0
  11. package/esm2022/lib/services/firebase/types.mjs +8 -0
  12. package/esm2022/lib/services/firebase/utils/path-builder.mjs +195 -0
  13. package/esm2022/lib/services/firebase/utils/query-builder.mjs +302 -0
  14. package/esm2022/public-api.mjs +3 -4
  15. package/fesm2022/valtech-components.mjs +2886 -230
  16. package/fesm2022/valtech-components.mjs.map +1 -1
  17. package/lib/components/molecules/glow-card/glow-card.component.d.ts +1 -0
  18. package/lib/components/molecules/glow-card/types.d.ts +7 -5
  19. package/lib/components/organisms/article/article.component.d.ts +6 -1
  20. package/lib/services/firebase/config.d.ts +49 -0
  21. package/lib/services/firebase/firebase.service.d.ts +140 -0
  22. package/lib/services/firebase/firestore-collection.d.ts +195 -0
  23. package/lib/services/firebase/firestore.service.d.ts +303 -0
  24. package/lib/services/firebase/index.d.ts +38 -0
  25. package/lib/services/firebase/messaging.service.d.ts +254 -0
  26. package/lib/services/firebase/storage.service.d.ts +204 -0
  27. package/lib/services/firebase/types.d.ts +281 -0
  28. package/lib/services/firebase/utils/path-builder.d.ts +132 -0
  29. package/lib/services/firebase/utils/query-builder.d.ts +210 -0
  30. package/package.json +3 -1
  31. package/public-api.d.ts +1 -0
@@ -0,0 +1,210 @@
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valtech-components",
3
- "version": "2.0.427",
3
+ "version": "2.0.429",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,8 +10,10 @@
10
10
  "peerDependencies": {
11
11
  "@angular/common": "^18.0.0",
12
12
  "@angular/core": "^18.0.0",
13
+ "@angular/fire": "^18.0.1",
13
14
  "@capacitor/clipboard": "^6.0.1",
14
15
  "@ionic/angular": "^8.0.0",
16
+ "firebase": "^10.0.0",
15
17
  "ionicons": "^7.2.1",
16
18
  "prismjs": "^1.30.0",
17
19
  "qr-code-styling": "^1.9.0",
package/public-api.d.ts CHANGED
@@ -210,6 +210,7 @@ export * from './lib/services/qr-generator/qr-generator.service';
210
210
  export * from './lib/services/qr-generator/types';
211
211
  export * from './lib/services/modal/modal.service';
212
212
  export * from './lib/services/modal/types';
213
+ export * from './lib/services/firebase';
213
214
  export * from './lib/components/types';
214
215
  export * from './lib/shared/pipes/process-links.pipe';
215
216
  export * from './lib/shared/utils/dom';