@nx-ddd/firestore-angular-adapter 17.7.1 → 17.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,7 +2,7 @@ import { inject, Injectable } from '@angular/core';
|
|
|
2
2
|
import { doc, collection, collectionGroup, Timestamp, setDoc, getDoc, deleteDoc, getDocs, onSnapshot, updateDoc, Firestore, runTransaction, writeBatch, limit, orderBy, query, where, documentId, FieldValue, serverTimestamp, getCountFromServer } from '@angular/fire/firestore';
|
|
3
3
|
import { FirestoreAdapter, provideFirestoreAdapter as _provideFirestoreAdapter, } from '@nx-ddd/firestore/adapters/base';
|
|
4
4
|
import dayjs from 'dayjs';
|
|
5
|
-
import { Observable, map } from 'rxjs';
|
|
5
|
+
import { Observable, map, filter } from 'rxjs';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
function asObservable(ref, _onSnapshot) {
|
|
8
8
|
return new Observable((observer) => _onSnapshot(ref, (value) => observer.next(value), (error) => observer.error(error), () => observer.complete()));
|
|
@@ -18,7 +18,7 @@ export function wrapDocumentReference(origin) {
|
|
|
18
18
|
stateChanges: () => {
|
|
19
19
|
return new Observable((observer) => {
|
|
20
20
|
return onSnapshot(origin, value => observer.next(value), error => observer.error(error), () => observer.complete());
|
|
21
|
-
}).pipe(map((snapshot) => ({
|
|
21
|
+
}).pipe(filter((snapshot) => snapshot.exists()), map((snapshot) => ({
|
|
22
22
|
id: snapshot.id,
|
|
23
23
|
ref: snapshot.ref,
|
|
24
24
|
data: () => snapshot.data(),
|
|
@@ -116,4 +116,4 @@ export function provideAngularFirestoreAdapter() {
|
|
|
116
116
|
export function provideFirestoreAdapter() {
|
|
117
117
|
return _provideFirestoreAdapter(AngularFirestoreAdapter);
|
|
118
118
|
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlLWFuZ3VsYXItYWRhcHRlci9zcmMvbGliL2FuZ3VsYXItZmlyZXN0b3JlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUNMLEdBQUcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUNoQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUM3QyxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUM1RCxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQTRCLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUMvRixrQkFBa0IsRUFDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBR2hCLHVCQUF1QixJQUFJLHdCQUF3QixHQUNwRCxNQUFNLGlDQUFpQyxDQUFDO0FBU3pDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUEyQ3ZDLFNBQVMsWUFBWSxDQUNuQixHQUFxQyxFQUNyQyxXQUE4QjtJQUU5QixPQUFPLElBQUksVUFBVSxDQUFtQixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUMvRCxHQUFHLEVBQ0gsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQ3BDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUNyQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDM0IsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBR25DLE1BQThEO0lBQzlELE9BQU87UUFDTCxLQUFLLEVBQUUsTUFBTTtRQUNiLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7UUFDbkMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDekIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQVcsQ0FBQztRQUNoRCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUMvQixZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxVQUFVLENBQXdCLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3hELE9BQU8sVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3RILENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDZixHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUc7Z0JBQ2pCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUMzQixHQUFHLEVBQUUsQ0FBQyxTQUFpQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQzthQUNwRCxDQUFDLENBQUMsQ0FDSixDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUVoQyxNQUFTO0lBQ1QsT0FBTztRQUNMLEtBQUssRUFBRSxNQUFNO1FBQ2IsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBVSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUNoRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFDO1NBQzlDLENBQUMsQ0FBQyxDQUFDLENBQ0w7UUFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUMxQixLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztLQUN2QyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBSWxDLFVBQXFEO0lBRXJELE9BQU8sVUFBVSxDQUFDLEtBQU0sQ0FBQztBQUMzQixDQUFDO0FBR0QsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGdCQUE2QjtJQUQxRTs7UUFFcUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQTJGbEQ7SUF6RkMsSUFBSSxVQUFVO1FBQ1osT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFDLGVBQWUsRUFBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPO1lBQ0wsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRTtTQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVTLFdBQVcsQ0FBQyxDQUFNO1FBQzFCLE9BQU8sQ0FBQyxZQUFZLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRVMsWUFBWSxDQUFDLENBQU07UUFDM0IsT0FBTyxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxDQUFDO0lBRVMsTUFBTSxDQUFDLENBQU07UUFDckIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFpQjtRQUN0QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELHNCQUFzQixDQUFDLFNBQW9CO1FBQ3pDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxHQUFHLENBR0QsSUFBWTtRQUNaLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFpRCxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxVQUFVLENBR1IsSUFBWTtRQUNaLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLE9BQU8sa0JBQWtCLENBQUMsR0FBRyxDQUFtRCxDQUFDO0lBQ25GLENBQUM7SUFFRCxlQUFlLENBR2IsWUFBb0I7UUFDcEIsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDMUQsT0FBTyxrQkFBa0IsQ0FBQyxHQUFHLENBQStDLENBQUM7SUFDL0UsQ0FBQztJQUVELEtBQUssQ0FJSCxVQUEwRCxFQUMxRCxHQUFHLFlBQXVCO1FBRTFCLE1BQU0sR0FBRyxHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBK0MsQ0FBQztRQUMzRixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBcUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsS0FBSyxDQUFPLFNBQWlCLEVBQUUsS0FBb0IsRUFBRSxLQUFjO1FBQ2pFLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU8sQ0FBTyxHQUFXLEVBQUUsUUFBd0IsS0FBSztRQUN0RCxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBTyxDQUFTO1FBQ25CLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjLENBQUMsRUFBd0M7UUFDckQsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDOzhHQTNGVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVTs7QUErRlgsMkRBQTJEO0FBQzNELE1BQU0sVUFBVSw4QkFBOEI7SUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxPQUFPLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFxuICBkb2MsIGNvbGxlY3Rpb24sIGNvbGxlY3Rpb25Hcm91cCxcbiAgVGltZXN0YW1wLCBzZXREb2MsIGdldERvYywgZGVsZXRlRG9jLCBnZXREb2NzLCBcbiAgb25TbmFwc2hvdCwgdXBkYXRlRG9jLCBGaXJlc3RvcmUsIHJ1blRyYW5zYWN0aW9uLCB3cml0ZUJhdGNoLFxuICBsaW1pdCwgb3JkZXJCeSwgcXVlcnksIHdoZXJlLCBRdWVyeVNuYXBzaG90LCBGaWVsZFBhdGgsIGRvY3VtZW50SWQsIEZpZWxkVmFsdWUsIHNlcnZlclRpbWVzdGFtcCxcbiAgZ2V0Q291bnRGcm9tU2VydmVyXG59IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcbmltcG9ydCB7XG4gIEZpcmVzdG9yZUFkYXB0ZXIsXG4gIFF1ZXJ5Rm4gYXMgX1F1ZXJ5Rm4sXG4gIFdoZXJlRmlsdGVyT3AsXG4gIHByb3ZpZGVGaXJlc3RvcmVBZGFwdGVyIGFzIF9wcm92aWRlRmlyZXN0b3JlQWRhcHRlcixcbn0gZnJvbSAnQG54LWRkZC9maXJlc3RvcmUvYWRhcHRlcnMvYmFzZSc7XG5pbXBvcnQge1xuICBEb2N1bWVudFNuYXBzaG90LFxuICBDb2xsZWN0aW9uUmVmZXJlbmNlIGFzIF9Db2xsZWN0aW9uUmVmZXJlbmNlLFxuICBDb2xsZWN0aW9uR3JvdXAgYXMgX0NvbGxlY3Rpb25Hcm91cCxcbiAgUXVlcnkgYXMgX1F1ZXJ5LFxuICBEb2N1bWVudERhdGEsXG4gIERvY3VtZW50UmVmZXJlbmNlLFxufSBmcm9tICdAbngtZGRkL2ZpcmVzdG9yZS9pbnRlcmZhY2VzJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIGZpcmVzdG9yZSBmcm9tICdmaXJlYmFzZS9maXJlc3RvcmUnO1xuXG50eXBlIENvbGxlY3Rpb25SZWZlcmVuY2U8XG4gIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4+ID0gX0NvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZSwgZmlyZXN0b3JlLkNvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4+O1xuXG50eXBlIENvbGxlY3Rpb25Hcm91cDxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YVxuPiA9IF9Db2xsZWN0aW9uR3JvdXA8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZSwgZmlyZXN0b3JlLlF1ZXJ5PEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+PjtcblxudHlwZSBRdWVyeTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YVxuPiA9IF9RdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBmaXJlc3RvcmUuUXVlcnk8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4+O1xuXG50eXBlIFF1ZXJ5Rm48XG4gIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGFcbj4gPSBfUXVlcnlGbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBmaXJlc3RvcmUuUXVlcnlDb25zdHJhaW50PlxuXG50eXBlIE9yaWdpbjxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbj4gPSBmaXJlc3RvcmUuQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPlxuICB8IGZpcmVzdG9yZS5RdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcblxudHlwZSBDb2xsZWN0aW9uTGlrZTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbj4gPSBDb2xsZWN0aW9uUmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IFxuICB8IENvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPlxuICB8IFF1ZXJ5PEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuXG4vLyBVdGlsaXR5IHR5cGUgdG8gbWFwIE9yaWdpbiB0byBDb2xsZWN0aW9uTGlrZVxudHlwZSBJbmZlckNvbGxlY3Rpb25MaWtlPE8gZXh0ZW5kcyBPcmlnaW4+ID0gXG4gIE8gZXh0ZW5kcyBmaXJlc3RvcmUuQ29sbGVjdGlvblJlZmVyZW5jZTxpbmZlciBBLCBpbmZlciBCPiA/IENvbGxlY3Rpb25SZWZlcmVuY2U8QSwgQj4gOlxuICBPIGV4dGVuZHMgZmlyZXN0b3JlLlF1ZXJ5PGluZmVyIEEsIGluZmVyIEI+ID8gUXVlcnk8QSwgQj4gOlxuICBuZXZlcjtcblxuXG5mdW5jdGlvbiBhc09ic2VydmFibGU8VCA9IHVua25vd24+KFxuICByZWY6IFBhcmFtZXRlcnM8dHlwZW9mIG9uU25hcHNob3Q+WzBdLFxuICBfb25TbmFwc2hvdDogdHlwZW9mIG9uU25hcHNob3QsXG4pOiBPYnNlcnZhYmxlPFF1ZXJ5U25hcHNob3Q8VD4+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFF1ZXJ5U25hcHNob3Q8VD4+KChvYnNlcnZlcikgPT4gX29uU25hcHNob3QoXG4gICAgcmVmLCBcbiAgICAodmFsdWU6IGFueSkgPT4gb2JzZXJ2ZXIubmV4dCh2YWx1ZSksXG4gICAgKGVycm9yOiBhbnkpID0+IG9ic2VydmVyLmVycm9yKGVycm9yKSxcbiAgICAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBEb2N1bWVudFJlZmVyZW5jZTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbj4ob3JpZ2luOiBmaXJlc3RvcmUuRG9jdW1lbnRSZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4pOiBEb2N1bWVudFJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gIHJldHVybiB7XG4gICAgX19yZWY6IG9yaWdpbixcbiAgICBleGlzdHM6ICgpID0+IGdldERvYyhvcmlnaW4pLnRoZW4oc25hcHNob3QgPT4gc25hcHNob3QuZXhpc3RzKCkpLFxuICAgIHNldDogKGRhdGEpID0+IHNldERvYyhvcmlnaW4sIGRhdGEpLFxuICAgIGdldDogKCkgPT4gZ2V0RG9jKG9yaWdpbiksXG4gICAgdXBkYXRlOiAoZGF0YSkgPT4gdXBkYXRlRG9jKG9yaWdpbiwgZGF0YSBhcyBhbnkpLFxuICAgIGRlbGV0ZTogKCkgPT4gZGVsZXRlRG9jKG9yaWdpbiksXG4gICAgc3RhdGVDaGFuZ2VzOiAoKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8RG9jdW1lbnRTbmFwc2hvdDxhbnk+Pigob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIG9uU25hcHNob3Qob3JpZ2luLCB2YWx1ZSA9PiBvYnNlcnZlci5uZXh0KHZhbHVlKSwgZXJyb3IgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpLCAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpKTtcbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIG1hcCgoc25hcHNob3QpID0+ICh7XG4gICAgICAgICAgaWQ6IHNuYXBzaG90LmlkLFxuICAgICAgICAgIHJlZjogc25hcHNob3QucmVmLFxuICAgICAgICAgIGRhdGE6ICgpID0+IHNuYXBzaG90LmRhdGEoKSxcbiAgICAgICAgICBnZXQ6IChmaWVsZFBhdGg6IHN0cmluZykgPT4gc25hcHNob3QuZ2V0KGZpZWxkUGF0aCksXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcENvbGxlY3Rpb25MaWtlPFxuICBPIGV4dGVuZHMgT3JpZ2luLFxuPihvcmlnaW46IE8pOiBJbmZlckNvbGxlY3Rpb25MaWtlPE8+IHtcbiAgcmV0dXJuIHtcbiAgICBfX3JlZjogb3JpZ2luLFxuICAgIHN0YXRlQ2hhbmdlczogKCkgPT4gYXNPYnNlcnZhYmxlPHVua25vd24+KG9yaWdpbiwgb25TbmFwc2hvdCkucGlwZShcbiAgICAgIG1hcCgoc25hcHNob3QpID0+IHNuYXBzaG90LmRvY0NoYW5nZXMoKS5tYXAoY2hhbmdlID0+ICh7XG4gICAgICAgIHR5cGU6IGNoYW5nZS50eXBlLCBwYXlsb2FkOiB7ZG9jOiBjaGFuZ2UuZG9jfSxcbiAgICAgIH0pKSksXG4gICAgKSxcbiAgICBnZXQ6ICgpID0+IGdldERvY3Mob3JpZ2luKSxcbiAgICBjb3VudDogKCkgPT4gZ2V0Q291bnRGcm9tU2VydmVyKG9yaWdpbikudGhlbihjb3VudCA9PiBjb3VudC5kYXRhKCkuY291bnQpLFxuICB9IGFzIG5ldmVyIGFzIEluZmVyQ29sbGVjdGlvbkxpa2U8Tz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBDb2xsZWN0aW9uTGlrZTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YVxuPihcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbkxpa2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT5cbik6IE9yaWdpbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gIHJldHVybiBjb2xsZWN0aW9uLl9fcmVmITtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlc3RvcmVBZGFwdGVyIGV4dGVuZHMgRmlyZXN0b3JlQWRhcHRlcjxkYXlqcy5EYXlqcz4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlyZXN0b3JlID0gaW5qZWN0KEZpcmVzdG9yZSk7XG5cbiAgZ2V0IEZpZWxkVmFsdWUoKTogdHlwZW9mIEZpZWxkVmFsdWUgJiB7c2VydmVyVGltZXN0YW1wOiAoKSA9PiBGaWVsZFZhbHVlfSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oRmllbGRWYWx1ZSwge3NlcnZlclRpbWVzdGFtcH0pO1xuICB9XG5cbiAgZ2V0IFRpbWVzdGFtcCgpOiB0eXBlb2YgVGltZXN0YW1wIHtcbiAgICByZXR1cm4gVGltZXN0YW1wOyAgXG4gIH1cblxuICBnZXQgRmllbGRQYXRoKCk6IHtkb2N1bWVudElkOiAoKSA9PiBGaWVsZFBhdGh9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZG9jdW1lbnRJZDogKCkgPT4gZG9jdW1lbnRJZCgpLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNUaW1lc3RhbXAodjogYW55KTogdiBpcyBUaW1lc3RhbXAge1xuICAgIHJldHVybiB2IGluc3RhbmNlb2YgVGltZXN0YW1wO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzRmllbGRWYWx1ZSh2OiBhbnkpOiB2IGlzIEZpZWxkVmFsdWUge1xuICAgIHJldHVybiB2IGluc3RhbmNlb2YgdGhpcy5GaWVsZFZhbHVlO1xuICB9XG4gIFxuICBwcm90ZWN0ZWQgaXNEYXRlKHY6IGFueSk6IHYgaXMgZGF5anMuRGF5anMge1xuICAgIHJldHVybiBkYXlqcy5pc0RheWpzKHYpO1xuICB9XG5cbiAgY29udmVydERhdGVUb1RpbWVzdGFtcChkYXRlOiBkYXlqcy5EYXlqcyk6IFRpbWVzdGFtcCB7XG4gICAgcmV0dXJuIFRpbWVzdGFtcC5mcm9tRGF0ZShkYXRlLnRvRGF0ZSgpKTtcbiAgfVxuXG4gIGNvbnZlcnRUaW1lc3RhbXBUb0RhdGUodGltZXN0YW1wOiBUaW1lc3RhbXApOiBkYXlqcy5EYXlqcyB7XG4gICAgcmV0dXJuIGRheWpzKHRpbWVzdGFtcC50b0RhdGUoKSk7XG4gIH1cblxuICBkb2M8XG4gICAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICAgIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuICA+KHBhdGg6IHN0cmluZyk6IERvY3VtZW50UmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IHtcbiAgICBjb25zdCBkb2NSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIHBhdGgpO1xuICAgIHJldHVybiB3cmFwRG9jdW1lbnRSZWZlcmVuY2UoZG9jUmVmKSBhcyBEb2N1bWVudFJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcbiAgfVxuXG4gIGNvbGxlY3Rpb248XG4gICAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICAgIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuICA+KHBhdGg6IHN0cmluZyk6IENvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4ge1xuICAgIGNvbnN0IHJlZiA9IGNvbGxlY3Rpb24odGhpcy5maXJlc3RvcmUsIHBhdGgpO1xuICAgIHJldHVybiB3cmFwQ29sbGVjdGlvbkxpa2UocmVmKSBhcyBDb2xsZWN0aW9uUmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuICB9XG5cbiAgY29sbGVjdGlvbkdyb3VwPFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihjb2xsZWN0aW9uSWQ6IHN0cmluZyk6IENvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gICAgY29uc3QgcmVmID0gY29sbGVjdGlvbkdyb3VwKHRoaXMuZmlyZXN0b3JlLCBjb2xsZWN0aW9uSWQpO1xuICAgIHJldHVybiB3cmFwQ29sbGVjdGlvbkxpa2UocmVmKSBhcyBDb2xsZWN0aW9uR3JvdXA8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT47XG4gIH1cblxuICBxdWVyeTxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPixcbiAgICAuLi5xdWVyeUZuQXJyYXk6IFF1ZXJ5Rm5bXVxuICApOiBRdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gICAgY29uc3QgcmVmID0gdW53cmFwQ29sbGVjdGlvbkxpa2UoY29sbGVjdGlvbikgYXMgZmlyZXN0b3JlLlF1ZXJ5PERvY3VtZW50RGF0YSwgRGJNb2RlbFR5cGU+O1xuICAgIGNvbnN0IF9xdWVyeSA9IHF1ZXJ5KHJlZiwgLi4ucXVlcnlGbkFycmF5Lm1hcChxdWVyeUZuID0+IHF1ZXJ5Rm4oKSkpO1xuICAgIHJldHVybiB3cmFwQ29sbGVjdGlvbkxpa2UoX3F1ZXJ5KSBhcyBRdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcbiAgfVxuXG4gIHdoZXJlPERhdGE+KGZpZWxkUGF0aDogc3RyaW5nLCBvcFN0cjogV2hlcmVGaWx0ZXJPcCwgdmFsdWU6IHVua25vd24pOiBRdWVyeUZuPERhdGE+IHtcbiAgICByZXR1cm4gKCkgPT4gd2hlcmUoZmllbGRQYXRoLCBvcFN0ciwgdmFsdWUpO1xuICB9XG5cbiAgb3JkZXJCeTxEYXRhPihrZXk6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycpOiBRdWVyeUZuPERhdGE+IHtcbiAgICByZXR1cm4gKCkgPT4gb3JkZXJCeShrZXksIG9yZGVyKTtcbiAgfVxuXG4gIGxpbWl0PERhdGE+KG46IG51bWJlcik6IFF1ZXJ5Rm48RGF0YT4ge1xuICAgIHJldHVybiAoKSA9PiBsaW1pdChuKTtcbiAgfVxuXG4gIHJ1blRyYW5zYWN0aW9uKGZuOiBQYXJhbWV0ZXJzPHR5cGVvZiBydW5UcmFuc2FjdGlvbj5bMV0pIHtcbiAgICByZXR1cm4gcnVuVHJhbnNhY3Rpb24odGhpcy5maXJlc3RvcmUsIGZuKTtcbiAgfVxuXG4gIGJhdGNoKCkge1xuICAgIHJldHVybiB3cml0ZUJhdGNoKHRoaXMuZmlyZXN0b3JlKTtcbiAgfVxufVxuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBwcm92aWRlRmlyZXN0b3JlQWRhcHRlcigpYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBbmd1bGFyRmlyZXN0b3JlQWRhcHRlcigpOiBQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGU6IEZpcmVzdG9yZUFkYXB0ZXIsIHVzZUNsYXNzOiBBbmd1bGFyRmlyZXN0b3JlQWRhcHRlciB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpcmVzdG9yZUFkYXB0ZXIoKTogUHJvdmlkZXIge1xuICByZXR1cm4gX3Byb3ZpZGVGaXJlc3RvcmVBZGFwdGVyKEFuZ3VsYXJGaXJlc3RvcmVBZGFwdGVyKTtcbn1cbiJdfQ==
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BueC1kZGQvZmlyZXN0b3JlLWFuZ3VsYXItYWRhcHRlci9zcmMvbGliL2FuZ3VsYXItZmlyZXN0b3JlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUNMLEdBQUcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUNoQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUM3QyxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUM1RCxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQTRCLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUMvRixrQkFBa0IsRUFDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBR2hCLHVCQUF1QixJQUFJLHdCQUF3QixHQUNwRCxNQUFNLGlDQUFpQyxDQUFDO0FBU3pDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBTyxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBMkNwRCxTQUFTLFlBQVksQ0FDbkIsR0FBcUMsRUFDckMsV0FBOEI7SUFFOUIsT0FBTyxJQUFJLFVBQVUsQ0FBbUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FDL0QsR0FBRyxFQUNILENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUNwQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDckMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUduQyxNQUE4RDtJQUM5RCxPQUFPO1FBQ0wsS0FBSyxFQUFFLE1BQU07UUFDYixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1FBQ25DLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFXLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDL0IsWUFBWSxFQUFFLEdBQUcsRUFBRTtZQUNqQixPQUFPLElBQUksVUFBVSxDQUF3QixDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUN4RCxPQUFPLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN0SCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ0wsTUFBTSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFDNUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQixFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2YsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHO2dCQUNqQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDM0IsR0FBRyxFQUFFLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7YUFDcEQsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNKLENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FFaEMsTUFBUztJQUNULE9BQU87UUFDTCxLQUFLLEVBQUUsTUFBTTtRQUNiLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQVUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDaEUsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBQztTQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUNMO1FBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDMUIsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7S0FDdkMsQ0FBQztBQUN2QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUlsQyxVQUFxRDtJQUVyRCxPQUFPLFVBQVUsQ0FBQyxLQUFNLENBQUM7QUFDM0IsQ0FBQztBQUdELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBNkI7SUFEMUU7O1FBRXFCLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0EyRmxEO0lBekZDLElBQUksVUFBVTtRQUNaLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBQyxlQUFlLEVBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTztZQUNMLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUU7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFUyxXQUFXLENBQUMsQ0FBTTtRQUMxQixPQUFPLENBQUMsWUFBWSxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVTLFlBQVksQ0FBQyxDQUFNO1FBQzNCLE9BQU8sQ0FBQyxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDdEMsQ0FBQztJQUVTLE1BQU0sQ0FBQyxDQUFNO1FBQ3JCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsc0JBQXNCLENBQUMsSUFBaUI7UUFDdEMsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxTQUFvQjtRQUN6QyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsR0FBRyxDQUdELElBQVk7UUFDWixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QyxPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBaUQsQ0FBQztJQUN2RixDQUFDO0lBRUQsVUFBVSxDQUdSLElBQVk7UUFDWixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxPQUFPLGtCQUFrQixDQUFDLEdBQUcsQ0FBbUQsQ0FBQztJQUNuRixDQUFDO0lBRUQsZUFBZSxDQUdiLFlBQW9CO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFELE9BQU8sa0JBQWtCLENBQUMsR0FBRyxDQUErQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxLQUFLLENBSUgsVUFBMEQsRUFDMUQsR0FBRyxZQUF1QjtRQUUxQixNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQStDLENBQUM7UUFDM0YsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQXFDLENBQUM7SUFDeEUsQ0FBQztJQUVELEtBQUssQ0FBTyxTQUFpQixFQUFFLEtBQW9CLEVBQUUsS0FBYztRQUNqRSxPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPLENBQU8sR0FBVyxFQUFFLFFBQXdCLEtBQUs7UUFDdEQsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQU8sQ0FBUztRQUNuQixPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQXdDO1FBQ3JELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs4R0EzRlUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7O0FBK0ZYLDJEQUEyRDtBQUMzRCxNQUFNLFVBQVUsOEJBQThCO0lBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLENBQUM7QUFDMUUsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUI7SUFDckMsT0FBTyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBcbiAgZG9jLCBjb2xsZWN0aW9uLCBjb2xsZWN0aW9uR3JvdXAsXG4gIFRpbWVzdGFtcCwgc2V0RG9jLCBnZXREb2MsIGRlbGV0ZURvYywgZ2V0RG9jcywgXG4gIG9uU25hcHNob3QsIHVwZGF0ZURvYywgRmlyZXN0b3JlLCBydW5UcmFuc2FjdGlvbiwgd3JpdGVCYXRjaCxcbiAgbGltaXQsIG9yZGVyQnksIHF1ZXJ5LCB3aGVyZSwgUXVlcnlTbmFwc2hvdCwgRmllbGRQYXRoLCBkb2N1bWVudElkLCBGaWVsZFZhbHVlLCBzZXJ2ZXJUaW1lc3RhbXAsXG4gIGdldENvdW50RnJvbVNlcnZlclxufSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQge1xuICBGaXJlc3RvcmVBZGFwdGVyLFxuICBRdWVyeUZuIGFzIF9RdWVyeUZuLFxuICBXaGVyZUZpbHRlck9wLFxuICBwcm92aWRlRmlyZXN0b3JlQWRhcHRlciBhcyBfcHJvdmlkZUZpcmVzdG9yZUFkYXB0ZXIsXG59IGZyb20gJ0BueC1kZGQvZmlyZXN0b3JlL2FkYXB0ZXJzL2Jhc2UnO1xuaW1wb3J0IHtcbiAgRG9jdW1lbnRTbmFwc2hvdCxcbiAgQ29sbGVjdGlvblJlZmVyZW5jZSBhcyBfQ29sbGVjdGlvblJlZmVyZW5jZSxcbiAgQ29sbGVjdGlvbkdyb3VwIGFzIF9Db2xsZWN0aW9uR3JvdXAsXG4gIFF1ZXJ5IGFzIF9RdWVyeSxcbiAgRG9jdW1lbnREYXRhLFxuICBEb2N1bWVudFJlZmVyZW5jZSxcbn0gZnJvbSAnQG54LWRkZC9maXJlc3RvcmUvaW50ZXJmYWNlcyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCB0YXAsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgZmlyZXN0b3JlIGZyb20gJ2ZpcmViYXNlL2ZpcmVzdG9yZSc7XG5cbnR5cGUgQ29sbGVjdGlvblJlZmVyZW5jZTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbj4gPSBfQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBmaXJlc3RvcmUuQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPj47XG5cbnR5cGUgQ29sbGVjdGlvbkdyb3VwPFxuICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhXG4+ID0gX0NvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlLCBmaXJlc3RvcmUuUXVlcnk8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4+O1xuXG50eXBlIFF1ZXJ5PFxuICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhXG4+ID0gX1F1ZXJ5PEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGUsIGZpcmVzdG9yZS5RdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPj47XG5cbnR5cGUgUXVlcnlGbjxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YVxuPiA9IF9RdWVyeUZuPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGUsIGZpcmVzdG9yZS5RdWVyeUNvbnN0cmFpbnQ+XG5cbnR5cGUgT3JpZ2luPFxuICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuPiA9IGZpcmVzdG9yZS5Db2xsZWN0aW9uUmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+XG4gIHwgZmlyZXN0b3JlLlF1ZXJ5PEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuXG50eXBlIENvbGxlY3Rpb25MaWtlPFxuICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuPiA9IENvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4gXG4gIHwgQ29sbGVjdGlvbkdyb3VwPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+XG4gIHwgUXVlcnk8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT47XG5cbi8vIFV0aWxpdHkgdHlwZSB0byBtYXAgT3JpZ2luIHRvIENvbGxlY3Rpb25MaWtlXG50eXBlIEluZmVyQ29sbGVjdGlvbkxpa2U8TyBleHRlbmRzIE9yaWdpbj4gPSBcbiAgTyBleHRlbmRzIGZpcmVzdG9yZS5Db2xsZWN0aW9uUmVmZXJlbmNlPGluZmVyIEEsIGluZmVyIEI+ID8gQ29sbGVjdGlvblJlZmVyZW5jZTxBLCBCPiA6XG4gIE8gZXh0ZW5kcyBmaXJlc3RvcmUuUXVlcnk8aW5mZXIgQSwgaW5mZXIgQj4gPyBRdWVyeTxBLCBCPiA6XG4gIG5ldmVyO1xuXG5cbmZ1bmN0aW9uIGFzT2JzZXJ2YWJsZTxUID0gdW5rbm93bj4oXG4gIHJlZjogUGFyYW1ldGVyczx0eXBlb2Ygb25TbmFwc2hvdD5bMF0sXG4gIF9vblNuYXBzaG90OiB0eXBlb2Ygb25TbmFwc2hvdCxcbik6IE9ic2VydmFibGU8UXVlcnlTbmFwc2hvdDxUPj4ge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGU8UXVlcnlTbmFwc2hvdDxUPj4oKG9ic2VydmVyKSA9PiBfb25TbmFwc2hvdChcbiAgICByZWYsIFxuICAgICh2YWx1ZTogYW55KSA9PiBvYnNlcnZlci5uZXh0KHZhbHVlKSxcbiAgICAoZXJyb3I6IGFueSkgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpLFxuICAgICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcERvY3VtZW50UmVmZXJlbmNlPFxuICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuPihvcmlnaW46IGZpcmVzdG9yZS5Eb2N1bWVudFJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPik6IERvY3VtZW50UmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IHtcbiAgcmV0dXJuIHtcbiAgICBfX3JlZjogb3JpZ2luLFxuICAgIGV4aXN0czogKCkgPT4gZ2V0RG9jKG9yaWdpbikudGhlbihzbmFwc2hvdCA9PiBzbmFwc2hvdC5leGlzdHMoKSksXG4gICAgc2V0OiAoZGF0YSkgPT4gc2V0RG9jKG9yaWdpbiwgZGF0YSksXG4gICAgZ2V0OiAoKSA9PiBnZXREb2Mob3JpZ2luKSxcbiAgICB1cGRhdGU6IChkYXRhKSA9PiB1cGRhdGVEb2Mob3JpZ2luLCBkYXRhIGFzIGFueSksXG4gICAgZGVsZXRlOiAoKSA9PiBkZWxldGVEb2Mob3JpZ2luKSxcbiAgICBzdGF0ZUNoYW5nZXM6ICgpID0+IHtcbiAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PGFueT4+KChvYnNlcnZlcikgPT4ge1xuICAgICAgICByZXR1cm4gb25TbmFwc2hvdChvcmlnaW4sIHZhbHVlID0+IG9ic2VydmVyLm5leHQodmFsdWUpLCBlcnJvciA9PiBvYnNlcnZlci5lcnJvcihlcnJvciksICgpID0+IG9ic2VydmVyLmNvbXBsZXRlKCkpO1xuICAgICAgfSkucGlwZShcbiAgICAgICAgZmlsdGVyKChzbmFwc2hvdDogYW55KSA9PiBzbmFwc2hvdC5leGlzdHMoKSksXG4gICAgICAgIG1hcCgoc25hcHNob3QpID0+ICh7XG4gICAgICAgICAgaWQ6IHNuYXBzaG90LmlkLFxuICAgICAgICAgIHJlZjogc25hcHNob3QucmVmLFxuICAgICAgICAgIGRhdGE6ICgpID0+IHNuYXBzaG90LmRhdGEoKSxcbiAgICAgICAgICBnZXQ6IChmaWVsZFBhdGg6IHN0cmluZykgPT4gc25hcHNob3QuZ2V0KGZpZWxkUGF0aCksXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcENvbGxlY3Rpb25MaWtlPFxuICBPIGV4dGVuZHMgT3JpZ2luLFxuPihvcmlnaW46IE8pOiBJbmZlckNvbGxlY3Rpb25MaWtlPE8+IHtcbiAgcmV0dXJuIHtcbiAgICBfX3JlZjogb3JpZ2luLFxuICAgIHN0YXRlQ2hhbmdlczogKCkgPT4gYXNPYnNlcnZhYmxlPHVua25vd24+KG9yaWdpbiwgb25TbmFwc2hvdCkucGlwZShcbiAgICAgIG1hcCgoc25hcHNob3QpID0+IHNuYXBzaG90LmRvY0NoYW5nZXMoKS5tYXAoY2hhbmdlID0+ICh7XG4gICAgICAgIHR5cGU6IGNoYW5nZS50eXBlLCBwYXlsb2FkOiB7ZG9jOiBjaGFuZ2UuZG9jfSxcbiAgICAgIH0pKSksXG4gICAgKSxcbiAgICBnZXQ6ICgpID0+IGdldERvY3Mob3JpZ2luKSxcbiAgICBjb3VudDogKCkgPT4gZ2V0Q291bnRGcm9tU2VydmVyKG9yaWdpbikudGhlbihjb3VudCA9PiBjb3VudC5kYXRhKCkuY291bnQpLFxuICB9IGFzIG5ldmVyIGFzIEluZmVyQ29sbGVjdGlvbkxpa2U8Tz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBDb2xsZWN0aW9uTGlrZTxcbiAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YVxuPihcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbkxpa2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT5cbik6IE9yaWdpbjxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gIHJldHVybiBjb2xsZWN0aW9uLl9fcmVmITtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJGaXJlc3RvcmVBZGFwdGVyIGV4dGVuZHMgRmlyZXN0b3JlQWRhcHRlcjxkYXlqcy5EYXlqcz4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlyZXN0b3JlID0gaW5qZWN0KEZpcmVzdG9yZSk7XG5cbiAgZ2V0IEZpZWxkVmFsdWUoKTogdHlwZW9mIEZpZWxkVmFsdWUgJiB7c2VydmVyVGltZXN0YW1wOiAoKSA9PiBGaWVsZFZhbHVlfSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oRmllbGRWYWx1ZSwge3NlcnZlclRpbWVzdGFtcH0pO1xuICB9XG5cbiAgZ2V0IFRpbWVzdGFtcCgpOiB0eXBlb2YgVGltZXN0YW1wIHtcbiAgICByZXR1cm4gVGltZXN0YW1wOyAgXG4gIH1cblxuICBnZXQgRmllbGRQYXRoKCk6IHtkb2N1bWVudElkOiAoKSA9PiBGaWVsZFBhdGh9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZG9jdW1lbnRJZDogKCkgPT4gZG9jdW1lbnRJZCgpLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNUaW1lc3RhbXAodjogYW55KTogdiBpcyBUaW1lc3RhbXAge1xuICAgIHJldHVybiB2IGluc3RhbmNlb2YgVGltZXN0YW1wO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzRmllbGRWYWx1ZSh2OiBhbnkpOiB2IGlzIEZpZWxkVmFsdWUge1xuICAgIHJldHVybiB2IGluc3RhbmNlb2YgdGhpcy5GaWVsZFZhbHVlO1xuICB9XG4gIFxuICBwcm90ZWN0ZWQgaXNEYXRlKHY6IGFueSk6IHYgaXMgZGF5anMuRGF5anMge1xuICAgIHJldHVybiBkYXlqcy5pc0RheWpzKHYpO1xuICB9XG5cbiAgY29udmVydERhdGVUb1RpbWVzdGFtcChkYXRlOiBkYXlqcy5EYXlqcyk6IFRpbWVzdGFtcCB7XG4gICAgcmV0dXJuIFRpbWVzdGFtcC5mcm9tRGF0ZShkYXRlLnRvRGF0ZSgpKTtcbiAgfVxuXG4gIGNvbnZlcnRUaW1lc3RhbXBUb0RhdGUodGltZXN0YW1wOiBUaW1lc3RhbXApOiBkYXlqcy5EYXlqcyB7XG4gICAgcmV0dXJuIGRheWpzKHRpbWVzdGFtcC50b0RhdGUoKSk7XG4gIH1cblxuICBkb2M8XG4gICAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICAgIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuICA+KHBhdGg6IHN0cmluZyk6IERvY3VtZW50UmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+IHtcbiAgICBjb25zdCBkb2NSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIHBhdGgpO1xuICAgIHJldHVybiB3cmFwRG9jdW1lbnRSZWZlcmVuY2UoZG9jUmVmKSBhcyBEb2N1bWVudFJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcbiAgfVxuXG4gIGNvbGxlY3Rpb248XG4gICAgQXBwTW9kZWxUeXBlID0gRG9jdW1lbnREYXRhLFxuICAgIERiTW9kZWxUeXBlIGV4dGVuZHMgRG9jdW1lbnREYXRhID0gRG9jdW1lbnREYXRhLFxuICA+KHBhdGg6IHN0cmluZyk6IENvbGxlY3Rpb25SZWZlcmVuY2U8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT4ge1xuICAgIGNvbnN0IHJlZiA9IGNvbGxlY3Rpb24odGhpcy5maXJlc3RvcmUsIHBhdGgpO1xuICAgIHJldHVybiB3cmFwQ29sbGVjdGlvbkxpa2UocmVmKSBhcyBDb2xsZWN0aW9uUmVmZXJlbmNlPEFwcE1vZGVsVHlwZSwgRGJNb2RlbFR5cGU+O1xuICB9XG5cbiAgY29sbGVjdGlvbkdyb3VwPFxuICAgIEFwcE1vZGVsVHlwZSA9IERvY3VtZW50RGF0YSxcbiAgICBEYk1vZGVsVHlwZSBleHRlbmRzIERvY3VtZW50RGF0YSA9IERvY3VtZW50RGF0YSxcbiAgPihjb2xsZWN0aW9uSWQ6IHN0cmluZyk6IENvbGxlY3Rpb25Hcm91cDxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gICAgY29uc3QgcmVmID0gY29sbGVjdGlvbkdyb3VwKHRoaXMuZmlyZXN0b3JlLCBjb2xsZWN0aW9uSWQpO1xuICAgIHJldHVybiB3cmFwQ29sbGVjdGlvbkxpa2UocmVmKSBhcyBDb2xsZWN0aW9uR3JvdXA8QXBwTW9kZWxUeXBlLCBEYk1vZGVsVHlwZT47XG4gIH1cblxuICBxdWVyeTxcbiAgICBBcHBNb2RlbFR5cGUgPSBEb2N1bWVudERhdGEsXG4gICAgRGJNb2RlbFR5cGUgZXh0ZW5kcyBEb2N1bWVudERhdGEgPSBEb2N1bWVudERhdGEsXG4gID4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvblJlZmVyZW5jZTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPixcbiAgICAuLi5xdWVyeUZuQXJyYXk6IFF1ZXJ5Rm5bXVxuICApOiBRdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPiB7XG4gICAgY29uc3QgcmVmID0gdW53cmFwQ29sbGVjdGlvbkxpa2UoY29sbGVjdGlvbikgYXMgZmlyZXN0b3JlLlF1ZXJ5PERvY3VtZW50RGF0YSwgRGJNb2RlbFR5cGU+O1xuICAgIGNvbnN0IF9xdWVyeSA9IHF1ZXJ5KHJlZiwgLi4ucXVlcnlGbkFycmF5Lm1hcChxdWVyeUZuID0+IHF1ZXJ5Rm4oKSkpO1xuICAgIHJldHVybiB3cmFwQ29sbGVjdGlvbkxpa2UoX3F1ZXJ5KSBhcyBRdWVyeTxBcHBNb2RlbFR5cGUsIERiTW9kZWxUeXBlPjtcbiAgfVxuXG4gIHdoZXJlPERhdGE+KGZpZWxkUGF0aDogc3RyaW5nLCBvcFN0cjogV2hlcmVGaWx0ZXJPcCwgdmFsdWU6IHVua25vd24pOiBRdWVyeUZuPERhdGE+IHtcbiAgICByZXR1cm4gKCkgPT4gd2hlcmUoZmllbGRQYXRoLCBvcFN0ciwgdmFsdWUpO1xuICB9XG5cbiAgb3JkZXJCeTxEYXRhPihrZXk6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycpOiBRdWVyeUZuPERhdGE+IHtcbiAgICByZXR1cm4gKCkgPT4gb3JkZXJCeShrZXksIG9yZGVyKTtcbiAgfVxuXG4gIGxpbWl0PERhdGE+KG46IG51bWJlcik6IFF1ZXJ5Rm48RGF0YT4ge1xuICAgIHJldHVybiAoKSA9PiBsaW1pdChuKTtcbiAgfVxuXG4gIHJ1blRyYW5zYWN0aW9uKGZuOiBQYXJhbWV0ZXJzPHR5cGVvZiBydW5UcmFuc2FjdGlvbj5bMV0pIHtcbiAgICByZXR1cm4gcnVuVHJhbnNhY3Rpb24odGhpcy5maXJlc3RvcmUsIGZuKTtcbiAgfVxuXG4gIGJhdGNoKCkge1xuICAgIHJldHVybiB3cml0ZUJhdGNoKHRoaXMuZmlyZXN0b3JlKTtcbiAgfVxufVxuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGBwcm92aWRlRmlyZXN0b3JlQWRhcHRlcigpYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBbmd1bGFyRmlyZXN0b3JlQWRhcHRlcigpOiBQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGU6IEZpcmVzdG9yZUFkYXB0ZXIsIHVzZUNsYXNzOiBBbmd1bGFyRmlyZXN0b3JlQWRhcHRlciB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUZpcmVzdG9yZUFkYXB0ZXIoKTogUHJvdmlkZXIge1xuICByZXR1cm4gX3Byb3ZpZGVGaXJlc3RvcmVBZGFwdGVyKEFuZ3VsYXJGaXJlc3RvcmVBZGFwdGVyKTtcbn1cbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { inject, Injectable } from '@angular/core';
|
|
|
3
3
|
import { getDoc, setDoc, updateDoc, deleteDoc, onSnapshot, getDocs, getCountFromServer, Firestore, FieldValue, serverTimestamp, Timestamp, documentId, doc, collection, collectionGroup, query, where, orderBy, limit, runTransaction, writeBatch } from '@angular/fire/firestore';
|
|
4
4
|
import { FirestoreAdapter, provideFirestoreAdapter as provideFirestoreAdapter$1 } from '@nx-ddd/firestore/adapters/base';
|
|
5
5
|
import dayjs from 'dayjs';
|
|
6
|
-
import { Observable, map } from 'rxjs';
|
|
6
|
+
import { Observable, filter, map } from 'rxjs';
|
|
7
7
|
|
|
8
8
|
function asObservable(ref, _onSnapshot) {
|
|
9
9
|
return new Observable((observer) => _onSnapshot(ref, (value) => observer.next(value), (error) => observer.error(error), () => observer.complete()));
|
|
@@ -19,7 +19,7 @@ function wrapDocumentReference(origin) {
|
|
|
19
19
|
stateChanges: () => {
|
|
20
20
|
return new Observable((observer) => {
|
|
21
21
|
return onSnapshot(origin, value => observer.next(value), error => observer.error(error), () => observer.complete());
|
|
22
|
-
}).pipe(map((snapshot) => ({
|
|
22
|
+
}).pipe(filter((snapshot) => snapshot.exists()), map((snapshot) => ({
|
|
23
23
|
id: snapshot.id,
|
|
24
24
|
ref: snapshot.ref,
|
|
25
25
|
data: () => snapshot.data(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nx-ddd-firestore-angular-adapter.mjs","sources":["../../../../../packages/@nx-ddd/firestore-angular-adapter/src/lib/angular-firestore.adapter.ts","../../../../../packages/@nx-ddd/firestore-angular-adapter/src/nx-ddd-firestore-angular-adapter.ts"],"sourcesContent":["import { inject, Injectable, Provider } from '@angular/core';\nimport { \n doc, collection, collectionGroup,\n Timestamp, setDoc, getDoc, deleteDoc, getDocs, \n onSnapshot, updateDoc, Firestore, runTransaction, writeBatch,\n limit, orderBy, query, where, QuerySnapshot, FieldPath, documentId, FieldValue, serverTimestamp,\n getCountFromServer\n} from '@angular/fire/firestore';\nimport {\n FirestoreAdapter,\n QueryFn as _QueryFn,\n WhereFilterOp,\n provideFirestoreAdapter as _provideFirestoreAdapter,\n} from '@nx-ddd/firestore/adapters/base';\nimport {\n DocumentSnapshot,\n CollectionReference as _CollectionReference,\n CollectionGroup as _CollectionGroup,\n Query as _Query,\n DocumentData,\n DocumentReference,\n} from '@nx-ddd/firestore/interfaces';\nimport dayjs from 'dayjs';\nimport { Observable, map } from 'rxjs';\nimport type firestore from 'firebase/firestore';\n\ntype CollectionReference<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = _CollectionReference<AppModelType, DbModelType, firestore.CollectionReference<AppModelType, DbModelType>>;\n\ntype CollectionGroup<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _CollectionGroup<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;\n\ntype Query<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _Query<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;\n\ntype QueryFn<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _QueryFn<AppModelType, DbModelType, firestore.QueryConstraint>\n\ntype Origin<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = firestore.CollectionReference<AppModelType, DbModelType>\n | firestore.Query<AppModelType, DbModelType>;\n\ntype CollectionLike<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = CollectionReference<AppModelType, DbModelType> \n | CollectionGroup<AppModelType, DbModelType>\n | Query<AppModelType, DbModelType>;\n\n// Utility type to map Origin to CollectionLike\ntype InferCollectionLike<O extends Origin> = \n O extends firestore.CollectionReference<infer A, infer B> ? CollectionReference<A, B> :\n O extends firestore.Query<infer A, infer B> ? Query<A, B> :\n never;\n\n\nfunction asObservable<T = unknown>(\n ref: Parameters<typeof onSnapshot>[0],\n _onSnapshot: typeof onSnapshot,\n): Observable<QuerySnapshot<T>> {\n return new Observable<QuerySnapshot<T>>((observer) => _onSnapshot(\n ref, \n (value: any) => observer.next(value),\n (error: any) => observer.error(error),\n () => observer.complete()),\n );\n}\n\nexport function wrapDocumentReference<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n>(origin: firestore.DocumentReference<AppModelType, DbModelType>): DocumentReference<AppModelType, DbModelType> {\n return {\n __ref: origin,\n exists: () => getDoc(origin).then(snapshot => snapshot.exists()),\n set: (data) => setDoc(origin, data),\n get: () => getDoc(origin),\n update: (data) => updateDoc(origin, data as any),\n delete: () => deleteDoc(origin),\n stateChanges: () => {\n return new Observable<DocumentSnapshot<any>>((observer) => {\n return onSnapshot(origin, value => observer.next(value), error => observer.error(error), () => observer.complete());\n }).pipe(\n map((snapshot) => ({\n id: snapshot.id,\n ref: snapshot.ref,\n data: () => snapshot.data(),\n get: (fieldPath: string) => snapshot.get(fieldPath),\n })),\n );\n },\n }\n}\n\nexport function wrapCollectionLike<\n O extends Origin,\n>(origin: O): InferCollectionLike<O> {\n return {\n __ref: origin,\n stateChanges: () => asObservable<unknown>(origin, onSnapshot).pipe(\n map((snapshot) => snapshot.docChanges().map(change => ({\n type: change.type, payload: {doc: change.doc},\n }))),\n ),\n get: () => getDocs(origin),\n count: () => getCountFromServer(origin).then(count => count.data().count),\n } as never as InferCollectionLike<O>;\n}\n\nexport function unwrapCollectionLike<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n>(\n collection: CollectionLike<AppModelType, DbModelType>\n): Origin<AppModelType, DbModelType> {\n return collection.__ref!;\n}\n\n@Injectable()\nexport class AngularFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {\n protected readonly firestore = inject(Firestore);\n\n get FieldValue(): typeof FieldValue & {serverTimestamp: () => FieldValue} {\n return Object.assign(FieldValue, {serverTimestamp});\n }\n\n get Timestamp(): typeof Timestamp {\n return Timestamp; \n }\n\n get FieldPath(): {documentId: () => FieldPath} {\n return {\n documentId: () => documentId(),\n };\n }\n\n protected isTimestamp(v: any): v is Timestamp {\n return v instanceof Timestamp;\n }\n\n protected isFieldValue(v: any): v is FieldValue {\n return v instanceof this.FieldValue;\n }\n \n protected isDate(v: any): v is dayjs.Dayjs {\n return dayjs.isDayjs(v);\n }\n\n convertDateToTimestamp(date: dayjs.Dayjs): Timestamp {\n return Timestamp.fromDate(date.toDate());\n }\n\n convertTimestampToDate(timestamp: Timestamp): dayjs.Dayjs {\n return dayjs(timestamp.toDate());\n }\n\n doc<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(path: string): DocumentReference<AppModelType, DbModelType> {\n const docRef = doc(this.firestore, path);\n return wrapDocumentReference(docRef) as DocumentReference<AppModelType, DbModelType>;\n }\n\n collection<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(path: string): CollectionReference<AppModelType, DbModelType> {\n const ref = collection(this.firestore, path);\n return wrapCollectionLike(ref) as CollectionReference<AppModelType, DbModelType>;\n }\n\n collectionGroup<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(collectionId: string): CollectionGroup<AppModelType, DbModelType> {\n const ref = collectionGroup(this.firestore, collectionId);\n return wrapCollectionLike(ref) as CollectionGroup<AppModelType, DbModelType>;\n }\n\n query<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(\n collection: CollectionReference<AppModelType, DbModelType>,\n ...queryFnArray: QueryFn[]\n ): Query<AppModelType, DbModelType> {\n const ref = unwrapCollectionLike(collection) as firestore.Query<DocumentData, DbModelType>;\n const _query = query(ref, ...queryFnArray.map(queryFn => queryFn()));\n return wrapCollectionLike(_query) as Query<AppModelType, DbModelType>;\n }\n\n where<Data>(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn<Data> {\n return () => where(fieldPath, opStr, value);\n }\n\n orderBy<Data>(key: string, order: 'asc' | 'desc' = 'asc'): QueryFn<Data> {\n return () => orderBy(key, order);\n }\n\n limit<Data>(n: number): QueryFn<Data> {\n return () => limit(n);\n }\n\n runTransaction(fn: Parameters<typeof runTransaction>[1]) {\n return runTransaction(this.firestore, fn);\n }\n\n batch() {\n return writeBatch(this.firestore);\n }\n}\n\n/** @deprecated use `provideFirestoreAdapter()` instead. */\nexport function provideAngularFirestoreAdapter(): Provider {\n return { provide: FirestoreAdapter, useClass: AngularFirestoreAdapter };\n}\n\nexport function provideFirestoreAdapter(): Provider {\n return _provideFirestoreAdapter(AngularFirestoreAdapter);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_provideFirestoreAdapter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nx-ddd-firestore-angular-adapter.mjs","sources":["../../../../../packages/@nx-ddd/firestore-angular-adapter/src/lib/angular-firestore.adapter.ts","../../../../../packages/@nx-ddd/firestore-angular-adapter/src/nx-ddd-firestore-angular-adapter.ts"],"sourcesContent":["import { inject, Injectable, Provider } from '@angular/core';\nimport { \n doc, collection, collectionGroup,\n Timestamp, setDoc, getDoc, deleteDoc, getDocs, \n onSnapshot, updateDoc, Firestore, runTransaction, writeBatch,\n limit, orderBy, query, where, QuerySnapshot, FieldPath, documentId, FieldValue, serverTimestamp,\n getCountFromServer\n} from '@angular/fire/firestore';\nimport {\n FirestoreAdapter,\n QueryFn as _QueryFn,\n WhereFilterOp,\n provideFirestoreAdapter as _provideFirestoreAdapter,\n} from '@nx-ddd/firestore/adapters/base';\nimport {\n DocumentSnapshot,\n CollectionReference as _CollectionReference,\n CollectionGroup as _CollectionGroup,\n Query as _Query,\n DocumentData,\n DocumentReference,\n} from '@nx-ddd/firestore/interfaces';\nimport dayjs from 'dayjs';\nimport { Observable, map, tap, filter } from 'rxjs';\nimport type firestore from 'firebase/firestore';\n\ntype CollectionReference<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = _CollectionReference<AppModelType, DbModelType, firestore.CollectionReference<AppModelType, DbModelType>>;\n\ntype CollectionGroup<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _CollectionGroup<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;\n\ntype Query<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _Query<AppModelType, DbModelType, firestore.Query<AppModelType, DbModelType>>;\n\ntype QueryFn<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n> = _QueryFn<AppModelType, DbModelType, firestore.QueryConstraint>\n\ntype Origin<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = firestore.CollectionReference<AppModelType, DbModelType>\n | firestore.Query<AppModelType, DbModelType>;\n\ntype CollectionLike<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n> = CollectionReference<AppModelType, DbModelType> \n | CollectionGroup<AppModelType, DbModelType>\n | Query<AppModelType, DbModelType>;\n\n// Utility type to map Origin to CollectionLike\ntype InferCollectionLike<O extends Origin> = \n O extends firestore.CollectionReference<infer A, infer B> ? CollectionReference<A, B> :\n O extends firestore.Query<infer A, infer B> ? Query<A, B> :\n never;\n\n\nfunction asObservable<T = unknown>(\n ref: Parameters<typeof onSnapshot>[0],\n _onSnapshot: typeof onSnapshot,\n): Observable<QuerySnapshot<T>> {\n return new Observable<QuerySnapshot<T>>((observer) => _onSnapshot(\n ref, \n (value: any) => observer.next(value),\n (error: any) => observer.error(error),\n () => observer.complete()),\n );\n}\n\nexport function wrapDocumentReference<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n>(origin: firestore.DocumentReference<AppModelType, DbModelType>): DocumentReference<AppModelType, DbModelType> {\n return {\n __ref: origin,\n exists: () => getDoc(origin).then(snapshot => snapshot.exists()),\n set: (data) => setDoc(origin, data),\n get: () => getDoc(origin),\n update: (data) => updateDoc(origin, data as any),\n delete: () => deleteDoc(origin),\n stateChanges: () => {\n return new Observable<DocumentSnapshot<any>>((observer) => {\n return onSnapshot(origin, value => observer.next(value), error => observer.error(error), () => observer.complete());\n }).pipe(\n filter((snapshot: any) => snapshot.exists()),\n map((snapshot) => ({\n id: snapshot.id,\n ref: snapshot.ref,\n data: () => snapshot.data(),\n get: (fieldPath: string) => snapshot.get(fieldPath),\n })),\n );\n },\n }\n}\n\nexport function wrapCollectionLike<\n O extends Origin,\n>(origin: O): InferCollectionLike<O> {\n return {\n __ref: origin,\n stateChanges: () => asObservable<unknown>(origin, onSnapshot).pipe(\n map((snapshot) => snapshot.docChanges().map(change => ({\n type: change.type, payload: {doc: change.doc},\n }))),\n ),\n get: () => getDocs(origin),\n count: () => getCountFromServer(origin).then(count => count.data().count),\n } as never as InferCollectionLike<O>;\n}\n\nexport function unwrapCollectionLike<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData\n>(\n collection: CollectionLike<AppModelType, DbModelType>\n): Origin<AppModelType, DbModelType> {\n return collection.__ref!;\n}\n\n@Injectable()\nexport class AngularFirestoreAdapter extends FirestoreAdapter<dayjs.Dayjs> {\n protected readonly firestore = inject(Firestore);\n\n get FieldValue(): typeof FieldValue & {serverTimestamp: () => FieldValue} {\n return Object.assign(FieldValue, {serverTimestamp});\n }\n\n get Timestamp(): typeof Timestamp {\n return Timestamp; \n }\n\n get FieldPath(): {documentId: () => FieldPath} {\n return {\n documentId: () => documentId(),\n };\n }\n\n protected isTimestamp(v: any): v is Timestamp {\n return v instanceof Timestamp;\n }\n\n protected isFieldValue(v: any): v is FieldValue {\n return v instanceof this.FieldValue;\n }\n \n protected isDate(v: any): v is dayjs.Dayjs {\n return dayjs.isDayjs(v);\n }\n\n convertDateToTimestamp(date: dayjs.Dayjs): Timestamp {\n return Timestamp.fromDate(date.toDate());\n }\n\n convertTimestampToDate(timestamp: Timestamp): dayjs.Dayjs {\n return dayjs(timestamp.toDate());\n }\n\n doc<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(path: string): DocumentReference<AppModelType, DbModelType> {\n const docRef = doc(this.firestore, path);\n return wrapDocumentReference(docRef) as DocumentReference<AppModelType, DbModelType>;\n }\n\n collection<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(path: string): CollectionReference<AppModelType, DbModelType> {\n const ref = collection(this.firestore, path);\n return wrapCollectionLike(ref) as CollectionReference<AppModelType, DbModelType>;\n }\n\n collectionGroup<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(collectionId: string): CollectionGroup<AppModelType, DbModelType> {\n const ref = collectionGroup(this.firestore, collectionId);\n return wrapCollectionLike(ref) as CollectionGroup<AppModelType, DbModelType>;\n }\n\n query<\n AppModelType = DocumentData,\n DbModelType extends DocumentData = DocumentData,\n >(\n collection: CollectionReference<AppModelType, DbModelType>,\n ...queryFnArray: QueryFn[]\n ): Query<AppModelType, DbModelType> {\n const ref = unwrapCollectionLike(collection) as firestore.Query<DocumentData, DbModelType>;\n const _query = query(ref, ...queryFnArray.map(queryFn => queryFn()));\n return wrapCollectionLike(_query) as Query<AppModelType, DbModelType>;\n }\n\n where<Data>(fieldPath: string, opStr: WhereFilterOp, value: unknown): QueryFn<Data> {\n return () => where(fieldPath, opStr, value);\n }\n\n orderBy<Data>(key: string, order: 'asc' | 'desc' = 'asc'): QueryFn<Data> {\n return () => orderBy(key, order);\n }\n\n limit<Data>(n: number): QueryFn<Data> {\n return () => limit(n);\n }\n\n runTransaction(fn: Parameters<typeof runTransaction>[1]) {\n return runTransaction(this.firestore, fn);\n }\n\n batch() {\n return writeBatch(this.firestore);\n }\n}\n\n/** @deprecated use `provideFirestoreAdapter()` instead. */\nexport function provideAngularFirestoreAdapter(): Provider {\n return { provide: FirestoreAdapter, useClass: AngularFirestoreAdapter };\n}\n\nexport function provideFirestoreAdapter(): Provider {\n return _provideFirestoreAdapter(AngularFirestoreAdapter);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_provideFirestoreAdapter"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx-ddd/firestore-angular-adapter",
|
|
3
|
-
"version": "17.
|
|
3
|
+
"version": "17.9.0",
|
|
4
4
|
"homepage": "https://github.com/xx-machina/plaform/tree/main/packages/@nx-ddd/firestore-angular-adapter",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"peerDependencies": {
|
|
10
10
|
"@angular/core": "^17.0.0",
|
|
11
11
|
"@angular/fire": "^17.0.0",
|
|
12
|
-
"@nx-ddd/firestore": "17.
|
|
12
|
+
"@nx-ddd/firestore": "17.9.0",
|
|
13
13
|
"dayjs": "1.11.10",
|
|
14
14
|
"rxjs": "^7.0.0"
|
|
15
15
|
},
|