valtech-components 2.0.447 → 2.0.449
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/lib/services/firebase/firestore-collection.mjs +43 -55
- package/esm2022/lib/services/firebase/index.mjs +3 -2
- package/fesm2022/valtech-components.mjs +41 -54
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/services/firebase/firestore-collection.d.ts +37 -58
- package/lib/services/firebase/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,75 +1,64 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Firestore Collection
|
|
2
|
+
* Firestore Collection Factory
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Patrón factory para crear instancias de colección tipadas.
|
|
5
|
+
* Reemplaza la clase abstracta para evitar problemas con inject() en clases no-injectable.
|
|
6
6
|
*/
|
|
7
|
-
import { inject } from '@angular/core';
|
|
7
|
+
import { Injectable, inject } from '@angular/core';
|
|
8
8
|
import { FirestoreService } from './firestore.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* Extiende esta clase para crear un servicio dedicado para cada entidad,
|
|
13
|
-
* con métodos personalizados y tipado fuerte.
|
|
11
|
+
* Factory para crear instancias de colección tipadas.
|
|
14
12
|
*
|
|
15
13
|
* @example
|
|
16
14
|
* ```typescript
|
|
17
|
-
* // Definir el modelo
|
|
18
|
-
* interface User extends FirestoreDocument {
|
|
19
|
-
* name: string;
|
|
20
|
-
* email: string;
|
|
21
|
-
* role: 'admin' | 'user';
|
|
22
|
-
* active: boolean;
|
|
23
|
-
* }
|
|
24
|
-
*
|
|
25
|
-
* // Crear el servicio
|
|
26
15
|
* @Injectable({ providedIn: 'root' })
|
|
27
|
-
* export class
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
16
|
+
* export class UsersService {
|
|
17
|
+
* private users = inject(FirestoreCollectionFactory).create<User>('users');
|
|
18
|
+
*
|
|
19
|
+
* getAll = () => this.users.getAll();
|
|
20
|
+
* getById = (id: string) => this.users.getById(id);
|
|
21
|
+
* create = (data: Omit<User, 'id'>) => this.users.create(data);
|
|
31
22
|
*
|
|
32
23
|
* // Métodos personalizados
|
|
33
24
|
* async getActiveUsers(): Promise<User[]> {
|
|
34
|
-
* return this.query({
|
|
25
|
+
* return this.users.query({
|
|
35
26
|
* where: [{ field: 'active', operator: '==', value: true }]
|
|
36
27
|
* });
|
|
37
28
|
* }
|
|
38
|
-
*
|
|
39
|
-
* async getAdmins(): Promise<User[]> {
|
|
40
|
-
* return this.query({
|
|
41
|
-
* where: [{ field: 'role', operator: '==', value: 'admin' }]
|
|
42
|
-
* });
|
|
43
|
-
* }
|
|
44
|
-
*
|
|
45
|
-
* watchOnlineUsers(): Observable<User[]> {
|
|
46
|
-
* return this.watchQuery({
|
|
47
|
-
* where: [{ field: 'status', operator: '==', value: 'online' }]
|
|
48
|
-
* });
|
|
49
|
-
* }
|
|
50
|
-
* }
|
|
51
|
-
*
|
|
52
|
-
* // Usar en componentes
|
|
53
|
-
* @Component({...})
|
|
54
|
-
* export class UsersComponent {
|
|
55
|
-
* private users = inject(UsersCollection);
|
|
56
|
-
*
|
|
57
|
-
* admins$ = this.users.getAdmins();
|
|
58
|
-
* onlineUsers$ = this.users.watchOnlineUsers();
|
|
59
|
-
*
|
|
60
|
-
* async createUser(data: Omit<User, 'id'>) {
|
|
61
|
-
* const user = await this.users.create(data);
|
|
62
|
-
* }
|
|
63
29
|
* }
|
|
64
30
|
* ```
|
|
65
31
|
*/
|
|
66
|
-
export class
|
|
32
|
+
export class FirestoreCollectionFactory {
|
|
33
|
+
constructor() {
|
|
34
|
+
this.firestore = inject(FirestoreService);
|
|
35
|
+
}
|
|
67
36
|
/**
|
|
37
|
+
* Crea una instancia de colección tipada.
|
|
38
|
+
*
|
|
68
39
|
* @param collectionPath - Ruta de la colección en Firestore
|
|
69
40
|
* @param options - Opciones de configuración
|
|
41
|
+
* @returns Instancia de TypedCollection
|
|
70
42
|
*/
|
|
71
|
-
|
|
72
|
-
this.firestore
|
|
43
|
+
create(collectionPath, options) {
|
|
44
|
+
return new TypedCollection(this.firestore, collectionPath, options);
|
|
45
|
+
}
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FirestoreCollectionFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FirestoreCollectionFactory, providedIn: 'root' }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FirestoreCollectionFactory, decorators: [{
|
|
50
|
+
type: Injectable,
|
|
51
|
+
args: [{ providedIn: 'root' }]
|
|
52
|
+
}] });
|
|
53
|
+
/**
|
|
54
|
+
* Colección tipada con métodos CRUD.
|
|
55
|
+
*
|
|
56
|
+
* NO usa inject() - recibe FirestoreService por constructor.
|
|
57
|
+
* Esto evita el error NG0203.
|
|
58
|
+
*/
|
|
59
|
+
export class TypedCollection {
|
|
60
|
+
constructor(firestore, collectionPath, options = {}) {
|
|
61
|
+
this.firestore = firestore;
|
|
73
62
|
this.collectionPath = collectionPath;
|
|
74
63
|
this.options = {
|
|
75
64
|
softDelete: false,
|
|
@@ -208,9 +197,9 @@ export class FirestoreCollection {
|
|
|
208
197
|
*
|
|
209
198
|
* @example
|
|
210
199
|
* ```typescript
|
|
211
|
-
* // En
|
|
200
|
+
* // En UsersService
|
|
212
201
|
* getUserDocuments(userId: string) {
|
|
213
|
-
* return this.subcollection<Document>(userId, 'documents');
|
|
202
|
+
* return this.users.subcollection<Document>(userId, 'documents');
|
|
214
203
|
* }
|
|
215
204
|
*
|
|
216
205
|
* // Uso
|
|
@@ -230,11 +219,10 @@ export class FirestoreCollection {
|
|
|
230
219
|
};
|
|
231
220
|
}
|
|
232
221
|
// ===========================================================================
|
|
233
|
-
// MÉTODOS
|
|
222
|
+
// MÉTODOS PRIVADOS
|
|
234
223
|
// ===========================================================================
|
|
235
224
|
/**
|
|
236
225
|
* Aplica filtros por defecto a las queries.
|
|
237
|
-
* Override este método para agregar filtros globales (ej: excluir soft-deleted).
|
|
238
226
|
*/
|
|
239
227
|
applyDefaultFilters(options) {
|
|
240
228
|
if (!this.options.softDelete) {
|
|
@@ -263,4 +251,4 @@ export class FirestoreCollection {
|
|
|
263
251
|
return this.collectionPath;
|
|
264
252
|
}
|
|
265
253
|
}
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2ZpcmVzdG9yZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQWlDdkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0RHO0FBQ0gsTUFBTSxPQUFnQixtQkFBbUI7SUFLdkM7OztPQUdHO0lBQ0gsWUFBWSxjQUFzQixFQUFFLFVBQTZCLEVBQUU7UUFDakUsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUk7WUFDaEIsR0FBRyxPQUFPO1NBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsb0JBQW9CO0lBQ3BCLDhFQUE4RTtJQUU5RTs7T0FFRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUN0QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFzQjtRQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FB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QUM3QixPQUFPLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUVELDhDQUE4QztRQUM5QyxNQUFNLFdBQVcsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFakYsT0FBTztZQUNMLEdBQUcsT0FBTztZQUNWLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQztTQUNoRCxDQUFDO0lBQ0osQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxhQUFhO0lBQ2IsOEVBQThFO0lBRTlFOztPQUVHO0lBQ0gsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaXJlc3RvcmUgQ29sbGVjdGlvblxuICpcbiAqIENsYXNlIGJhc2UgYWJzdHJhY3RhIHBhcmEgY3JlYXIgc2VydmljaW9zIGRlIGNvbGVjY2nDs24gdGlwYWRvcy5cbiAqIEV4dGllbmRlIGVzdGEgY2xhc2UgcGFyYSB0ZW5lciB1biBzZXJ2aWNpbyBkZWRpY2FkbyBwb3IgZW50aWRhZC5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmlyZXN0b3JlU2VydmljZSB9IGZyb20gJy4vZmlyZXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlyZXN0b3JlRG9jdW1lbnQsIFBhZ2luYXRlZFJlc3VsdCwgUXVlcnlPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogT3BjaW9uZXMgZGUgY29uZmlndXJhY2nDs24gcGFyYSB1bmEgY29sZWNjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTaSB0cnVlLCB1c2Egc29mdCBkZWxldGUgKG1hcmNhIGRlbGV0ZWRBdCBlbiBsdWdhciBkZSBlbGltaW5hcikuXG4gICAqIERlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICBzb2Z0RGVsZXRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2kgdHJ1ZSwgbWFuZWphIGF1dG9tw6F0aWNhbWVudGUgY3JlYXRlZEF0L3VwZGF0ZWRBdC5cbiAgICogRGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgdGltZXN0YW1wcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVmZXJlbmNpYSBhIHVuYSBzdWItY29sZWNjacOzbiB0aXBhZGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3ViQ29sbGVjdGlvblJlZjxUIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ+IHtcbiAgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxUIHwgbnVsbD47XG4gIGdldEFsbChvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxUW10+O1xuICB3YXRjaChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUIHwgbnVsbD47XG4gIHdhdGNoQWxsKG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBPYnNlcnZhYmxlPFRbXT47XG4gIGNyZWF0ZShkYXRhOiBPbWl0PFQsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICd1cGRhdGVkQXQnPik6IFByb21pc2U8VD47XG4gIHVwZGF0ZShpZDogc3RyaW5nLCBkYXRhOiBQYXJ0aWFsPFQ+KTogUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIENsYXNlIGJhc2UgcGFyYSBzZXJ2aWNpb3MgZGUgY29sZWNjacOzbiB0aXBhZG9zLlxuICpcbiAqIEV4dGllbmRlIGVzdGEgY2xhc2UgcGFyYSBjcmVhciB1biBzZXJ2aWNpbyBkZWRpY2FkbyBwYXJhIGNhZGEgZW50aWRhZCxcbiAqIGNvbiBtw6l0b2RvcyBwZXJzb25hbGl6YWRvcyB5IHRpcGFkbyBmdWVydGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIERlZmluaXIgZWwgbW9kZWxvXG4gKiBpbnRlcmZhY2UgVXNlciBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50IHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogICBlbWFpbDogc3RyaW5nO1xuICogICByb2xlOiAnYWRtaW4nIHwgJ3VzZXInO1xuICogICBhY3RpdmU6IGJvb2xlYW47XG4gKiB9XG4gKlxuICogLy8gQ3JlYXIgZWwgc2VydmljaW9cbiAqIEBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG4gKiBleHBvcnQgY2xhc3MgVXNlcnNDb2xsZWN0aW9uIGV4dGVuZHMgRmlyZXN0b3JlQ29sbGVjdGlvbjxVc2VyPiB7XG4gKiAgIGNvbnN0cnVjdG9yKCkge1xuICogICAgIHN1cGVyKCd1c2VycycpO1xuICogICB9XG4gKlxuICogICAvLyBNw6l0b2RvcyBwZXJzb25hbGl6YWRvc1xuICogICBhc3luYyBnZXRBY3RpdmVVc2VycygpOiBQcm9taXNlPFVzZXJbXT4ge1xuICogICAgIHJldHVybiB0aGlzLnF1ZXJ5KHtcbiAqICAgICAgIHdoZXJlOiBbeyBmaWVsZDogJ2FjdGl2ZScsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogdHJ1ZSB9XVxuICogICAgIH0pO1xuICogICB9XG4gKlxuICogICBhc3luYyBnZXRBZG1pbnMoKTogUHJvbWlzZTxVc2VyW10+IHtcbiAqICAgICByZXR1cm4gdGhpcy5xdWVyeSh7XG4gKiAgICAgICB3aGVyZTogW3sgZmllbGQ6ICdyb2xlJywgb3BlcmF0b3I6ICc9PScsIHZhbHVlOiAnYWRtaW4nIH1dXG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqXG4gKiAgIHdhdGNoT25saW5lVXNlcnMoKTogT2JzZXJ2YWJsZTxVc2VyW10+IHtcbiAqICAgICByZXR1cm4gdGhpcy53YXRjaFF1ZXJ5KHtcbiAqICAgICAgIHdoZXJlOiBbeyBmaWVsZDogJ3N0YXR1cycsIG9wZXJhdG9yOiAnPT0nLCB2YWx1ZTogJ29ubGluZScgfV1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICpcbiAqIC8vIFVzYXIgZW4gY29tcG9uZW50ZXNcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgVXNlcnNDb21wb25lbnQge1xuICogICBwcml2YXRlIHVzZXJzID0gaW5qZWN0KFVzZXJzQ29sbGVjdGlvbik7XG4gKlxuICogICBhZG1pbnMkID0gdGhpcy51c2Vycy5nZXRBZG1pbnMoKTtcbiAqICAgb25saW5lVXNlcnMkID0gdGhpcy51c2Vycy53YXRjaE9ubGluZVVzZXJzKCk7XG4gKlxuICogICBhc3luYyBjcmVhdGVVc2VyKGRhdGE6IE9taXQ8VXNlciwgJ2lkJz4pIHtcbiAqICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy51c2Vycy5jcmVhdGUoZGF0YSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlyZXN0b3JlQ29sbGVjdGlvbjxUIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ+IHtcbiAgcHJvdGVjdGVkIGZpcmVzdG9yZTogRmlyZXN0b3JlU2VydmljZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbGxlY3Rpb25QYXRoOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zOiBDb2xsZWN0aW9uT3B0aW9ucztcblxuICAvKipcbiAgICogQHBhcmFtIGNvbGxlY3Rpb25QYXRoIC0gUnV0YSBkZSBsYSBjb2xlY2Npw7NuIGVuIEZpcmVzdG9yZVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wY2lvbmVzIGRlIGNvbmZpZ3VyYWNpw7NuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uUGF0aDogc3RyaW5nLCBvcHRpb25zOiBDb2xsZWN0aW9uT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5maXJlc3RvcmUgPSBpbmplY3QoRmlyZXN0b3JlU2VydmljZSk7XG4gICAgdGhpcy5jb2xsZWN0aW9uUGF0aCA9IGNvbGxlY3Rpb25QYXRoO1xuICAgIHRoaXMub3B0aW9ucyA9IHtcbiAgICAgIHNvZnREZWxldGU6IGZhbHNlLFxuICAgICAgdGltZXN0YW1wczogdHJ1ZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBMRUNUVVJBUyBPTkUtVElNRVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogT2J0aWVuZSB1biBkb2N1bWVudG8gcG9yIElELlxuICAgKi9cbiAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5nZXREb2M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdG9kb3MgbG9zIGRvY3VtZW50b3MgZGUgbGEgY29sZWNjacOzbi5cbiAgICovXG4gIGFzeW5jIGdldEFsbChvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmdldERvY3M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgcXVlcnlPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFamVjdXRhIHVuYSBxdWVyeSBwZXJzb25hbGl6YWRhLlxuICAgKi9cbiAgYXN5bmMgcXVlcnkob3B0aW9uczogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmdldERvY3M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgcXVlcnlPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGRvY3VtZW50b3MgY29uIHBhZ2luYWNpw7NuLlxuICAgKi9cbiAgYXN5bmMgcGFnaW5hdGUob3B0aW9uczogUXVlcnlPcHRpb25zICYgeyBsaW1pdDogbnVtYmVyIH0pOiBQcm9taXNlPFBhZ2luYXRlZFJlc3VsdDxUPj4ge1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IHRoaXMuYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zKSBhcyBRdWVyeU9wdGlvbnMgJiB7IGxpbWl0OiBudW1iZXIgfTtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZ2V0UGFnaW5hdGVkPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCBwcmltZXIgZG9jdW1lbnRvIHF1ZSBjb2luY2lkYSBjb24gbGEgcXVlcnkuXG4gICAqL1xuICBhc3luYyBnZXRGaXJzdChvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IHRoaXMuYXBwbHlEZWZhdWx0RmlsdGVycyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbGltaXQ6IDEsXG4gICAgfSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZmlyZXN0b3JlLmdldERvY3M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgcXVlcnlPcHRpb25zKTtcbiAgICByZXR1cm4gcmVzdWx0c1swXSA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEN1ZW50YSBsb3MgZG9jdW1lbnRvcyBxdWUgY29pbmNpZGVuIGNvbiBsYSBxdWVyeS5cbiAgICogTm90YTogRXN0byBjYXJnYSB0b2RvcyBsb3MgZG9jdW1lbnRvcywgdXNhciBjb24gY3VpZGFkbyBlbiBjb2xlY2Npb25lcyBncmFuZGVzLlxuICAgKi9cbiAgYXN5bmMgY291bnQob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmZpcmVzdG9yZS5nZXREb2NzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gICAgcmV0dXJuIHJlc3VsdHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGRvY3VtZW50byBleGlzdGUuXG4gICAqL1xuICBhc3luYyBleGlzdHMoaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5leGlzdHModGhpcy5jb2xsZWN0aW9uUGF0aCwgaWQpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNVQlNDUklQQ0lPTkVTIFJFQUwtVElNRVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogU3VzY3JpYmUgYSBjYW1iaW9zIGRlIHVuIGRvY3VtZW50by5cbiAgICovXG4gIHdhdGNoKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmRvY0NoYW5nZXM8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1c2NyaWJlIGEgY2FtYmlvcyBkZSBsYSBjb2xlY2Npw7NuLlxuICAgKi9cbiAgd2F0Y2hBbGwob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5jb2xsZWN0aW9uQ2hhbmdlczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1c2NyaWJlIGEgdW5hIHF1ZXJ5IHBlcnNvbmFsaXphZGEuXG4gICAqL1xuICB3YXRjaFF1ZXJ5KG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5jb2xsZWN0aW9uQ2hhbmdlczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEVTQ1JJVFVSQVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ3JlYSB1biBudWV2byBkb2N1bWVudG8gY29uIElEIGF1dG8tZ2VuZXJhZG8uXG4gICAqL1xuICBhc3luYyBjcmVhdGUoZGF0YTogT21pdDxULCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAndXBkYXRlZEF0Jz4pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuYWRkRG9jPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWEgdW4gZG9jdW1lbnRvIGNvbiBJRCBlc3BlY8OtZmljby5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZVdpdGhJZChpZDogc3RyaW5nLCBkYXRhOiBPbWl0PFQsICdpZCc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLnNldERvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsaXphIGNhbXBvcyBkZSB1biBkb2N1bWVudG8uXG4gICAqL1xuICBhc3luYyB1cGRhdGUoaWQ6IHN0cmluZywgZGF0YTogUGFydGlhbDxPbWl0PFQsICdpZCcgfCAnY3JlYXRlZEF0Jz4+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLnVwZGF0ZURvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYSB1biBkb2N1bWVudG8uXG4gICAqIFNpIHNvZnREZWxldGUgZXN0w6EgaGFiaWxpdGFkbywgbWFyY2EgY29tbyBlbGltaW5hZG8gZW4gbHVnYXIgZGUgYm9ycmFyLlxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnNvZnREZWxldGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS51cGRhdGVEb2M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgaWQsIHtcbiAgICAgICAgZGVsZXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgfSBhcyB1bmtub3duIGFzIFBhcnRpYWw8VD4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZGVsZXRlRG9jKHRoaXMuY29sbGVjdGlvblBhdGgsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0YXVyYSB1biBkb2N1bWVudG8gc29mdC1kZWxldGVkLlxuICAgKi9cbiAgYXN5bmMgcmVzdG9yZShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuc29mdERlbGV0ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTb2Z0IGRlbGV0ZSBubyBlc3TDoSBoYWJpbGl0YWRvIHBhcmEgZXN0YSBjb2xlY2Npw7NuJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS51cGRhdGVEb2M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgaWQsIHtcbiAgICAgIGRlbGV0ZWRBdDogbnVsbCxcbiAgICB9IGFzIHVua25vd24gYXMgUGFydGlhbDxUPik7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU1VCLUNPTEVDQ0lPTkVTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHVuYSByZWZlcmVuY2lhIGEgdW5hIHN1Yi1jb2xlY2Npw7NuLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIEVuIFVzZXJzQ29sbGVjdGlvblxuICAgKiBnZXRVc2VyRG9jdW1lbnRzKHVzZXJJZDogc3RyaW5nKSB7XG4gICAqICAgcmV0dXJuIHRoaXMuc3ViY29sbGVjdGlvbjxEb2N1bWVudD4odXNlcklkLCAnZG9jdW1lbnRzJyk7XG4gICAqIH1cbiAgICpcbiAgICogLy8gVXNvXG4gICAqIGNvbnN0IGRvY3MgPSBhd2FpdCB1c2Vycy5nZXRVc2VyRG9jdW1lbnRzKCd1c2VyMTIzJykuZ2V0QWxsKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgc3ViY29sbGVjdGlvbjxTIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ+KFxuICAgIHBhcmVudElkOiBzdHJpbmcsXG4gICAgc3ViY29sbGVjdGlvbk5hbWU6IHN0cmluZ1xuICApOiBTdWJDb2xsZWN0aW9uUmVmPFM+IHtcbiAgICBjb25zdCBzdWJQYXRoID0gYCR7dGhpcy5jb2xsZWN0aW9uUGF0aH0vJHtwYXJlbnRJZH0vJHtzdWJjb2xsZWN0aW9uTmFtZX1gO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldEJ5SWQ6IChpZDogc3RyaW5nKSA9PiB0aGlzLmZpcmVzdG9yZS5nZXREb2M8Uz4oc3ViUGF0aCwgaWQpLFxuICAgICAgZ2V0QWxsOiAob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucykgPT4gdGhpcy5maXJlc3RvcmUuZ2V0RG9jczxTPihzdWJQYXRoLCBvcHRpb25zKSxcbiAgICAgIHdhdGNoOiAoaWQ6IHN0cmluZykgPT4gdGhpcy5maXJlc3RvcmUuZG9jQ2hhbmdlczxTPihzdWJQYXRoLCBpZCksXG4gICAgICB3YXRjaEFsbDogKG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpID0+IHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb25DaGFuZ2VzPFM+KHN1YlBhdGgsIG9wdGlvbnMpLFxuICAgICAgY3JlYXRlOiAoZGF0YTogT21pdDxTLCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAndXBkYXRlZEF0Jz4pID0+XG4gICAgICAgIHRoaXMuZmlyZXN0b3JlLmFkZERvYzxTPihzdWJQYXRoLCBkYXRhKSxcbiAgICAgIHVwZGF0ZTogKGlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8Uz4pID0+IHRoaXMuZmlyZXN0b3JlLnVwZGF0ZURvYzxTPihzdWJQYXRoLCBpZCwgZGF0YSksXG4gICAgICBkZWxldGU6IChpZDogc3RyaW5nKSA9PiB0aGlzLmZpcmVzdG9yZS5kZWxldGVEb2Moc3ViUGF0aCwgaWQpLFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTcOJVE9ET1MgUFJPVEVHSURPUyAocGFyYSBvdmVycmlkZSBlbiBzdWJjbGFzZXMpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBcGxpY2EgZmlsdHJvcyBwb3IgZGVmZWN0byBhIGxhcyBxdWVyaWVzLlxuICAgKiBPdmVycmlkZSBlc3RlIG3DqXRvZG8gcGFyYSBhZ3JlZ2FyIGZpbHRyb3MgZ2xvYmFsZXMgKGVqOiBleGNsdWlyIHNvZnQtZGVsZXRlZCkuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUXVlcnlPcHRpb25zIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5zb2Z0RGVsZXRlKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucyA/PyB7fTtcbiAgICB9XG5cbiAgICAvLyBFeGNsdWlyIGRvY3VtZW50b3Mgc29mdC1kZWxldGVkIHBvciBkZWZlY3RvXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSB7IGZpZWxkOiAnZGVsZXRlZEF0Jywgb3BlcmF0b3I6ICc9PScgYXMgY29uc3QsIHZhbHVlOiBudWxsIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHdoZXJlOiBbLi4uKG9wdGlvbnM/LndoZXJlID8/IFtdKSwgd2hlcmVDbGF1c2VdLFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVRJTElEQURFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2VuZXJhIHVuIG51ZXZvIElEIHNpbiBjcmVhciBlbCBkb2N1bWVudG8uXG4gICAqL1xuICBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmdlbmVyYXRlSWQodGhpcy5jb2xsZWN0aW9uUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBydXRhIGRlIGxhIGNvbGVjY2nDs24uXG4gICAqL1xuICBnZXRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvblBhdGg7XG4gIH1cbn1cbiJdfQ==
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0b3JlLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2ZpcmVzdG9yZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBaUN2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsTUFBTSxPQUFPLDBCQUEwQjtJQUR2QztRQUVVLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQWU5QztJQWJDOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FDSixjQUFzQixFQUN0QixPQUEyQjtRQUUzQixPQUFPLElBQUksZUFBZSxDQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7K0dBZlUsMEJBQTBCO21IQUExQiwwQkFBMEIsY0FEYixNQUFNOzs0RkFDbkIsMEJBQTBCO2tCQUR0QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFtQmxDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFDVSxTQUEyQixFQUMzQixjQUFzQixFQUM5QixVQUE2QixFQUFFO1FBRnZCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBRzlCLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixVQUFVLEVBQUUsS0FBSztZQUNqQixVQUFVLEVBQUUsSUFBSTtZQUNoQixHQUFHLE9BQU87U0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxvQkFBb0I7SUFDcEIsOEVBQThFO0lBRTlFOztPQUVH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QUFFLEVBQUUsSUFBSSxDQUFDO1lBQ3hGLE1BQU0sRUFBRSxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUM5RCxDQUFDO0lBQ0osQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxtQkFBbUI7SUFDbkIsOEVBQThFO0lBRTlFOztPQUVHO0lBQ0ssbUJBQW1CLENBQUMsT0FBc0I7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDN0IsT0FBTyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCw4Q0FBOEM7UUFDOUMsTUFBTSxXQUFXLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1FBRWpGLE9BQU87WUFDTCxHQUFHLE9BQU87WUFDVixLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUM7U0FDaEQsQ0FBQztJQUNKLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsYUFBYTtJQUNiLDhFQUE4RTtJQUU5RTs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRmlyZXN0b3JlIENvbGxlY3Rpb24gRmFjdG9yeVxuICpcbiAqIFBhdHLDs24gZmFjdG9yeSBwYXJhIGNyZWFyIGluc3RhbmNpYXMgZGUgY29sZWNjacOzbiB0aXBhZGFzLlxuICogUmVlbXBsYXphIGxhIGNsYXNlIGFic3RyYWN0YSBwYXJhIGV2aXRhciBwcm9ibGVtYXMgY29uIGluamVjdCgpIGVuIGNsYXNlcyBuby1pbmplY3RhYmxlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGaXJlc3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9maXJlc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmVEb2N1bWVudCwgUGFnaW5hdGVkUmVzdWx0LCBRdWVyeU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBPcGNpb25lcyBkZSBjb25maWd1cmFjacOzbiBwYXJhIHVuYSBjb2xlY2Npw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFNpIHRydWUsIHVzYSBzb2Z0IGRlbGV0ZSAobWFyY2EgZGVsZXRlZEF0IGVuIGx1Z2FyIGRlIGVsaW1pbmFyKS5cbiAgICogRGVmYXVsdDogZmFsc2VcbiAgICovXG4gIHNvZnREZWxldGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaSB0cnVlLCBtYW5lamEgYXV0b23DoXRpY2FtZW50ZSBjcmVhdGVkQXQvdXBkYXRlZEF0LlxuICAgKiBEZWZhdWx0OiB0cnVlXG4gICAqL1xuICB0aW1lc3RhbXBzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZWZlcmVuY2lhIGEgdW5hIHN1Yi1jb2xlY2Npw7NuIHRpcGFkYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJDb2xsZWN0aW9uUmVmPFQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4ge1xuICBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPjtcbiAgZ2V0QWxsKG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPFRbXT47XG4gIHdhdGNoKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQgfCBudWxsPjtcbiAgd2F0Y2hBbGwob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucyk6IE9ic2VydmFibGU8VFtdPjtcbiAgY3JlYXRlKGRhdGE6IE9taXQ8VCwgJ2lkJyB8ICdjcmVhdGVkQXQnIHwgJ3VwZGF0ZWRBdCc+KTogUHJvbWlzZTxUPjtcbiAgdXBkYXRlKGlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VD4pOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogRmFjdG9yeSBwYXJhIGNyZWFyIGluc3RhbmNpYXMgZGUgY29sZWNjacOzbiB0aXBhZGFzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuICogZXhwb3J0IGNsYXNzIFVzZXJzU2VydmljZSB7XG4gKiAgIHByaXZhdGUgdXNlcnMgPSBpbmplY3QoRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3RvcnkpLmNyZWF0ZTxVc2VyPigndXNlcnMnKTtcbiAqXG4gKiAgIGdldEFsbCA9ICgpID0+IHRoaXMudXNlcnMuZ2V0QWxsKCk7XG4gKiAgIGdldEJ5SWQgPSAoaWQ6IHN0cmluZykgPT4gdGhpcy51c2Vycy5nZXRCeUlkKGlkKTtcbiAqICAgY3JlYXRlID0gKGRhdGE6IE9taXQ8VXNlciwgJ2lkJz4pID0+IHRoaXMudXNlcnMuY3JlYXRlKGRhdGEpO1xuICpcbiAqICAgLy8gTcOpdG9kb3MgcGVyc29uYWxpemFkb3NcbiAqICAgYXN5bmMgZ2V0QWN0aXZlVXNlcnMoKTogUHJvbWlzZTxVc2VyW10+IHtcbiAqICAgICByZXR1cm4gdGhpcy51c2Vycy5xdWVyeSh7XG4gKiAgICAgICB3aGVyZTogW3sgZmllbGQ6ICdhY3RpdmUnLCBvcGVyYXRvcjogJz09JywgdmFsdWU6IHRydWUgfV1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3Rvcnkge1xuICBwcml2YXRlIGZpcmVzdG9yZSA9IGluamVjdChGaXJlc3RvcmVTZXJ2aWNlKTtcblxuICAvKipcbiAgICogQ3JlYSB1bmEgaW5zdGFuY2lhIGRlIGNvbGVjY2nDs24gdGlwYWRhLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvblBhdGggLSBSdXRhIGRlIGxhIGNvbGVjY2nDs24gZW4gRmlyZXN0b3JlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3BjaW9uZXMgZGUgY29uZmlndXJhY2nDs25cbiAgICogQHJldHVybnMgSW5zdGFuY2lhIGRlIFR5cGVkQ29sbGVjdGlvblxuICAgKi9cbiAgY3JlYXRlPFQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4oXG4gICAgY29sbGVjdGlvblBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQ29sbGVjdGlvbk9wdGlvbnNcbiAgKTogVHlwZWRDb2xsZWN0aW9uPFQ+IHtcbiAgICByZXR1cm4gbmV3IFR5cGVkQ29sbGVjdGlvbjxUPih0aGlzLmZpcmVzdG9yZSwgY29sbGVjdGlvblBhdGgsIG9wdGlvbnMpO1xuICB9XG59XG5cbi8qKlxuICogQ29sZWNjacOzbiB0aXBhZGEgY29uIG3DqXRvZG9zIENSVUQuXG4gKlxuICogTk8gdXNhIGluamVjdCgpIC0gcmVjaWJlIEZpcmVzdG9yZVNlcnZpY2UgcG9yIGNvbnN0cnVjdG9yLlxuICogRXN0byBldml0YSBlbCBlcnJvciBORzAyMDMuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlZENvbGxlY3Rpb248VCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ29sbGVjdGlvbk9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmaXJlc3RvcmU6IEZpcmVzdG9yZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb2xsZWN0aW9uUGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENvbGxlY3Rpb25PcHRpb25zID0ge31cbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgc29mdERlbGV0ZTogZmFsc2UsXG4gICAgICB0aW1lc3RhbXBzOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExFQ1RVUkFTIE9ORS1USU1FXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHVuIGRvY3VtZW50byBwb3IgSUQuXG4gICAqL1xuICBhc3luYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmdldERvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB0b2RvcyBsb3MgZG9jdW1lbnRvcyBkZSBsYSBjb2xlY2Npw7NuLlxuICAgKi9cbiAgYXN5bmMgZ2V0QWxsKG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IHRoaXMuYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZ2V0RG9jczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVqZWN1dGEgdW5hIHF1ZXJ5IHBlcnNvbmFsaXphZGEuXG4gICAqL1xuICBhc3luYyBxdWVyeShvcHRpb25zOiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IHF1ZXJ5T3B0aW9ucyA9IHRoaXMuYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZ2V0RG9jczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZG9jdW1lbnRvcyBjb24gcGFnaW5hY2nDs24uXG4gICAqL1xuICBhc3luYyBwYWdpbmF0ZShvcHRpb25zOiBRdWVyeU9wdGlvbnMgJiB7IGxpbWl0OiBudW1iZXIgfSk6IFByb21pc2U8UGFnaW5hdGVkUmVzdWx0PFQ+PiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKG9wdGlvbnMpIGFzIFF1ZXJ5T3B0aW9ucyAmIHsgbGltaXQ6IG51bWJlciB9O1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5nZXRQYWdpbmF0ZWQ8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgcXVlcnlPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIHByaW1lciBkb2N1bWVudG8gcXVlIGNvaW5jaWRhIGNvbiBsYSBxdWVyeS5cbiAgICovXG4gIGFzeW5jIGdldEZpcnN0KG9wdGlvbnM/OiBRdWVyeU9wdGlvbnMpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgY29uc3QgcXVlcnlPcHRpb25zID0gdGhpcy5hcHBseURlZmF1bHRGaWx0ZXJzKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBsaW1pdDogMSxcbiAgICB9KTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5maXJlc3RvcmUuZ2V0RG9jczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBxdWVyeU9wdGlvbnMpO1xuICAgIHJldHVybiByZXN1bHRzWzBdID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ3VlbnRhIGxvcyBkb2N1bWVudG9zIHF1ZSBjb2luY2lkZW4gY29uIGxhIHF1ZXJ5LlxuICAgKiBOb3RhOiBFc3RvIGNhcmdhIHRvZG9zIGxvcyBkb2N1bWVudG9zLCB1c2FyIGNvbiBjdWlkYWRvIGVuIGNvbGVjY2lvbmVzIGdyYW5kZXMuXG4gICAqL1xuICBhc3luYyBjb3VudChvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZmlyZXN0b3JlLmdldERvY3M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgcXVlcnlPcHRpb25zKTtcbiAgICByZXR1cm4gcmVzdWx0cy5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gZG9jdW1lbnRvIGV4aXN0ZS5cbiAgICovXG4gIGFzeW5jIGV4aXN0cyhpZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmV4aXN0cyh0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU1VCU0NSSVBDSU9ORVMgUkVBTC1USU1FXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBTdXNjcmliZSBhIGNhbWJpb3MgZGUgdW4gZG9jdW1lbnRvLlxuICAgKi9cbiAgd2F0Y2goaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuZG9jQ2hhbmdlczxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogU3VzY3JpYmUgYSBjYW1iaW9zIGRlIGxhIGNvbGVjY2nDs24uXG4gICAqL1xuICB3YXRjaEFsbChvcHRpb25zPzogUXVlcnlPcHRpb25zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb25DaGFuZ2VzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU3VzY3JpYmUgYSB1bmEgcXVlcnkgcGVyc29uYWxpemFkYS5cbiAgICovXG4gIHdhdGNoUXVlcnkob3B0aW9uczogUXVlcnlPcHRpb25zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBjb25zdCBxdWVyeU9wdGlvbnMgPSB0aGlzLmFwcGx5RGVmYXVsdEZpbHRlcnMob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmNvbGxlY3Rpb25DaGFuZ2VzPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIHF1ZXJ5T3B0aW9ucyk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRVNDUklUVVJBXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBDcmVhIHVuIG51ZXZvIGRvY3VtZW50byBjb24gSUQgYXV0by1nZW5lcmFkby5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZShkYXRhOiBPbWl0PFQsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICd1cGRhdGVkQXQnPik6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5hZGREb2M8VD4odGhpcy5jb2xsZWN0aW9uUGF0aCwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYSB1biBkb2N1bWVudG8gY29uIElEIGVzcGVjw61maWNvLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlV2l0aElkKGlkOiBzdHJpbmcsIGRhdGE6IE9taXQ8VCwgJ2lkJz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUuc2V0RG9jPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIGlkLCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgY2FtcG9zIGRlIHVuIGRvY3VtZW50by5cbiAgICovXG4gIGFzeW5jIHVwZGF0ZShpZDogc3RyaW5nLCBkYXRhOiBQYXJ0aWFsPE9taXQ8VCwgJ2lkJyB8ICdjcmVhdGVkQXQnPj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmUudXBkYXRlRG9jPFQ+KHRoaXMuY29sbGVjdGlvblBhdGgsIGlkLCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuIGRvY3VtZW50by5cbiAgICogU2kgc29mdERlbGV0ZSBlc3TDoSBoYWJpbGl0YWRvLCBtYXJjYSBjb21vIGVsaW1pbmFkbyBlbiBsdWdhciBkZSBib3JyYXIuXG4gICAqL1xuICBhc3luYyBkZWxldGUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuc29mdERlbGV0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLnVwZGF0ZURvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCwge1xuICAgICAgICBkZWxldGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICB9IGFzIHVua25vd24gYXMgUGFydGlhbDxUPik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpcmVzdG9yZS5kZWxldGVEb2ModGhpcy5jb2xsZWN0aW9uUGF0aCwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RhdXJhIHVuIGRvY3VtZW50byBzb2Z0LWRlbGV0ZWQuXG4gICAqL1xuICBhc3luYyByZXN0b3JlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5zb2Z0RGVsZXRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NvZnQgZGVsZXRlIG5vIGVzdMOhIGhhYmlsaXRhZG8gcGFyYSBlc3RhIGNvbGVjY2nDs24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLnVwZGF0ZURvYzxUPih0aGlzLmNvbGxlY3Rpb25QYXRoLCBpZCwge1xuICAgICAgZGVsZXRlZEF0OiBudWxsLFxuICAgIH0gYXMgdW5rbm93biBhcyBQYXJ0aWFsPFQ+KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBTVUItQ09MRUNDSU9ORVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdW5hIHJlZmVyZW5jaWEgYSB1bmEgc3ViLWNvbGVjY2nDs24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRW4gVXNlcnNTZXJ2aWNlXG4gICAqIGdldFVzZXJEb2N1bWVudHModXNlcklkOiBzdHJpbmcpIHtcbiAgICogICByZXR1cm4gdGhpcy51c2Vycy5zdWJjb2xsZWN0aW9uPERvY3VtZW50Pih1c2VySWQsICdkb2N1bWVudHMnKTtcbiAgICogfVxuICAgKlxuICAgKiAvLyBVc29cbiAgICogY29uc3QgZG9jcyA9IGF3YWl0IHVzZXJzLmdldFVzZXJEb2N1bWVudHMoJ3VzZXIxMjMnKS5nZXRBbGwoKTtcbiAgICogYGBgXG4gICAqL1xuICBzdWJjb2xsZWN0aW9uPFMgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4oXG4gICAgcGFyZW50SWQ6IHN0cmluZyxcbiAgICBzdWJjb2xsZWN0aW9uTmFtZTogc3RyaW5nXG4gICk6IFN1YkNvbGxlY3Rpb25SZWY8Uz4ge1xuICAgIGNvbnN0IHN1YlBhdGggPSBgJHt0aGlzLmNvbGxlY3Rpb25QYXRofS8ke3BhcmVudElkfS8ke3N1YmNvbGxlY3Rpb25OYW1lfWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0QnlJZDogKGlkOiBzdHJpbmcpID0+IHRoaXMuZmlyZXN0b3JlLmdldERvYzxTPihzdWJQYXRoLCBpZCksXG4gICAgICBnZXRBbGw6IChvcHRpb25zPzogUXVlcnlPcHRpb25zKSA9PiB0aGlzLmZpcmVzdG9yZS5nZXREb2NzPFM+KHN1YlBhdGgsIG9wdGlvbnMpLFxuICAgICAgd2F0Y2g6IChpZDogc3RyaW5nKSA9PiB0aGlzLmZpcmVzdG9yZS5kb2NDaGFuZ2VzPFM+KHN1YlBhdGgsIGlkKSxcbiAgICAgIHdhdGNoQWxsOiAob3B0aW9ucz86IFF1ZXJ5T3B0aW9ucykgPT4gdGhpcy5maXJlc3RvcmUuY29sbGVjdGlvbkNoYW5nZXM8Uz4oc3ViUGF0aCwgb3B0aW9ucyksXG4gICAgICBjcmVhdGU6IChkYXRhOiBPbWl0PFMsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICd1cGRhdGVkQXQnPikgPT5cbiAgICAgICAgdGhpcy5maXJlc3RvcmUuYWRkRG9jPFM+KHN1YlBhdGgsIGRhdGEpLFxuICAgICAgdXBkYXRlOiAoaWQ6IHN0cmluZywgZGF0YTogUGFydGlhbDxTPikgPT4gdGhpcy5maXJlc3RvcmUudXBkYXRlRG9jPFM+KHN1YlBhdGgsIGlkLCBkYXRhKSxcbiAgICAgIGRlbGV0ZTogKGlkOiBzdHJpbmcpID0+IHRoaXMuZmlyZXN0b3JlLmRlbGV0ZURvYyhzdWJQYXRoLCBpZCksXG4gICAgfTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQUklWQURPU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQXBsaWNhIGZpbHRyb3MgcG9yIGRlZmVjdG8gYSBsYXMgcXVlcmllcy5cbiAgICovXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0RmlsdGVycyhvcHRpb25zPzogUXVlcnlPcHRpb25zKTogUXVlcnlPcHRpb25zIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5zb2Z0RGVsZXRlKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucyA/PyB7fTtcbiAgICB9XG5cbiAgICAvLyBFeGNsdWlyIGRvY3VtZW50b3Mgc29mdC1kZWxldGVkIHBvciBkZWZlY3RvXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSB7IGZpZWxkOiAnZGVsZXRlZEF0Jywgb3BlcmF0b3I6ICc9PScgYXMgY29uc3QsIHZhbHVlOiBudWxsIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHdoZXJlOiBbLi4uKG9wdGlvbnM/LndoZXJlID8/IFtdKSwgd2hlcmVDbGF1c2VdLFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVRJTElEQURFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2VuZXJhIHVuIG51ZXZvIElEIHNpbiBjcmVhciBlbCBkb2N1bWVudG8uXG4gICAqL1xuICBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlLmdlbmVyYXRlSWQodGhpcy5jb2xsZWN0aW9uUGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBydXRhIGRlIGxhIGNvbGVjY2nDs24uXG4gICAqL1xuICBnZXRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvblBhdGg7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgRmlyZXN0b3JlQ29sbGVjdGlvbkZhY3RvcnkuY3JlYXRlKCkgaW5zdGVhZC5cbiAqIFR5cGUgYWxpYXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICovXG5leHBvcnQgdHlwZSBGaXJlc3RvcmVDb2xsZWN0aW9uPFQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudD4gPSBUeXBlZENvbGxlY3Rpb248VD47XG4iXX0=
|
|
@@ -37,7 +37,8 @@ export { APP_IDS, FIREBASE_PROJECTS, SHARED_EMULATOR_CONFIG, collections, create
|
|
|
37
37
|
export { FirebaseService } from './firebase.service';
|
|
38
38
|
// Firestore
|
|
39
39
|
export { FirestoreService } from './firestore.service';
|
|
40
|
-
|
|
40
|
+
// Firestore Collections (Factory Pattern)
|
|
41
|
+
export { FirestoreCollectionFactory, TypedCollection, } from './firestore-collection';
|
|
41
42
|
// Utilidades
|
|
42
43
|
export { QueryBuilder, query } from './utils/query-builder';
|
|
43
44
|
export { buildPath, extractPathParams, getCollectionPath, getDocumentId, isCollectionPath, isDocumentPath, isValidPath, joinPath, } from './utils/path-builder';
|
|
@@ -45,4 +46,4 @@ export { buildPath, extractPathParams, getCollectionPath, getDocumentId, isColle
|
|
|
45
46
|
export { StorageService } from './storage.service';
|
|
46
47
|
// Messaging (FCM)
|
|
47
48
|
export { MessagingService } from './messaging.service';
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBRUgsUUFBUTtBQUNSLGNBQWMsU0FBUyxDQUFDO0FBRXhCLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpGLHdDQUF3QztBQUN4QyxPQUFPLEVBQ0wsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsWUFBWSxHQUdiLE1BQU0saUJBQWlCLENBQUM7QUFFekIsWUFBWTtBQUNaLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxZQUFZO0FBQ1osT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsMENBQTBDO0FBQzFDLE9BQU8sRUFHTCwwQkFBMEIsRUFFMUIsZUFBZSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLGFBQWE7QUFDYixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsUUFBUSxHQUNULE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsVUFBVTtBQUNWLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxrQkFBa0I7QUFDbEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZpcmViYXNlIFNlcnZpY2VzXG4gKlxuICogU2VydmljaW9zIHJldXRpbGl6YWJsZXMgcGFyYSBpbnRlZ3JhY2nDs24gY29uIEZpcmViYXNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBFbiBtYWluLnRzXG4gKiBpbXBvcnQgeyBwcm92aWRlVmFsdGVjaEZpcmViYXNlIH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBib290c3RyYXBBcHBsaWNhdGlvbihBcHBDb21wb25lbnQsIHtcbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZSh7XG4gKiAgICAgICBmaXJlYmFzZTogZW52aXJvbm1lbnQuZmlyZWJhc2UsXG4gKiAgICAgICBwZXJzaXN0ZW5jZTogdHJ1ZSxcbiAqICAgICB9KSxcbiAqICAgXSxcbiAqIH0pO1xuICpcbiAqIC8vIEVuIGNvbXBvbmVudGVzXG4gKiBpbXBvcnQgeyBGaXJlYmFzZVNlcnZpY2UsIEZpcmVzdG9yZVNlcnZpY2UgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgTXlDb21wb25lbnQge1xuICogICBwcml2YXRlIGZpcmViYXNlID0gaW5qZWN0KEZpcmViYXNlU2VydmljZSk7XG4gKiAgIHByaXZhdGUgZmlyZXN0b3JlID0gaW5qZWN0KEZpcmVzdG9yZVNlcnZpY2UpO1xuICogfVxuICogYGBgXG4gKi9cblxuLy8gVGlwb3NcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuXG4vLyBDb25maWd1cmFjacOzblxuZXhwb3J0IHsgVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcsIGhhc0VtdWxhdG9ycywgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZSB9IGZyb20gJy4vY29uZmlnJztcblxuLy8gQ29uZmlndXJhY2nDs24gY29tcGFydGlkYSBkZWwgbW9ub3JlcG9cbmV4cG9ydCB7XG4gIEFQUF9JRFMsXG4gIEZJUkVCQVNFX1BST0pFQ1RTLFxuICBTSEFSRURfRU1VTEFUT1JfQ09ORklHLFxuICBjb2xsZWN0aW9ucyxcbiAgY3JlYXRlRmlyZWJhc2VDb25maWcsXG4gIGlzRW11bGF0b3JNb2RlLFxuICBzdG9yYWdlUGF0aHMsXG4gIHR5cGUgQXBwSWQsXG4gIHR5cGUgQ3JlYXRlRmlyZWJhc2VDb25maWdPcHRpb25zLFxufSBmcm9tICcuL3NoYXJlZC1jb25maWcnO1xuXG4vLyBTZXJ2aWNpb3NcbmV4cG9ydCB7IEZpcmViYXNlU2VydmljZSB9IGZyb20gJy4vZmlyZWJhc2Uuc2VydmljZSc7XG5cbi8vIEZpcmVzdG9yZVxuZXhwb3J0IHsgRmlyZXN0b3JlU2VydmljZSB9IGZyb20gJy4vZmlyZXN0b3JlLnNlcnZpY2UnO1xuXG4vLyBGaXJlc3RvcmUgQ29sbGVjdGlvbnMgKEZhY3RvcnkgUGF0dGVybilcbmV4cG9ydCB7XG4gIENvbGxlY3Rpb25PcHRpb25zLFxuICBGaXJlc3RvcmVDb2xsZWN0aW9uLFxuICBGaXJlc3RvcmVDb2xsZWN0aW9uRmFjdG9yeSxcbiAgU3ViQ29sbGVjdGlvblJlZixcbiAgVHlwZWRDb2xsZWN0aW9uLFxufSBmcm9tICcuL2ZpcmVzdG9yZS1jb2xsZWN0aW9uJztcblxuLy8gVXRpbGlkYWRlc1xuZXhwb3J0IHsgUXVlcnlCdWlsZGVyLCBxdWVyeSB9IGZyb20gJy4vdXRpbHMvcXVlcnktYnVpbGRlcic7XG5leHBvcnQge1xuICBidWlsZFBhdGgsXG4gIGV4dHJhY3RQYXRoUGFyYW1zLFxuICBnZXRDb2xsZWN0aW9uUGF0aCxcbiAgZ2V0RG9jdW1lbnRJZCxcbiAgaXNDb2xsZWN0aW9uUGF0aCxcbiAgaXNEb2N1bWVudFBhdGgsXG4gIGlzVmFsaWRQYXRoLFxuICBqb2luUGF0aCxcbn0gZnJvbSAnLi91dGlscy9wYXRoLWJ1aWxkZXInO1xuXG4vLyBTdG9yYWdlXG5leHBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcblxuLy8gTWVzc2FnaW5nIChGQ00pXG5leHBvcnQgeyBNZXNzYWdpbmdTZXJ2aWNlIH0gZnJvbSAnLi9tZXNzYWdpbmcuc2VydmljZSc7XG4iXX0=
|
|
@@ -22359,75 +22359,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
22359
22359
|
}] });
|
|
22360
22360
|
|
|
22361
22361
|
/**
|
|
22362
|
-
* Firestore Collection
|
|
22362
|
+
* Firestore Collection Factory
|
|
22363
22363
|
*
|
|
22364
|
-
*
|
|
22365
|
-
*
|
|
22364
|
+
* Patrón factory para crear instancias de colección tipadas.
|
|
22365
|
+
* Reemplaza la clase abstracta para evitar problemas con inject() en clases no-injectable.
|
|
22366
22366
|
*/
|
|
22367
22367
|
/**
|
|
22368
|
-
*
|
|
22369
|
-
*
|
|
22370
|
-
* Extiende esta clase para crear un servicio dedicado para cada entidad,
|
|
22371
|
-
* con métodos personalizados y tipado fuerte.
|
|
22368
|
+
* Factory para crear instancias de colección tipadas.
|
|
22372
22369
|
*
|
|
22373
22370
|
* @example
|
|
22374
22371
|
* ```typescript
|
|
22375
|
-
* // Definir el modelo
|
|
22376
|
-
* interface User extends FirestoreDocument {
|
|
22377
|
-
* name: string;
|
|
22378
|
-
* email: string;
|
|
22379
|
-
* role: 'admin' | 'user';
|
|
22380
|
-
* active: boolean;
|
|
22381
|
-
* }
|
|
22382
|
-
*
|
|
22383
|
-
* // Crear el servicio
|
|
22384
22372
|
* @Injectable({ providedIn: 'root' })
|
|
22385
|
-
* export class
|
|
22386
|
-
*
|
|
22387
|
-
*
|
|
22388
|
-
*
|
|
22373
|
+
* export class UsersService {
|
|
22374
|
+
* private users = inject(FirestoreCollectionFactory).create<User>('users');
|
|
22375
|
+
*
|
|
22376
|
+
* getAll = () => this.users.getAll();
|
|
22377
|
+
* getById = (id: string) => this.users.getById(id);
|
|
22378
|
+
* create = (data: Omit<User, 'id'>) => this.users.create(data);
|
|
22389
22379
|
*
|
|
22390
22380
|
* // Métodos personalizados
|
|
22391
22381
|
* async getActiveUsers(): Promise<User[]> {
|
|
22392
|
-
* return this.query({
|
|
22382
|
+
* return this.users.query({
|
|
22393
22383
|
* where: [{ field: 'active', operator: '==', value: true }]
|
|
22394
22384
|
* });
|
|
22395
22385
|
* }
|
|
22396
|
-
*
|
|
22397
|
-
* async getAdmins(): Promise<User[]> {
|
|
22398
|
-
* return this.query({
|
|
22399
|
-
* where: [{ field: 'role', operator: '==', value: 'admin' }]
|
|
22400
|
-
* });
|
|
22401
|
-
* }
|
|
22402
|
-
*
|
|
22403
|
-
* watchOnlineUsers(): Observable<User[]> {
|
|
22404
|
-
* return this.watchQuery({
|
|
22405
|
-
* where: [{ field: 'status', operator: '==', value: 'online' }]
|
|
22406
|
-
* });
|
|
22407
|
-
* }
|
|
22408
|
-
* }
|
|
22409
|
-
*
|
|
22410
|
-
* // Usar en componentes
|
|
22411
|
-
* @Component({...})
|
|
22412
|
-
* export class UsersComponent {
|
|
22413
|
-
* private users = inject(UsersCollection);
|
|
22414
|
-
*
|
|
22415
|
-
* admins$ = this.users.getAdmins();
|
|
22416
|
-
* onlineUsers$ = this.users.watchOnlineUsers();
|
|
22417
|
-
*
|
|
22418
|
-
* async createUser(data: Omit<User, 'id'>) {
|
|
22419
|
-
* const user = await this.users.create(data);
|
|
22420
|
-
* }
|
|
22421
22386
|
* }
|
|
22422
22387
|
* ```
|
|
22423
22388
|
*/
|
|
22424
|
-
class
|
|
22389
|
+
class FirestoreCollectionFactory {
|
|
22390
|
+
constructor() {
|
|
22391
|
+
this.firestore = inject(FirestoreService);
|
|
22392
|
+
}
|
|
22425
22393
|
/**
|
|
22394
|
+
* Crea una instancia de colección tipada.
|
|
22395
|
+
*
|
|
22426
22396
|
* @param collectionPath - Ruta de la colección en Firestore
|
|
22427
22397
|
* @param options - Opciones de configuración
|
|
22398
|
+
* @returns Instancia de TypedCollection
|
|
22428
22399
|
*/
|
|
22429
|
-
|
|
22430
|
-
this.firestore
|
|
22400
|
+
create(collectionPath, options) {
|
|
22401
|
+
return new TypedCollection(this.firestore, collectionPath, options);
|
|
22402
|
+
}
|
|
22403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FirestoreCollectionFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
22404
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FirestoreCollectionFactory, providedIn: 'root' }); }
|
|
22405
|
+
}
|
|
22406
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FirestoreCollectionFactory, decorators: [{
|
|
22407
|
+
type: Injectable,
|
|
22408
|
+
args: [{ providedIn: 'root' }]
|
|
22409
|
+
}] });
|
|
22410
|
+
/**
|
|
22411
|
+
* Colección tipada con métodos CRUD.
|
|
22412
|
+
*
|
|
22413
|
+
* NO usa inject() - recibe FirestoreService por constructor.
|
|
22414
|
+
* Esto evita el error NG0203.
|
|
22415
|
+
*/
|
|
22416
|
+
class TypedCollection {
|
|
22417
|
+
constructor(firestore, collectionPath, options = {}) {
|
|
22418
|
+
this.firestore = firestore;
|
|
22431
22419
|
this.collectionPath = collectionPath;
|
|
22432
22420
|
this.options = {
|
|
22433
22421
|
softDelete: false,
|
|
@@ -22566,9 +22554,9 @@ class FirestoreCollection {
|
|
|
22566
22554
|
*
|
|
22567
22555
|
* @example
|
|
22568
22556
|
* ```typescript
|
|
22569
|
-
* // En
|
|
22557
|
+
* // En UsersService
|
|
22570
22558
|
* getUserDocuments(userId: string) {
|
|
22571
|
-
* return this.subcollection<Document>(userId, 'documents');
|
|
22559
|
+
* return this.users.subcollection<Document>(userId, 'documents');
|
|
22572
22560
|
* }
|
|
22573
22561
|
*
|
|
22574
22562
|
* // Uso
|
|
@@ -22588,11 +22576,10 @@ class FirestoreCollection {
|
|
|
22588
22576
|
};
|
|
22589
22577
|
}
|
|
22590
22578
|
// ===========================================================================
|
|
22591
|
-
// MÉTODOS
|
|
22579
|
+
// MÉTODOS PRIVADOS
|
|
22592
22580
|
// ===========================================================================
|
|
22593
22581
|
/**
|
|
22594
22582
|
* Aplica filtros por defecto a las queries.
|
|
22595
|
-
* Override este método para agregar filtros globales (ej: excluir soft-deleted).
|
|
22596
22583
|
*/
|
|
22597
22584
|
applyDefaultFilters(options) {
|
|
22598
22585
|
if (!this.options.softDelete) {
|
|
@@ -23877,5 +23864,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
23877
23864
|
* Generated bundle index. Do not edit.
|
|
23878
23865
|
*/
|
|
23879
23866
|
|
|
23880
|
-
export { APP_IDS, ARTICLE_SPACING, AccordionComponent, ActionHeaderComponent, ActionType, AlertBoxComponent, ArticleBuilder, ArticleComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, CheckInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContentLoaderComponent, CountdownComponent, CurrencyInputComponent, DEFAULT_CANCEL_BUTTON, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_EMPTY_STATE, DEFAULT_LEGEND_LABELS, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PAYMENT_STATUS_COLORS, DEFAULT_PAYMENT_STATUS_LABELS, DEFAULT_PLATFORMS, DEFAULT_STATUS_COLORS, DEFAULT_STATUS_LABELS, DEFAULT_WINNER_LABELS, DataTableComponent, DateInputComponent, DateRangeInputComponent, DisplayComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FIREBASE_PROJECTS, FabComponent, FileInputComponent, FirebaseService,
|
|
23867
|
+
export { APP_IDS, ARTICLE_SPACING, AccordionComponent, ActionHeaderComponent, ActionType, AlertBoxComponent, ArticleBuilder, ArticleComponent, AvatarComponent, BannerComponent, BaseDefault, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, CheckInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContentLoaderComponent, CountdownComponent, CurrencyInputComponent, DEFAULT_CANCEL_BUTTON, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_EMPTY_STATE, DEFAULT_LEGEND_LABELS, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PAYMENT_STATUS_COLORS, DEFAULT_PAYMENT_STATUS_LABELS, DEFAULT_PLATFORMS, DEFAULT_STATUS_COLORS, DEFAULT_STATUS_LABELS, DEFAULT_WINNER_LABELS, DataTableComponent, DateInputComponent, DateRangeInputComponent, DisplayComponent, DividerComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FIREBASE_PROJECTS, FabComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FooterComponent, FooterLinksComponent, FormComponent, FormFooterComponent, FunHeaderComponent, GlowCardComponent, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InfoComponent, InputType, ItemListComponent, LanguageSelectorComponent, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessorService, LinksAccordionComponent, LinksCakeComponent, LocalStorageService, LocaleService, MODAL_SIZES, MOTION, MenuComponent, MessagingService, ModalService, MultiSelectSearchComponent, NavigationService, NoContentComponent, NotesBoxComponent, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PLATFORM_CONFIGS, PageContentComponent, PageTemplateComponent, PageWrapperComponent, PaginationComponent, ParticipantCardComponent, PasswordInputComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, RadioInputComponent, RaffleStatusCardComponent, RangeInputComponent, RatingComponent, RecapCardComponent, RightsFooterComponent, SHARED_EMULATOR_CONFIG, SKELETON_PRESETS, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SegmentControlComponent, SelectSearchComponent, ShareButtonsComponent, SimpleComponent, SkeletonComponent, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, TabbedContentComponent, TabsComponent, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketGridComponent, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, ToolbarActionType, ToolbarComponent, TypedCollection, VALTECH_FIREBASE_CONFIG, WinnerDisplayComponent, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, buildPath, collections, createFirebaseConfig, createGlowCardProps, createNumberFromToField, createTitleProps, extractPathParams, getCollectionPath, getDocumentId, goToTop, hasEmulators, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, provideValtechFirebase, query, replaceSpecialChars, resolveColor, resolveInputDefaultValue, storagePaths };
|
|
23881
23868
|
//# sourceMappingURL=valtech-components.mjs.map
|