@dereekb/dbx-firebase 9.25.16 → 10.0.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.
- package/_index.scss +1 -0
- package/{esm2020 → esm2022}/lib/analytics/analytics.user.events.mjs +4 -4
- package/{esm2020 → esm2022}/lib/analytics/analytics.user.source.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/appcheck/appcheck.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/firebase.auth.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/auth/login/firebase.login.module.mjs +45 -45
- package/esm2022/lib/auth/login/login.anonymous.component.mjs +23 -0
- package/esm2022/lib/auth/login/login.apple.component.mjs +23 -0
- package/{esm2020 → esm2022}/lib/auth/login/login.button.component.mjs +14 -14
- package/{esm2020 → esm2022}/lib/auth/login/login.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/auth/login/login.context.back.component.mjs +6 -6
- package/esm2022/lib/auth/login/login.context.directive.mjs +29 -0
- package/esm2022/lib/auth/login/login.email.component.mjs +24 -0
- package/{esm2020 → esm2022}/lib/auth/login/login.email.content.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/login/login.email.form.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/auth/login/login.email.recovery.form.component.mjs +6 -6
- package/esm2022/lib/auth/login/login.facebook.component.mjs +23 -0
- package/esm2022/lib/auth/login/login.github.component.mjs +23 -0
- package/esm2022/lib/auth/login/login.google.component.mjs +23 -0
- package/{esm2020 → esm2022}/lib/auth/login/login.list.component.mjs +6 -6
- package/esm2022/lib/auth/login/login.microsoft.component.mjs +23 -0
- package/{esm2020 → esm2022}/lib/auth/login/login.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/login/login.terms.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/auth/login/login.terms.simple.component.mjs +6 -6
- package/esm2022/lib/auth/login/login.twitter.component.mjs +23 -0
- package/{esm2020 → esm2022}/lib/auth/login/register.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/auth/login/register.email.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/auth/service/firebase.auth.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/development/development.module.mjs +22 -22
- package/{esm2020 → esm2022}/lib/development/development.popup.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/development/development.popup.content.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/development/development.popup.content.form.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/development/development.popup.directive.mjs +4 -4
- package/esm2022/lib/development/development.scheduler.list.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/development/development.scheduler.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/development/development.scheduler.widget.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/development/development.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/development/development.widget.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/firebase/firebase.emulator.module.mjs +5 -5
- package/esm2022/lib/firebase/firebase.emulator.service.mjs +35 -0
- package/esm2022/lib/firebase/firebase.module.mjs +293 -0
- package/{esm2020 → esm2022}/lib/firestore/firebase.firestore.context.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/firestore/firebase.firestore.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/function/firebase.function.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/model/model.module.mjs +5 -5
- package/esm2022/lib/model/modules/model/model.history.component.mjs +48 -0
- package/{esm2020 → esm2022}/lib/model/modules/model/model.history.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/model/modules/model/model.history.popover.button.component.mjs +6 -6
- package/esm2022/lib/model/modules/model/model.history.popover.component.mjs +50 -0
- package/esm2022/lib/model/modules/model/model.tracker.service.mjs +62 -0
- package/esm2022/lib/model/modules/model/model.types.list.component.mjs +64 -0
- package/{esm2020 → esm2022}/lib/model/modules/model/model.types.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/model/modules/model/model.types.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/model/model.types.view.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/model.store.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.change.directive.mjs +7 -7
- package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.change.if.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.list.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/store.collection.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/store.document.auth.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/store.document.crud.mjs +1 -1
- package/{esm2020 → esm2022}/lib/model/modules/store/store.document.directive.mjs +4 -4
- package/esm2022/lib/model/modules/store/store.document.mjs +167 -0
- package/{esm2020 → esm2022}/lib/model/modules/store/store.document.router.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/store.document.router.key.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/store.subcollection.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/store.subcollection.document.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/modules/store/store.subcollection.mjs +4 -4
- package/esm2022/lib/model/service/model.context.service.mjs +38 -0
- package/{esm2020 → esm2022}/lib/model/system/systemstate.collection.store.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/system/systemstate.collection.store.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/system/systemstate.document.store.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/model/system/systemstate.document.store.mjs +4 -4
- package/{esm2020 → esm2022}/lib/module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/pipe/key.pipe.mjs +7 -7
- package/{esm2020 → esm2022}/lib/pipe/pipe.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/storage/firebase.storage.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/storage/firebase.storage.service.mjs +4 -4
- package/{fesm2020 → fesm2022}/dereekb-dbx-firebase.mjs +500 -490
- package/fesm2022/dereekb-dbx-firebase.mjs.map +1 -0
- package/lib/analytics/analytics.user.source.d.ts +1 -1
- package/lib/auth/auth.d.ts +1 -1
- package/lib/auth/login/_login.scss +6 -2
- package/lib/auth/login/login.anonymous.component.d.ts +1 -1
- package/lib/auth/login/login.apple.component.d.ts +1 -1
- package/lib/auth/login/login.button.component.d.ts +4 -4
- package/lib/auth/login/login.component.d.ts +1 -1
- package/lib/auth/login/login.context.back.component.d.ts +1 -1
- package/lib/auth/login/login.context.directive.d.ts +1 -1
- package/lib/auth/login/login.d.ts +5 -5
- package/lib/auth/login/login.email.component.d.ts +1 -1
- package/lib/auth/login/login.email.content.component.d.ts +2 -2
- package/lib/auth/login/login.email.form.component.d.ts +2 -2
- package/lib/auth/login/login.email.recovery.form.component.d.ts +1 -1
- package/lib/auth/login/login.facebook.component.d.ts +1 -1
- package/lib/auth/login/login.github.component.d.ts +1 -1
- package/lib/auth/login/login.google.component.d.ts +1 -1
- package/lib/auth/login/login.list.component.d.ts +1 -1
- package/lib/auth/login/login.microsoft.component.d.ts +1 -1
- package/lib/auth/login/login.password.d.ts +1 -1
- package/lib/auth/login/login.service.d.ts +1 -1
- package/lib/auth/login/login.terms.component.d.ts +1 -1
- package/lib/auth/login/login.terms.simple.component.d.ts +1 -1
- package/lib/auth/login/login.twitter.component.d.ts +1 -1
- package/lib/auth/login/register.component.d.ts +1 -1
- package/lib/auth/login/register.email.component.d.ts +1 -1
- package/lib/auth/service/firebase.auth.rxjs.d.ts +1 -1
- package/lib/auth/service/firebase.auth.service.d.ts +1 -1
- package/lib/auth/service/firebase.auth.service.delegate.d.ts +1 -1
- package/lib/development/development.popup.component.d.ts +1 -1
- package/lib/development/development.popup.content.component.d.ts +1 -1
- package/lib/development/development.popup.content.form.component.d.ts +1 -1
- package/lib/development/development.popup.directive.d.ts +1 -1
- package/lib/development/development.scheduler.list.component.d.ts +4 -4
- package/lib/development/development.scheduler.widget.component.d.ts +3 -3
- package/lib/model/loader/collection.change.trigger.d.ts +1 -1
- package/lib/model/loader/collection.change.watcher.d.ts +2 -2
- package/lib/model/loader/collection.loader.instance.d.ts +1 -1
- package/lib/model/modules/model/model.history.component.d.ts +1 -1
- package/lib/model/modules/model/model.history.popover.button.component.d.ts +2 -2
- package/lib/model/modules/model/model.history.popover.component.d.ts +1 -1
- package/lib/model/modules/model/model.types.list.component.d.ts +4 -4
- package/lib/model/modules/model/model.types.service.d.ts +3 -3
- package/lib/model/modules/model/model.types.view.directive.d.ts +1 -1
- package/lib/model/modules/store/store.collection.change.directive.d.ts +1 -1
- package/lib/model/modules/store/store.collection.change.if.directive.d.ts +2 -2
- package/lib/model/modules/store/store.collection.directive.d.ts +2 -2
- package/lib/model/modules/store/store.collection.list.directive.d.ts +1 -1
- package/lib/model/modules/store/store.document.auth.directive.d.ts +1 -1
- package/lib/model/modules/store/store.document.crud.d.ts +5 -9
- package/lib/model/modules/store/store.document.directive.d.ts +5 -5
- package/lib/model/modules/store/store.document.router.directive.d.ts +1 -1
- package/lib/model/modules/store/store.document.router.key.directive.d.ts +1 -1
- package/lib/model/modules/store/store.subcollection.d.ts +3 -3
- package/lib/model/modules/store/store.subcollection.directive.d.ts +1 -1
- package/lib/model/modules/store/store.subcollection.document.d.ts +1 -1
- package/lib/model/modules/store/store.subcollection.rxjs.d.ts +3 -3
- package/lib/model/service/model.context.instance.d.ts +1 -1
- package/lib/model/service/model.context.service.d.ts +1 -1
- package/lib/model/system/systemstate.collection.store.directive.d.ts +1 -1
- package/lib/model/system/systemstate.document.store.directive.d.ts +1 -1
- package/lib/storage/firebase.storage.module.d.ts +1 -1
- package/lib/style/_all-typography.scss +2 -2
- package/lib/style/_core.scss +1 -2
- package/lib/style/_theming.scss +1 -1
- package/package.json +25 -21
- package/esm2020/lib/auth/login/login.anonymous.component.mjs +0 -22
- package/esm2020/lib/auth/login/login.apple.component.mjs +0 -22
- package/esm2020/lib/auth/login/login.context.directive.mjs +0 -29
- package/esm2020/lib/auth/login/login.email.component.mjs +0 -23
- package/esm2020/lib/auth/login/login.facebook.component.mjs +0 -22
- package/esm2020/lib/auth/login/login.github.component.mjs +0 -22
- package/esm2020/lib/auth/login/login.google.component.mjs +0 -22
- package/esm2020/lib/auth/login/login.microsoft.component.mjs +0 -22
- package/esm2020/lib/auth/login/login.twitter.component.mjs +0 -22
- package/esm2020/lib/development/development.scheduler.list.component.mjs +0 -79
- package/esm2020/lib/firebase/firebase.emulator.service.mjs +0 -35
- package/esm2020/lib/firebase/firebase.module.mjs +0 -293
- package/esm2020/lib/model/modules/model/model.history.component.mjs +0 -48
- package/esm2020/lib/model/modules/model/model.history.popover.component.mjs +0 -50
- package/esm2020/lib/model/modules/model/model.tracker.service.mjs +0 -62
- package/esm2020/lib/model/modules/model/model.types.list.component.mjs +0 -63
- package/esm2020/lib/model/modules/store/store.document.mjs +0 -168
- package/esm2020/lib/model/service/model.context.service.mjs +0 -38
- package/fesm2015/dereekb-dbx-firebase.mjs +0 -4632
- package/fesm2015/dereekb-dbx-firebase.mjs.map +0 -1
- package/fesm2020/dereekb-dbx-firebase.mjs.map +0 -1
- /package/{esm2020 → esm2022}/dereekb-dbx-firebase.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/analytics/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/appcheck/appcheck.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/appcheck/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/auth.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/login/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/login/login.context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/login/login.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/login/login.password.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/login/login.terms.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/service/firebase.auth.rxjs.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/service/firebase.auth.service.delegate.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/auth/service/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/development/development.widget.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/development/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/firebase/appcheck.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/firebase/emulators.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/firebase/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/firebase/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/firestore/firebase.firestore.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/firestore/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/function/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/error.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/loader/collection.change.trigger.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/loader/collection.change.watcher.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/loader/collection.loader.instance.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/loader/collection.loader.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/loader/document.loader.instance.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/loader/document.loader.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/loader/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/modules/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/modules/model/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/modules/model/model.sourceselect.history.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/modules/store/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/modules/store/store.subcollection.rxjs.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/service/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/service/model.context.instance.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/service/model.context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/system/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/system/systemstate.document.store.accessor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipe/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/id.param.redirect.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/storage/firebase.storage.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/storage/index.mjs +0 -0
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { asArray, invertDecision } from '@dereekb/util';
|
|
2
|
-
import { map, switchMap, shareReplay, startWith, of } from 'rxjs';
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import { allDbxModelViewTrackerEventModelKeys, DbxModelTrackerService } from '@dereekb/dbx-web';
|
|
5
|
-
import { DbxFirebaseModelTypesService } from './model.types.service';
|
|
6
|
-
import { filterItemsWithObservableDecision, invertObservableDecision, mapEachAsync } from '@dereekb/rxjs';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@dereekb/dbx-web";
|
|
9
|
-
import * as i2 from "./model.types.service";
|
|
10
|
-
export class DbxFirebaseModelTrackerService {
|
|
11
|
-
constructor(dbxModelTrackerService, dbxFirebaseModelTypesService) {
|
|
12
|
-
this.dbxModelTrackerService = dbxModelTrackerService;
|
|
13
|
-
this.dbxFirebaseModelTypesService = dbxFirebaseModelTypesService;
|
|
14
|
-
this.historyKeys$ = this.dbxModelTrackerService.newEvent$.pipe(startWith(null), switchMap(() => this.loadHistoryKeys()), shareReplay(1));
|
|
15
|
-
this.historyPairs$ = this.dbxModelTrackerService.newEvent$.pipe(startWith(null), switchMap(() => this.loadHistoryPairs()), // TODO: Improve efficiency of this to only load/remove items for new keys
|
|
16
|
-
shareReplay(1));
|
|
17
|
-
this.filterItemHistoryPairs$ = this.historyPairs$.pipe(mapEachAsync((instancePair) => instancePair.instance.identity$.pipe(map((identity) => ({ instancePair, identity }))), { onlyFirst: true }), shareReplay(1));
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Filters from historyPairs$ using the input filter configuration, if it is provided.
|
|
21
|
-
*
|
|
22
|
-
* @param filter
|
|
23
|
-
* @returns
|
|
24
|
-
*/
|
|
25
|
-
filterHistoryPairs(filter) {
|
|
26
|
-
if (filter && (filter?.identity || filter?.filterItem)) {
|
|
27
|
-
const { invertFilter = false, identity, filterItem } = filter;
|
|
28
|
-
const allowedIdentities = new Set(asArray(identity));
|
|
29
|
-
const baseIsAllowedIdentityFn = identity ? (x) => allowedIdentities.has(x) : () => true;
|
|
30
|
-
const isAllowedIdentityFn = invertDecision(baseIsAllowedIdentityFn, invertFilter);
|
|
31
|
-
const baseFilterItemFn = filterItem ? invertObservableDecision(filterItem, invertFilter) : () => of(true);
|
|
32
|
-
const filterItemFn = (x) => {
|
|
33
|
-
if (isAllowedIdentityFn(x.identity)) {
|
|
34
|
-
return baseFilterItemFn(x);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
return of(false);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
return this.filterItemHistoryPairs$.pipe(filterItemsWithObservableDecision(filterItemFn), map((x) => x.map((y) => y.instancePair)), shareReplay(1));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
return this.historyPairs$;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
loadHistoryKeys() {
|
|
47
|
-
return this.dbxModelTrackerService.getAllViewEvents().pipe(map(allDbxModelViewTrackerEventModelKeys));
|
|
48
|
-
}
|
|
49
|
-
loadHistoryPairs() {
|
|
50
|
-
const historyKeys$ = this.loadHistoryKeys();
|
|
51
|
-
return historyKeys$.pipe(switchMap((x) => this.dbxFirebaseModelTypesService.instancePairsForKeys(x)));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
DbxFirebaseModelTrackerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTrackerService, deps: [{ token: i1.DbxModelTrackerService }, { token: i2.DbxFirebaseModelTypesService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
55
|
-
DbxFirebaseModelTrackerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTrackerService, providedIn: 'root' });
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTrackerService, decorators: [{
|
|
57
|
-
type: Injectable,
|
|
58
|
-
args: [{
|
|
59
|
-
providedIn: 'root'
|
|
60
|
-
}]
|
|
61
|
-
}], ctorParameters: function () { return [{ type: i1.DbxModelTrackerService }, { type: i2.DbxFirebaseModelTypesService }]; } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHJhY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvbW9kdWxlcy9tb2RlbC9tb2RlbC50cmFja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEcsT0FBTyxFQUFFLDRCQUE0QixFQUE0QyxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQThCLE1BQU0sZUFBZSxDQUFDOzs7O0FBeUJ0SSxNQUFNLE9BQU8sOEJBQThCO0lBNER6QyxZQUFxQixzQkFBOEMsRUFBVyw0QkFBMEQ7UUFBbkgsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUFXLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUEzRC9ILGlCQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ2hFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQ3ZDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sa0JBQWEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakUsU0FBUyxD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OzRGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheU9yVmFsdWUsIERlY2lzaW9uRnVuY3Rpb24sIE1heWJlLCBhc0FycmF5LCBpbnZlcnREZWNpc2lvbiB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRmlyZXN0b3JlTW9kZWxJZGVudGl0eSB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWxsRGJ4TW9kZWxWaWV3VHJhY2tlckV2ZW50TW9kZWxLZXlzLCBEYnhNb2RlbFRyYWNrZXJTZXJ2aWNlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlLCBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyIH0gZnJvbSAnLi9tb2RlbC50eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRlckl0ZW1zV2l0aE9ic2VydmFibGVEZWNpc2lvbiwgaW52ZXJ0T2JzZXJ2YWJsZURlY2lzaW9uLCBtYXBFYWNoQXN5bmMsIE9ic2VydmFibGVEZWNpc2lvbkZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJGaWx0ZXJJdGVtIHtcbiAgaW5zdGFuY2VQYWlyOiBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyO1xuICBpZGVudGl0eTogRmlyZXN0b3JlTW9kZWxJZGVudGl0eTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZU1vZGVsVHJhY2tlckhpc3RvcnlGaWx0ZXIge1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZXhjbHVkZSB0aGUgdmFsdWVzIGluc3RlYWQgb2YgaW5jbHVkZSB0aGVtLlxuICAgKi9cbiAgaW52ZXJ0RmlsdGVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElkZW50aXR5IHR5cGVzIHRvIGZpbHRlciBvbi5cbiAgICovXG4gIGlkZW50aXR5PzogTWF5YmU8QXJyYXlPclZhbHVlPEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk+PjtcbiAgLyoqXG4gICAqIEFyYml0cmFyeSBmaWx0ZXIgZnVuY3Rpb24gdG8gZmlsdGVyIGluZGl2aWR1YWwgaXRlbXMuXG4gICAqL1xuICBmaWx0ZXJJdGVtPzogT2JzZXJ2YWJsZURlY2lzaW9uRnVuY3Rpb248RGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJGaWx0ZXJJdGVtPjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgaGlzdG9yeUtleXMkID0gdGhpcy5kYnhNb2RlbFRyYWNrZXJTZXJ2aWNlLm5ld0V2ZW50JC5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkSGlzdG9yeUtleXMoKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBoaXN0b3J5UGFpcnMkID0gdGhpcy5kYnhNb2RlbFRyYWNrZXJTZXJ2aWNlLm5ld0V2ZW50JC5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkSGlzdG9yeVBhaXJzKCkpLCAvLyBUT0RPOiBJbXByb3ZlIGVmZmljaWVuY3kgb2YgdGhpcyB0byBvbmx5IGxvYWQvcmVtb3ZlIGl0ZW1zIGZvciBuZXcga2V5c1xuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZmlsdGVySXRlbUhpc3RvcnlQYWlycyQ6IE9ic2VydmFibGU8RGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJGaWx0ZXJJdGVtW10+ID0gdGhpcy5oaXN0b3J5UGFpcnMkLnBpcGUoXG4gICAgbWFwRWFjaEFzeW5jKChpbnN0YW5jZVBhaXIpID0+IGluc3RhbmNlUGFpci5pbnN0YW5jZS5pZGVudGl0eSQucGlwZShtYXAoKGlkZW50aXR5KSA9PiAoeyBpbnN0YW5jZVBhaXIsIGlkZW50aXR5IH0pKSksIHsgb25seUZpcnN0OiB0cnVlIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgZnJvbSBoaXN0b3J5UGFpcnMkIHVzaW5nIHRoZSBpbnB1dCBmaWx0ZXIgY29uZmlndXJhdGlvbiwgaWYgaXQgaXMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXJcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbHRlckhpc3RvcnlQYWlycyhmaWx0ZXI/OiBNYXliZTxEYnhGaXJlYmFzZU1vZGVsVHJhY2tlckhpc3RvcnlGaWx0ZXI+KTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyW10+IHtcbiAgICBpZiAoZmlsdGVyICYmIChmaWx0ZXI/LmlkZW50aXR5IHx8IGZpbHRlcj8uZmlsdGVySXRlbSkpIHtcbiAgICAgIGNvbnN0IHsgaW52ZXJ0RmlsdGVyID0gZmFsc2UsIGlkZW50aXR5LCBmaWx0ZXJJdGVtIH0gPSBmaWx0ZXI7XG4gICAgICBjb25zdCBhbGxvd2VkSWRlbnRpdGllcyA9IG5ldyBTZXQoYXNBcnJheShpZGVudGl0eSkpO1xuICAgICAgY29uc3QgYmFzZUlzQWxsb3dlZElkZW50aXR5Rm46IERlY2lzaW9uRnVuY3Rpb248RmlyZXN0b3JlTW9kZWxJZGVudGl0eT4gPSBpZGVudGl0eSA/ICh4KSA9PiBhbGxvd2VkSWRlbnRpdGllcy5oYXMoeCkgOiAoKSA9PiB0cnVlO1xuICAgICAgY29uc3QgaXNBbGxvd2VkSWRlbnRpdHlGbiA9IGludmVydERlY2lzaW9uKGJhc2VJc0FsbG93ZWRJZGVudGl0eUZuLCBpbnZlcnRGaWx0ZXIpO1xuXG4gICAgICBjb25zdCBiYXNlRmlsdGVySXRlbUZuOiBPYnNlcnZhYmxlRGVjaXNpb25GdW5jdGlvbjxEYnhGaXJlYmFzZU1vZGVsVHJhY2tlckZpbHRlckl0ZW0+ID0gZmlsdGVySXRlbSA/IGludmVydE9ic2VydmFibGVEZWNpc2lvbihmaWx0ZXJJdGVtLCBpbnZlcnRGaWx0ZXIpIDogKCkgPT4gb2YodHJ1ZSk7XG5cbiAgICAgIGNvbnN0IGZpbHRlckl0ZW1GbjogT2JzZXJ2YWJsZURlY2lzaW9uRnVuY3Rpb248RGJ4RmlyZWJhc2VNb2RlbFRyYWNrZXJGaWx0ZXJJdGVtPiA9ICh4KSA9PiB7XG4gICAgICAgIGlmIChpc0FsbG93ZWRJZGVudGl0eUZuKHguaWRlbnRpdHkpKSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2VGaWx0ZXJJdGVtRm4oeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVySXRlbUhpc3RvcnlQYWlycyQucGlwZShcbiAgICAgICAgZmlsdGVySXRlbXNXaXRoT2JzZXJ2YWJsZURlY2lzaW9uKGZpbHRlckl0ZW1GbiksXG4gICAgICAgIG1hcCgoeCkgPT4geC5tYXAoKHkpID0+IHkuaW5zdGFuY2VQYWlyKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oaXN0b3J5UGFpcnMkO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRIaXN0b3J5S2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5kYnhNb2RlbFRyYWNrZXJTZXJ2aWNlLmdldEFsbFZpZXdFdmVudHMoKS5waXBlKG1hcChhbGxEYnhNb2RlbFZpZXdUcmFja2VyRXZlbnRNb2RlbEtleXMpKTtcbiAgfVxuXG4gIGxvYWRIaXN0b3J5UGFpcnMoKTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyW10+IHtcbiAgICBjb25zdCBoaXN0b3J5S2V5cyQgPSB0aGlzLmxvYWRIaXN0b3J5S2V5cygpO1xuICAgIHJldHVybiBoaXN0b3J5S2V5cyQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHRoaXMuZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZS5pbnN0YW5jZVBhaXJzRm9yS2V5cyh4KSkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGJ4TW9kZWxUcmFja2VyU2VydmljZTogRGJ4TW9kZWxUcmFja2VyU2VydmljZSwgcmVhZG9ubHkgZGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZTogRGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZSkge31cbn1cbiJdfQ==
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { AbstractDbxSelectionListWrapperDirective, AbstractDbxValueListViewItemComponent, AbstractDbxSelectionListViewDirective, DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE, provideDbxListView, DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE, provideDbxListViewWrapper } from '@dereekb/dbx-web';
|
|
3
|
-
import { of } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@dereekb/dbx-web";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
/**
|
|
8
|
-
* Renders an item as configured from the DbxFirebaseModelTypesServiceInstancePair.
|
|
9
|
-
*/
|
|
10
|
-
export class DbxFirebaseModelTypeInstanceComponent extends AbstractDbxSelectionListWrapperDirective {
|
|
11
|
-
constructor() {
|
|
12
|
-
super({
|
|
13
|
-
componentClass: DbxFirebaseModelTypeInstanceViewComponent,
|
|
14
|
-
defaultSelectionMode: 'view'
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
DbxFirebaseModelTypeInstanceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
-
DbxFirebaseModelTypeInstanceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseModelTypeInstanceComponent, selector: "dbx-firebase-model-type-instance-list", providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceComponent), usesInheritance: true, ngImport: i0, template: "\n<dbx-list [state$]=\"state$\" [config]=\"config$ | async\" [disabled]=\"disabled\" [selectionMode]=\"selectionMode\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n <ng-content emptyLoading select=\"[emptyLoading]\"></ng-content>\n</dbx-list>\n", isInline: true, dependencies: [{ kind: "component", type: i1.DbxListComponent, selector: "dbx-list", inputs: ["padded", "state$", "config", "disabled", "selectionMode"], outputs: ["contentScrolled"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceComponent, decorators: [{
|
|
21
|
-
type: Component,
|
|
22
|
-
args: [{
|
|
23
|
-
selector: 'dbx-firebase-model-type-instance-list',
|
|
24
|
-
template: DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE,
|
|
25
|
-
providers: provideDbxListViewWrapper(DbxFirebaseModelTypeInstanceComponent)
|
|
26
|
-
}]
|
|
27
|
-
}], ctorParameters: function () { return []; } });
|
|
28
|
-
export class DbxFirebaseModelTypeInstanceViewComponent extends AbstractDbxSelectionListViewDirective {
|
|
29
|
-
constructor() {
|
|
30
|
-
super(...arguments);
|
|
31
|
-
this.config = {
|
|
32
|
-
componentClass: DbxFirebaseModelTypeInstanceViewItemComponent,
|
|
33
|
-
mapValuesToItemValues: (x) => of(x.map((y) => ({ itemValue: y, icon: y.displayInfo.icon ?? y.icon, anchor: y.segueRef })))
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
DbxFirebaseModelTypeInstanceViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
-
DbxFirebaseModelTypeInstanceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseModelTypeInstanceViewComponent, selector: "ng-component", providers: provideDbxListView(DbxFirebaseModelTypeInstanceViewComponent), usesInheritance: true, ngImport: i0, template: "<dbx-selection-list-view [config]=\"config\"></dbx-selection-list-view>", isInline: true, dependencies: [{ kind: "component", type: i1.DbxSelectionValueListViewComponent, selector: "dbx-selection-list-view" }] });
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewComponent, decorators: [{
|
|
40
|
-
type: Component,
|
|
41
|
-
args: [{
|
|
42
|
-
template: DEFAULT_DBX_SELECTION_VALUE_LIST_DIRECTIVE_TEMPLATE,
|
|
43
|
-
providers: provideDbxListView(DbxFirebaseModelTypeInstanceViewComponent)
|
|
44
|
-
}]
|
|
45
|
-
}] });
|
|
46
|
-
export class DbxFirebaseModelTypeInstanceViewItemComponent extends AbstractDbxValueListViewItemComponent {
|
|
47
|
-
get title() {
|
|
48
|
-
return this.itemValue.displayInfo.title;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
DbxFirebaseModelTypeInstanceViewItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
DbxFirebaseModelTypeInstanceViewItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFirebaseModelTypeInstanceViewItemComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
|
|
53
|
-
<span>{{ title }}</span>
|
|
54
|
-
`, isInline: true });
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFirebaseModelTypeInstanceViewItemComponent, decorators: [{
|
|
56
|
-
type: Component,
|
|
57
|
-
args: [{
|
|
58
|
-
template: `
|
|
59
|
-
<span>{{ title }}</span>
|
|
60
|
-
`
|
|
61
|
-
}]
|
|
62
|
-
}] });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwudHlwZXMubGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL21vZGVsL21vZGVsLnR5cGVzLmxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLHFDQUFxQyxFQUFFLHFDQUFxQyxFQUFFLHVDQUF1QyxFQUFtQyxrQkFBa0IsRUFBRSxtREFBbUQsRUFBc0IseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1VixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBSzFCOztHQUVHO0FBTUgsTUFBTSxPQUFPLHFDQUFzQyxTQUFRLHdDQUFrRjtJQUMzSTtRQUNFLEtBQUssQ0FBQztZQUNKLGNBQWMsRUFBRSx5Q0FBeUM7WUFDekQsb0JBQW9CLEVBQUUsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOzttSUFOVSxxQ0FBcUM7dUhBQXJDLHFDQUFxQyxnRUFGckMseUJBQXlCLENBQUMscUNBQXFDLENBQUM7NEZBRWhFLHFDQUFxQztrQkFMakQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxTQUFTLEVBQUUseUJBQXlCLHVDQUF1QztpQkFDNUU7O0FBY0QsTUFBTSxPQUFPLHlDQUEwQyxTQUFRLHFDQUErRTtJQUo5STs7UUFLVyxXQUFNLEdBQXVFO1lBQ3BGLGNBQWMsRUFBRSw2Q0FBNkM7WUFDN0QscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzSCxDQUFDO0tBQ0g7O3VJQUxZLHlDQUF5QzsySEFBekMseUNBQXlDLHVDQUZ6QyxrQkFBa0IsQ0FBQyx5Q0FBeUMsQ0FBQzs0RkFFN0QseUNBQXlDO2tCQUpyRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtREFBbUQ7b0JBQzdELFNBQVMsRUFBRSxrQkFBa0IsMkNBQTJDO2lCQUN6RTs7QUFhRCxNQUFNLE9BQU8sNkNBQThDLFNBQVEscUNBQStFO0lBQ2hKLElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7OzJJQUhVLDZDQUE2QzsrSEFBN0MsNkNBQTZDLDJFQUo5Qzs7R0FFVDs0RkFFVSw2Q0FBNkM7a0JBTHpELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOztHQUVUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RXcmFwcGVyRGlyZWN0aXZlLCBBYnN0cmFjdERieFZhbHVlTGlzdFZpZXdJdGVtQ29tcG9uZW50LCBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RWaWV3RGlyZWN0aXZlLCBERUZBVUxUX0xJU1RfV1JBUFBFUl9ESVJFQ1RJVkVfVEVNUExBVEUsIERieFNlbGVjdGlvblZhbHVlTGlzdFZpZXdDb25maWcsIHByb3ZpZGVEYnhMaXN0VmlldywgREVGQVVMVF9EQlhfU0VMRUNUSU9OX1ZBTFVFX0xJU1RfRElSRUNUSVZFX1RFTVBMQVRFLCBEYnhWYWx1ZUFzTGlzdEl0ZW0sIHByb3ZpZGVEYnhMaXN0Vmlld1dyYXBwZXIgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZU1vZGVsVHlwZXNTZXJ2aWNlSW5zdGFuY2VQYWlyIH0gZnJvbSAnLi9tb2RlbC50eXBlcy5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgRGJ4RmlyZXN0b3JlTW9kZWxUeXBlSW5zdGFuY2VJdGVtID0gRGJ4VmFsdWVBc0xpc3RJdGVtPERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXI+O1xuXG4vKipcbiAqIFJlbmRlcnMgYW4gaXRlbSBhcyBjb25maWd1cmVkIGZyb20gdGhlIERieEZpcmViYXNlTW9kZWxUeXBlc1NlcnZpY2VJbnN0YW5jZVBhaXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1maXJlYmFzZS1tb2RlbC10eXBlLWluc3RhbmNlLWxpc3QnLFxuICB0ZW1wbGF0ZTogREVGQVVMVF9MSVNUX1dSQVBQRVJfRElSRUNUSVZFX1RFTVBMQVRFLFxuICBwcm92aWRlcnM6IHByb3ZpZGVEYnhMaXN0Vmlld1dyYXBwZXIoRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZUNvbXBvbmVudClcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGJ4U2VsZWN0aW9uTGlzdFdyYXBwZXJEaXJlY3RpdmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7XG4gICAgICBjb21wb25lbnRDbGFzczogRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZVZpZXdDb21wb25lbnQsXG4gICAgICBkZWZhdWx0U2VsZWN0aW9uTW9kZTogJ3ZpZXcnXG4gICAgfSk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBERUZBVUxUX0RCWF9TRUxFQ1RJT05fVkFMVUVfTElTVF9ESVJFQ1RJVkVfVEVNUExBVEUsXG4gIHByb3ZpZGVyczogcHJvdmlkZURieExpc3RWaWV3KERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VWaWV3Q29tcG9uZW50KVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZU1vZGVsVHlwZUluc3RhbmNlVmlld0NvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGJ4U2VsZWN0aW9uTGlzdFZpZXdEaXJlY3RpdmU8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4ge1xuICByZWFkb25seSBjb25maWc6IERieFNlbGVjdGlvblZhbHVlTGlzdFZpZXdDb25maWc8RGJ4RmlyZXN0b3JlTW9kZWxUeXBlSW5zdGFuY2VJdGVtPiA9IHtcbiAgICBjb21wb25lbnRDbGFzczogRGJ4RmlyZWJhc2VNb2RlbFR5cGVJbnN0YW5jZVZpZXdJdGVtQ29tcG9uZW50LFxuICAgIG1hcFZhbHVlc1RvSXRlbVZhbHVlczogKHgpID0+IG9mKHgubWFwKCh5KSA9PiAoeyBpdGVtVmFsdWU6IHksIGljb246IHkuZGlzcGxheUluZm8uaWNvbiA/PyB5Lmljb24sIGFuY2hvcjogeS5zZWd1ZVJlZiB9KSkpXG4gIH07XG59XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYFxuICAgIDxzcGFuPnt7IHRpdGxlIH19PC9zcGFuPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlTW9kZWxUeXBlSW5zdGFuY2VWaWV3SXRlbUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGJ4VmFsdWVMaXN0Vmlld0l0ZW1Db21wb25lbnQ8RGJ4RmlyZWJhc2VNb2RlbFR5cGVzU2VydmljZUluc3RhbmNlUGFpcj4ge1xuICBnZXQgdGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbVZhbHVlLmRpc3BsYXlJbmZvLnRpdGxlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
3
|
-
import { shareReplay, distinctUntilChanged, map, switchMap, combineLatest, of } from 'rxjs';
|
|
4
|
-
import { firestoreModelIdsFromKey, firestoreModelKeyPartPairs, firestoreModelKeyPairObject, documentDataWithIdAndKey, FirestoreAccessorStreamMode, inferKeyFromTwoWayFlatFirestoreModelKey, flatFirestoreModelKey, twoWayFlatFirestoreModelKey } from '@dereekb/firebase';
|
|
5
|
-
import { filterMaybe, beginLoading, successResult, loadingStateFromObs, errorResult } from '@dereekb/rxjs';
|
|
6
|
-
import { isMaybeSo } from '@dereekb/util';
|
|
7
|
-
import { LockSetComponentStore } from '@dereekb/dbx-core';
|
|
8
|
-
import { modelDoesNotExistError } from '../../error';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
|
|
11
|
-
constructor() {
|
|
12
|
-
super(...arguments);
|
|
13
|
-
// MARK: Effects
|
|
14
|
-
// MARK: Accessors
|
|
15
|
-
this.currentFirestoreCollectionLike$ = this.state$.pipe(map((x) => x.firestoreCollection ?? x.firestoreCollectionLike), distinctUntilChanged(), shareReplay(1));
|
|
16
|
-
this.currentFirestoreCollection$ = this.state$.pipe(map((x) => x.firestoreCollection), distinctUntilChanged(), shareReplay(1));
|
|
17
|
-
this.firestoreCollectionLike$ = this.currentFirestoreCollectionLike$.pipe(filterMaybe());
|
|
18
|
-
this.firestoreCollection$ = this.currentFirestoreCollection$.pipe(filterMaybe());
|
|
19
|
-
this.currentInputId$ = this.state$.pipe(map((x) => x.id), distinctUntilChanged(), shareReplay(1));
|
|
20
|
-
this.inputId$ = this.currentInputId$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
|
|
21
|
-
this.currentInputKey$ = this.state$.pipe(map((x) => x.key), distinctUntilChanged(), shareReplay(1));
|
|
22
|
-
this.inputKey$ = this.currentInputKey$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
|
|
23
|
-
this.currentInputRef$ = this.state$.pipe(map((x) => x.ref), distinctUntilChanged(), shareReplay(1));
|
|
24
|
-
this.inputRef$ = this.currentInputRef$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
|
|
25
|
-
this.streamMode$ = this.state$.pipe(map((x) => x.streamMode ?? FirestoreAccessorStreamMode.STREAM), distinctUntilChanged(), shareReplay(1));
|
|
26
|
-
this.currentDocument$ = combineLatest([this.currentInputId$, this.currentInputKey$, this.currentInputRef$]).pipe(switchMap(([id, key, ref]) => {
|
|
27
|
-
let document;
|
|
28
|
-
if (ref) {
|
|
29
|
-
document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocument(ref)));
|
|
30
|
-
}
|
|
31
|
-
else if (key) {
|
|
32
|
-
document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocumentForKey(key)));
|
|
33
|
-
}
|
|
34
|
-
else if (id) {
|
|
35
|
-
document = this.firestoreCollection$.pipe(map((x) => x.documentAccessor().loadDocumentForId(id)));
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
document = of(undefined);
|
|
39
|
-
}
|
|
40
|
-
return document;
|
|
41
|
-
}), distinctUntilChanged(), shareReplay(1));
|
|
42
|
-
/**
|
|
43
|
-
* Whether or not an id/ref/key has been input and currentDocument is not null.
|
|
44
|
-
*/
|
|
45
|
-
this.hasRef$ = this.currentDocument$.pipe(map((x) => x?.documentRef != null), distinctUntilChanged(), shareReplay(1));
|
|
46
|
-
this.document$ = this.currentDocument$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
|
|
47
|
-
this.documentLoadingState$ = this.currentDocument$.pipe(map((x) => (x ? successResult(x) : beginLoading())), shareReplay(1));
|
|
48
|
-
this.id$ = this.document$.pipe(map((x) => x.id), shareReplay(1));
|
|
49
|
-
this.key$ = this.document$.pipe(map((x) => x.key), shareReplay(1));
|
|
50
|
-
this.keyModelIds$ = this.key$.pipe(map(firestoreModelIdsFromKey), shareReplay(1));
|
|
51
|
-
this.keyPairs$ = this.key$.pipe(map(firestoreModelKeyPartPairs), filterMaybe(), shareReplay(1));
|
|
52
|
-
this.keyPairObject$ = this.key$.pipe(map(firestoreModelKeyPairObject), filterMaybe(), shareReplay(1));
|
|
53
|
-
this.ref$ = this.document$.pipe(map((x) => x.documentRef), shareReplay(1));
|
|
54
|
-
this.flatKey$ = this.key$.pipe(map((x) => flatFirestoreModelKey(x)), shareReplay(1));
|
|
55
|
-
this.twoWayFlatKey$ = this.key$.pipe(map((x) => twoWayFlatFirestoreModelKey(x)), shareReplay(1));
|
|
56
|
-
this.snapshot$ = combineLatest([this.document$, this.streamMode$]).pipe(switchMap(([x, mode]) => x.snapshotStream(mode)), shareReplay(1));
|
|
57
|
-
this.snapshotLoadingState$ = this.currentDocument$.pipe(switchMap(() => loadingStateFromObs(this.snapshot$)), shareReplay(1));
|
|
58
|
-
this.currentData$ = this.snapshot$.pipe(map((x) => documentDataWithIdAndKey(x)), shareReplay(1));
|
|
59
|
-
this.data$ = this.currentDocument$.pipe(switchMap(() => this.currentData$.pipe(filterMaybe())), shareReplay(1));
|
|
60
|
-
this.dataLoadingState$ = this.snapshotLoadingState$.pipe(map((x) => {
|
|
61
|
-
let result;
|
|
62
|
-
if (x.value) {
|
|
63
|
-
const data = documentDataWithIdAndKey(x.value);
|
|
64
|
-
if (data) {
|
|
65
|
-
result = successResult(data);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
result = errorResult(modelDoesNotExistError());
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
result = {
|
|
73
|
-
...x,
|
|
74
|
-
value: undefined
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
return result;
|
|
78
|
-
}), shareReplay(1));
|
|
79
|
-
/**
|
|
80
|
-
* Returns false while hasRef$ is false, and then returns exists$.
|
|
81
|
-
*/
|
|
82
|
-
this.currentExists$ = this.hasRef$.pipe(switchMap((hasRef) => {
|
|
83
|
-
if (hasRef) {
|
|
84
|
-
return this.exists$;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
return of(false);
|
|
88
|
-
}
|
|
89
|
-
}), shareReplay(1));
|
|
90
|
-
this.exists$ = this.currentData$.pipe(map((x) => isMaybeSo(x)), shareReplay(1));
|
|
91
|
-
this.doesNotExist$ = this.exists$.pipe(map((x) => !x), shareReplay(1));
|
|
92
|
-
this.modelIdentity$ = this.document$.pipe(map((x) => x.modelIdentity), shareReplay(1));
|
|
93
|
-
// MARK: State Changes
|
|
94
|
-
this.setId = this.updater((state, id) => (id ? { ...state, id, key: undefined, ref: undefined } : { ...state, id }));
|
|
95
|
-
this.setKey = this.updater((state, key) => (key ? { ...state, key, id: undefined, ref: undefined } : { ...state, key }));
|
|
96
|
-
this.setFlatKey = this.updater((state, key) => (key ? { ...state, key: inferKeyFromTwoWayFlatFirestoreModelKey(key), id: undefined, ref: undefined } : { ...state, key }));
|
|
97
|
-
this.setRef = this.updater((state, ref) => (ref ? { ...state, key: undefined, id: undefined, ref } : { ...state, ref }));
|
|
98
|
-
this.setStreamMode = this.updater((state, streamMode) => ({ ...state, streamMode }));
|
|
99
|
-
this.clearRefs = this.updater((state) => ({ ...state, id: undefined, key: undefined, ref: undefined }));
|
|
100
|
-
this.setFirestoreCollection = this.updater((state, firestoreCollection) => ({ ...state, firestoreCollection }));
|
|
101
|
-
this.setFirestoreCollectionLike = this.updater((state, firestoreCollectionLike) => ({ ...state, firestoreCollectionLike }));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
AbstractDbxFirebaseDocumentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
105
|
-
AbstractDbxFirebaseDocumentStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AbstractDbxFirebaseDocumentStore });
|
|
106
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, decorators: [{
|
|
107
|
-
type: Injectable
|
|
108
|
-
}] });
|
|
109
|
-
function injectSingleItemIdIntoState(state) {
|
|
110
|
-
const id = state?.firestoreCollection?.singleItemIdentifier;
|
|
111
|
-
if (state && id != null) {
|
|
112
|
-
return { ...state, id };
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return state;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* AbstractDbxFirebaseDocumentWithParentStore extension for use with RootSingleItemFirestoreCollection.
|
|
120
|
-
*/
|
|
121
|
-
let AbstractRootSingleItemDbxFirebaseDocument = class AbstractRootSingleItemDbxFirebaseDocument extends AbstractDbxFirebaseDocumentStore {
|
|
122
|
-
constructor(initialState) {
|
|
123
|
-
super(injectSingleItemIdIntoState(initialState));
|
|
124
|
-
/**
|
|
125
|
-
* Sets the SingleItemFirestoreCollection to use.
|
|
126
|
-
*/
|
|
127
|
-
this.setFirestoreCollection = this.updater((state, firestoreCollection) => {
|
|
128
|
-
if (firestoreCollection != null) {
|
|
129
|
-
const id = firestoreCollection.singleItemIdentifier;
|
|
130
|
-
if (id != null) {
|
|
131
|
-
return { ...state, firestoreCollection, id };
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
throw new Error('AbstractRootSingleItemDbxFirebaseDocument only accepts RootSingleItemFirestoreCollection values with a singleItemIdentifier set for setFirestoreCollection.');
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
return { ...state, firestoreCollection: null };
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
/**
|
|
142
|
-
* Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.
|
|
143
|
-
*
|
|
144
|
-
* Ref is set with the FirestoreCollection
|
|
145
|
-
*/
|
|
146
|
-
this.setId = this.updater((state, id) => state);
|
|
147
|
-
/**
|
|
148
|
-
* Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.
|
|
149
|
-
*
|
|
150
|
-
* Ref is set with the FirestoreCollection
|
|
151
|
-
*/
|
|
152
|
-
this.setKey = this.updater((state, key) => state);
|
|
153
|
-
/**
|
|
154
|
-
* Does nothing on a AbstractRootSingleItemDbxFirebaseDocument.
|
|
155
|
-
*
|
|
156
|
-
* Ref is set with the FirestoreCollection
|
|
157
|
-
*/
|
|
158
|
-
this.setRef = this.updater((state, ref) => state);
|
|
159
|
-
this.clearRefs = this.updater((state) => state);
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
AbstractRootSingleItemDbxFirebaseDocument = __decorate([
|
|
163
|
-
__param(0, Inject(null)),
|
|
164
|
-
__param(0, Optional()),
|
|
165
|
-
__metadata("design:paramtypes", [Object])
|
|
166
|
-
], AbstractRootSingleItemDbxFirebaseDocument);
|
|
167
|
-
export { AbstractRootSingleItemDbxFirebaseDocument };
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9tb2R1bGVzL3N0b3JlL3N0b3JlLmRvY3VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFjLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBZ0IsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RILE9BQU8sRUFVTCx3QkFBd0IsRUFDeEIsMEJBQTBCLEVBRTFCLDJCQUEyQixFQUUzQix3QkFBd0IsRUFDeEIsMkJBQTJCLEVBRTNCLHVDQUF1QyxFQUd2QyxxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzVCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBZ0IsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFvQixxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUF5RnJELE1BQU0sT0FBTyxnQ0FBOEwsU0FBUSxxQkFBd0I7SUFEM087O1FBRUUsZ0JBQWdCO1FBRWhCLGtCQUFrQjtRQUNULG9DQUErQixHQUFxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0csR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLElBQUksQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEVBQzlELG9CQUFv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QUUsR0FBZ0MsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUErRyxDQUFDO1FBRXhMLGNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQXhDN0QsQ0FBQztDQXlDRixDQUFBO0FBNUNZLHlDQUF5QztJQUM3QixXQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUFFLFdBQUEsUUFBUSxFQUFFLENBQUE7O0dBRHBDLHlDQUF5QyxDQTRDckQ7U0E1Q1kseUNBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRG9jdW1lbnRTbmFwc2hvdCxcbiAgRG9jdW1lbnRSZWZlcmVuY2UsXG4gIEZpcmVzdG9yZUNvbGxlY3Rpb24sXG4gIEZpcmVzdG9yZURvY3VtZW50LFxuICBEb2N1bWVudERhdGFXaXRoSWRBbmRLZXksXG4gIEZpcmVzdG9yZU1vZGVsSWQsXG4gIEZpcmVzdG9yZU1vZGVsS2V5LFxuICBGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSxcbiAgRmlyZXN0b3JlTW9kZWxJZGVudGl0eSxcbiAgZmlyZXN0b3JlTW9kZWxJZHNGcm9tS2V5LFxuICBmaXJlc3RvcmVNb2RlbEtleVBhcnRQYWlycyxcbiAgRmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyLFxuICBmaXJlc3RvcmVNb2RlbEtleVBhaXJPYmplY3QsXG4gIEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpck9iamVjdCxcbiAgZG9jdW1lbnREYXRhV2l0aElkQW5kS2V5LFxuICBGaXJlc3RvcmVBY2Nlc3NvclN0cmVhbU1vZGUsXG4gIFR3b1dheUZsYXRGaXJlc3RvcmVNb2RlbEtleSxcbiAgaW5mZXJLZXlGcm9tVHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5LFxuICBSb290U2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb24sXG4gIEZsYXRGaXJlc3RvcmVNb2RlbEtleSxcbiAgZmxhdEZpcmVzdG9yZU1vZGVsS2V5LFxuICB0d29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXlcbn0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIExvYWRpbmdTdGF0ZSwgYmVnaW5Mb2FkaW5nLCBzdWNjZXNzUmVzdWx0LCBsb2FkaW5nU3RhdGVGcm9tT2JzLCBlcnJvclJlc3VsdCwgT2JzZXJ2YWJsZU9yVmFsdWUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE1heWJlLCBpc01heWJlU28gfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IExvY2tTZXRDb21wb25lbnQsIExvY2tTZXRDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IG1vZGVsRG9lc05vdEV4aXN0RXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiBleHRlbmRzIExvY2tTZXRDb21wb25lbnQge1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+O1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PjtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRJZCQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4+O1xuICByZWFkb25seSBpbnB1dElkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPjtcbiAgcmVhZG9ubHkgY3VycmVudElucHV0S2V5JDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4+O1xuICByZWFkb25seSBpbnB1dEtleSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXk+O1xuICByZWFkb25seSBjdXJyZW50SW5wdXRSZWYkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj47XG4gIHJlYWRvbmx5IGlucHV0UmVmJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPj47XG5cbiAgcmVhZG9ubHkgc3RyZWFtTW9kZSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQWNjZXNzb3JTdHJlYW1Nb2RlPjtcblxuICByZWFkb25seSBjdXJyZW50RG9jdW1lbnQkOiBPYnNlcnZhYmxlPE1heWJlPEQ+PjtcbiAgcmVhZG9ubHkgZG9jdW1lbnQkOiBPYnNlcnZhYmxlPEQ+O1xuICByZWFkb25seSBpZCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZD47XG4gIHJlYWRvbmx5IGtleSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXk+O1xuICByZWFkb25seSByZWYkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+PjtcbiAgcmVhZG9ubHkgaGFzUmVmJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcmVhZG9ubHkgZmxhdEtleSQ6IE9ic2VydmFibGU8RmxhdEZpcmVzdG9yZU1vZGVsS2V5PjtcbiAgcmVhZG9ubHkgdHdvV2F5RmxhdEtleSQ6IE9ic2VydmFibGU8VHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5PjtcblxuICByZWFkb25seSBrZXlNb2RlbElkcyQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZFtdPjtcbiAgcmVhZG9ubHkga2V5UGFpcnMkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpcltdPjtcbiAgcmVhZG9ubHkga2V5UGFpck9iamVjdCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyT2JqZWN0PjtcblxuICByZWFkb25seSBkb2N1bWVudExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPEQ+PjtcbiAgcmVhZG9ubHkgc25hcHNob3QkOiBPYnNlcnZhYmxlPERvY3VtZW50U25hcHNob3Q8VD4+O1xuICByZWFkb25seSBzbmFwc2hvdExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERvY3VtZW50U25hcHNob3Q8VD4+PjtcbiAgcmVhZG9ubHkgY3VycmVudERhdGEkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4+O1xuICByZWFkb25seSBkYXRhJDogT2JzZXJ2YWJsZTxEb2N1bWVudERhdGFXaXRoSWRBbmRLZXk8VD4+O1xuICByZWFkb25seSBkYXRhTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj47XG4gIHJlYWRvbmx5IGN1cnJlbnRFeGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZWFkb25seSBleGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICByZWFkb25seSBtb2RlbElkZW50aXR5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5PjtcblxuICAvKipcbiAgICogU2V0cyB0aGUgaWQgb2YgdGhlIGRvY3VtZW50IHRvIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzZXRJZDogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxGaXJlc3RvcmVNb2RlbElkPj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUga2V5IG9mIHRoZSBkb2N1bWVudCB0byBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0S2V5OiAob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5Pj4pID0+IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU2V0cyB0aGUga2V5IG9mIHRoZSBkb2N1bWVudCB0byBsb2FkIHVzaW5nIGEgVHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0RmxhdEtleTogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxUd29XYXlGbGF0RmlyZXN0b3JlTW9kZWxLZXk+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZWYgb2YgdGhlIGRvY3VtZW50IHRvIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzZXRSZWY6IChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGtleS9pZC9yZWYgYW5kIGN1cnJlbnQgZG9jdW1lbnQgZnJvbSB0aGUgc3RvcmUuXG4gICAqL1xuICByZWFkb25seSBjbGVhclJlZnM6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0cmVhbSBtb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0U3RyZWFtTW9kZTogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxGaXJlc3RvcmVBY2Nlc3NvclN0cmVhbU1vZGU+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb24gdG8gcmV0cmlldmUgZG9jdW1lbnRzIGZyb20uXG4gICAqL1xuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uOiAoKCkgPT4gdm9pZCkgfCAoKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbik7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlIHRvIHJldHJpZXZlIGRvY3VtZW50cyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U6ICgoKSA9PiB2b2lkKSB8ICgob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiB7XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+O1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uPzogTWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj47XG4gIHJlYWRvbmx5IHN0cmVhbU1vZGU/OiBGaXJlc3RvcmVBY2Nlc3NvclN0cmVhbU1vZGU7XG4gIHJlYWRvbmx5IGlkPzogTWF5YmU8RmlyZXN0b3JlTW9kZWxJZD47XG4gIHJlYWRvbmx5IGtleT86IE1heWJlPEZpcmVzdG9yZU1vZGVsS2V5PjtcbiAgcmVhZG9ubHkgcmVmPzogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWJzdHJhY3REYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEMgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4gPSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4+IGV4dGVuZHMgTG9ja1NldENvbXBvbmVudFN0b3JlPEM+IGltcGxlbWVudHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFQsIEQ+IHtcbiAgLy8gTUFSSzogRWZmZWN0c1xuXG4gIC8vIE1BUks6IEFjY2Vzc29yc1xuICByZWFkb25seSBjdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5maXJlc3RvcmVDb2xsZWN0aW9uID8/IHguZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZmlyZXN0b3JlQ29sbGVjdGlvbiksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4gPSB0aGlzLmN1cnJlbnRGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQucGlwZShmaWx0ZXJNYXliZSgpKTtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4gPSB0aGlzLmN1cnJlbnRGaXJlc3RvcmVDb2xsZWN0aW9uJC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dElkJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbElkPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pZCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0SWQkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWQ+ID0gdGhpcy5jdXJyZW50SW5wdXRJZCQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0S2V5JDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgua2V5KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRLZXkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMuY3VycmVudElucHV0S2V5JC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRSZWYkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5yZWYpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dFJlZiQ6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+ID0gdGhpcy5jdXJyZW50SW5wdXRSZWYkLnBpcGUoZmlsdGVyTWF5YmUoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHN0cmVhbU1vZGUkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUFjY2Vzc29yU3RyZWFtTW9kZT4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5zdHJlYW1Nb2RlID8/IEZpcmVzdG9yZUFjY2Vzc29yU3RyZWFtTW9kZS5TVFJFQU0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RG9jdW1lbnQkOiBPYnNlcnZhYmxlPE1heWJlPEQ+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudElucHV0SWQkLCB0aGlzLmN1cnJlbnRJbnB1dEtleSQsIHRoaXMuY3VycmVudElucHV0UmVmJF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbaWQsIGtleSwgcmVmXSkgPT4ge1xuICAgICAgbGV0IGRvY3VtZW50OiBPYnNlcnZhYmxlPE1heWJlPEQ+PjtcblxuICAgICAgaWYgKHJlZikge1xuICAgICAgICBkb2N1bWVudCA9IHRoaXMuZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnQocmVmKSkpO1xuICAgICAgfSBlbHNlIGlmIChrZXkpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJC5waXBlKG1hcCgoeCkgPT4geC5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50Rm9yS2V5KGtleSkpKTtcbiAgICAgIH0gZWxzZSBpZiAoaWQpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb24kLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnRGb3JJZChpZCkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvY3VtZW50ID0gb2YodW5kZWZpbmVkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgYW4gaWQvcmVmL2tleSBoYXMgYmVlbiBpbnB1dCBhbmQgY3VycmVudERvY3VtZW50IGlzIG5vdCBudWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFzUmVmJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uZG9jdW1lbnRSZWYgIT0gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50JDogT2JzZXJ2YWJsZTxEPiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkb2N1bWVudExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPEQ+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKHggPyBzdWNjZXNzUmVzdWx0KHgpIDogYmVnaW5Mb2FkaW5nPEQ+KCkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGtleSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXk+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHgua2V5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGtleU1vZGVsSWRzJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkW10+ID0gdGhpcy5rZXkkLnBpcGUobWFwKGZpcmVzdG9yZU1vZGVsSWRzRnJvbUtleSksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkga2V5UGFpcnMkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsQ29sbGVjdGlvbkFuZElkUGFpcltdPiA9IHRoaXMua2V5JC5waXBlKG1hcChmaXJlc3RvcmVNb2RlbEtleVBhcnRQYWlycyksIGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcbiAgcmVhZG9ubHkga2V5UGFpck9iamVjdCQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxDb2xsZWN0aW9uQW5kSWRQYWlyT2JqZWN0PiA9IHRoaXMua2V5JC5waXBlKG1hcChmaXJlc3RvcmVNb2RlbEtleVBhaXJPYmplY3QpLCBmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgcmVmJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gPSB0aGlzLmRvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5kb2N1bWVudFJlZiksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmbGF0S2V5JDogT2JzZXJ2YWJsZTxGbGF0RmlyZXN0b3JlTW9kZWxLZXk+ID0gdGhpcy5rZXkkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBmbGF0RmlyZXN0b3JlTW9kZWxLZXkoeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdHdvV2F5RmxhdEtleSQ6IE9ic2VydmFibGU8RmxhdEZpcmVzdG9yZU1vZGVsS2V5PiA9IHRoaXMua2V5JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gdHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5KHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNuYXBzaG90JDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZG9jdW1lbnQkLCB0aGlzLnN0cmVhbU1vZGUkXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFt4LCBtb2RlXSkgPT4geC5zbmFwc2hvdFN0cmVhbShtb2RlKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzbmFwc2hvdExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERvY3VtZW50U25hcHNob3Q8VD4+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiBsb2FkaW5nU3RhdGVGcm9tT2JzKHRoaXMuc25hcHNob3QkKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RGF0YSQ6IE9ic2VydmFibGU8TWF5YmU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj4gPSB0aGlzLnNuYXBzaG90JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gZG9jdW1lbnREYXRhV2l0aElkQW5kS2V5KHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jdXJyZW50RGF0YSQucGlwZShmaWx0ZXJNYXliZSgpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRhTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkQW5kS2V5PFQ+Pj4gPSB0aGlzLnNuYXBzaG90TG9hZGluZ1N0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZEFuZEtleTxUPj47XG5cbiAgICAgIGlmICh4LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBkb2N1bWVudERhdGFXaXRoSWRBbmRLZXkoeC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICByZXN1bHQgPSBzdWNjZXNzUmVzdWx0KGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGVycm9yUmVzdWx0KG1vZGVsRG9lc05vdEV4aXN0RXJyb3IoKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZhbHNlIHdoaWxlIGhhc1JlZiQgaXMgZmFsc2UsIGFuZCB0aGVuIHJldHVybnMgZXhpc3RzJC5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRFeGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5oYXNSZWYkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChoYXNSZWYpID0+IHtcbiAgICAgIGlmIChoYXNSZWYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhpc3RzJDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBleGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5jdXJyZW50RGF0YSQucGlwZShcbiAgICBtYXAoKHgpID0+IGlzTWF5YmVTbyh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkb2VzTm90RXhpc3QkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5leGlzdHMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAheCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBtb2RlbElkZW50aXR5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Lm1vZGVsSWRlbnRpdHkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgLy8gTUFSSzogU3RhdGUgQ2hhbmdlc1xuICByZWFkb25seSBzZXRJZCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGlkOiBNYXliZTxGaXJlc3RvcmVNb2RlbElkPikgPT4gKGlkID8geyAuLi5zdGF0ZSwgaWQsIGtleTogdW5kZWZpbmVkLCByZWY6IHVuZGVmaW5lZCB9IDogeyAuLi5zdGF0ZSwgaWQgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcbiAgcmVhZG9ubHkgc2V0S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4pID0+IChrZXkgPyB7IC4uLnN0YXRlLCBrZXksIGlkOiB1bmRlZmluZWQsIHJlZjogdW5kZWZpbmVkIH0gOiB7IC4uLnN0YXRlLCBrZXkgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcbiAgcmVhZG9ubHkgc2V0RmxhdEtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogTWF5YmU8VHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5PikgPT4gKGtleSA/IHsgLi4uc3RhdGUsIGtleTogaW5mZXJLZXlGcm9tVHdvV2F5RmxhdEZpcmVzdG9yZU1vZGVsS2V5KGtleSksIGlkOiB1bmRlZmluZWQsIHJlZjogdW5kZWZpbmVkIH0gOiB7IC4uLnN0YXRlLCBrZXkgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8c3RyaW5nPiB8IE9ic2VydmFibGU8TWF5YmU8c3RyaW5nPj4pID0+IFN1YnNjcmlwdGlvbjtcbiAgcmVhZG9ubHkgc2V0UmVmID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcmVmOiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4pID0+IChyZWYgPyB7IC4uLnN0YXRlLCBrZXk6IHVuZGVmaW5lZCwgaWQ6IHVuZGVmaW5lZCwgcmVmIH0gOiB7IC4uLnN0YXRlLCByZWYgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+IHwgT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgcmVhZG9ubHkgc2V0U3RyZWFtTW9kZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHN0cmVhbU1vZGU6IEZpcmVzdG9yZUFjY2Vzc29yU3RyZWFtTW9kZSkgPT4gKHsgLi4uc3RhdGUsIHN0cmVhbU1vZGUgfSkpO1xuXG4gIHJlYWRvbmx5IGNsZWFyUmVmcyA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+ICh7IC4uLnN0YXRlLCBpZDogdW5kZWZpbmVkLCBrZXk6IHVuZGVmaW5lZCwgcmVmOiB1bmRlZmluZWQgfSkpO1xuXG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb24gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PikgPT4gKHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb24gfSkpO1xuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4pID0+ICh7IC4uLnN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSB9KSk7XG59XG5cbmZ1bmN0aW9uIGluamVjdFNpbmdsZUl0ZW1JZEludG9TdGF0ZTxULCBEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8VD4gPSBGaXJlc3RvcmVEb2N1bWVudDxUPiwgQyBleHRlbmRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPiA9IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUNvbnRleHRTdGF0ZTxULCBEPj4oc3RhdGU/OiBDIHwgdW5kZWZpbmVkKTogQyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGlkID0gKHN0YXRlPy5maXJlc3RvcmVDb2xsZWN0aW9uIGFzIFJvb3RTaW5nbGVJdGVtRmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPik/LnNpbmdsZUl0ZW1JZGVudGlmaWVyO1xuXG4gIGlmIChzdGF0ZSAmJiBpZCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHsgLi4uc3RhdGUsIGlkIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG5cbi8qKlxuICogQWJzdHJhY3REYnhGaXJlYmFzZURvY3VtZW50V2l0aFBhcmVudFN0b3JlIGV4dGVuc2lvbiBmb3IgdXNlIHdpdGggUm9vdFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RSb290U2luZ2xlSXRlbURieEZpcmViYXNlRG9jdW1lbnQ8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEMgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4gPSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4+IGV4dGVuZHMgQWJzdHJhY3REYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8VCwgRCwgQz4ge1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoQEluamVjdChudWxsKSBAT3B0aW9uYWwoKSBpbml0aWFsU3RhdGU/OiBDKSB7XG4gICAgc3VwZXIoaW5qZWN0U2luZ2xlSXRlbUlkSW50b1N0YXRlPFQsIEQsIEM+KGluaXRpYWxTdGF0ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uIHRvIHVzZS5cbiAgICovXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb24gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PikgPT4ge1xuICAgIGlmIChmaXJlc3RvcmVDb2xsZWN0aW9uICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGlkID0gKGZpcmVzdG9yZUNvbGxlY3Rpb24gYXMgUm9vdFNpbmdsZUl0ZW1GaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+KS5zaW5nbGVJdGVtSWRlbnRpZmllcjtcblxuICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb24sIGlkIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fic3RyYWN0Um9vdFNpbmdsZUl0ZW1EYnhGaXJlYmFzZURvY3VtZW50IG9ubHkgYWNjZXB0cyBSb290U2luZ2xlSXRlbUZpcmVzdG9yZUNvbGxlY3Rpb24gdmFsdWVzIHdpdGggYSBzaW5nbGVJdGVtSWRlbnRpZmllciBzZXQgZm9yIHNldEZpcmVzdG9yZUNvbGxlY3Rpb24uJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uOiBudWxsIH07XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogRG9lcyBub3RoaW5nIG9uIGEgQWJzdHJhY3RSb290U2luZ2xlSXRlbURieEZpcmViYXNlRG9jdW1lbnQuXG4gICAqXG4gICAqIFJlZiBpcyBzZXQgd2l0aCB0aGUgRmlyZXN0b3JlQ29sbGVjdGlvblxuICAgKi9cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc2V0SWQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBpZDogTWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4pID0+IHN0YXRlKSBhcyAob2JzZXJ2YWJsZU9yVmFsdWU6IE1heWJlPHN0cmluZz4gfCBPYnNlcnZhYmxlPE1heWJlPHN0cmluZz4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIERvZXMgbm90aGluZyBvbiBhIEFic3RyYWN0Um9vdFNpbmdsZUl0ZW1EYnhGaXJlYmFzZURvY3VtZW50LlxuICAgKlxuICAgKiBSZWYgaXMgc2V0IHdpdGggdGhlIEZpcmVzdG9yZUNvbGxlY3Rpb25cbiAgICovXG4gIG92ZXJyaWRlIHJlYWRvbmx5IHNldEtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogTWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+KSA9PiBzdGF0ZSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBEb2VzIG5vdGhpbmcgb24gYSBBYnN0cmFjdFJvb3RTaW5nbGVJdGVtRGJ4RmlyZWJhc2VEb2N1bWVudC5cbiAgICpcbiAgICogUmVmIGlzIHNldCB3aXRoIHRoZSBGaXJlc3RvcmVDb2xsZWN0aW9uXG4gICAqL1xuICBvdmVycmlkZSByZWFkb25seSBzZXRSZWYgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByZWY6IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+PikgPT4gc3RhdGUpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+IHwgT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgY2xlYXJSZWZzID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gc3RhdGUpO1xufVxuIl19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { asFirestoreModelKeyCollectionType, buildFirebaseCollectionTypeModelTypeMap } from '@dereekb/firebase';
|
|
2
|
-
import { asObservable } from '@dereekb/rxjs';
|
|
3
|
-
import { shareReplay, map, first, switchMap } from 'rxjs';
|
|
4
|
-
/**
|
|
5
|
-
* Used for retrieving contexts for a specific model type/identity.
|
|
6
|
-
*/
|
|
7
|
-
export class DbxFirebaseModelContextService {
|
|
8
|
-
}
|
|
9
|
-
export function dbxFirebaseModelContextServiceInfoInstanceFactory(config) {
|
|
10
|
-
const { modelService, entityMap$ } = config;
|
|
11
|
-
return (keyObs) => {
|
|
12
|
-
const key$ = asObservable(keyObs);
|
|
13
|
-
return key$.pipe(asFirestoreModelKeyCollectionType(), switchMap((pair) => {
|
|
14
|
-
return entityMap$.pipe(map((entityMap) => {
|
|
15
|
-
const modelType = entityMap.get(pair.collectionType);
|
|
16
|
-
if (!modelType) {
|
|
17
|
-
const message = `dbxFirebaseModelContextServiceInfoInstanceFactory Error: Failed to retrieve model type for collection type "${pair.collectionType}"`;
|
|
18
|
-
console.error(message);
|
|
19
|
-
throw new Error(message);
|
|
20
|
-
}
|
|
21
|
-
return modelService(modelType, pair.key);
|
|
22
|
-
}));
|
|
23
|
-
}));
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Operator function that builds a FirestoreModelIdentityTypeMap from the input context and shares the replay.
|
|
28
|
-
*
|
|
29
|
-
* Since the output won't change with different contexts, the map is built once and then shared.
|
|
30
|
-
*
|
|
31
|
-
* @returns
|
|
32
|
-
*/
|
|
33
|
-
export function firebaseContextServiceEntityMap() {
|
|
34
|
-
return (obs) => {
|
|
35
|
-
return obs.pipe(map((x) => buildFirebaseCollectionTypeModelTypeMap(x)), first(), shareReplay(1));
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvbW9kZWwvc2VydmljZS9tb2RlbC5jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixpQ0FBaUMsRUFBRSx1Q0FBdUMsRUFBdUksTUFBTSxtQkFBbUIsQ0FBQztBQUN4USxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBZ0MsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl4Rjs7R0FFRztBQUNILE1BQU0sT0FBZ0IsOEJBQThCO0NBT25EO0FBU0QsTUFBTSxVQUFVLGlEQUFpRCxDQUEySCxNQUFxRTtJQUMvUCxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM1QyxPQUFPLENBQXdFLE1BQWlDLEVBQUUsRUFBRTtRQUNsSCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUNkLGlDQUFpQyxFQUFFLEVBQ25DLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FDcEIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2hCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBdUIsQ0FBQztnQkFFM0UsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDZCxNQUFNLE9BQU8sR0FBRywrR0FBK0csSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDO29CQUN0SixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMxQjtnQkFFRCxPQUFPLFlBQVksQ0FBQyxTQUFnQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQStELENBQUM7WUFDaEgsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxPQUFPLENBQUMsR0FBa0IsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FDYixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3RELEtBQUssRUFBRSxFQUNQLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpcmVzdG9yZU1vZGVsVHlwZSwgYXNGaXJlc3RvcmVNb2RlbEtleUNvbGxlY3Rpb25UeXBlLCBidWlsZEZpcmViYXNlQ29sbGVjdGlvblR5cGVNb2RlbFR5cGVNYXAsIEZpcmViYXNlUGVybWlzc2lvbkVycm9yQ29udGV4dCwgRmlyZXN0b3JlRG9jdW1lbnQsIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHlUeXBlTWFwLCBGaXJlc3RvcmVNb2RlbEtleSwgSW5Db250ZXh0RmlyZWJhc2VNb2RlbHNTZXJ2aWNlIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgYXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgR3JhbnRlZFJvbGUgfSBmcm9tICdAZGVyZWVrYi9tb2RlbCc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgbWFwLCBPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9uLCBmaXJzdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUluQ29udGV4dEZpcmViYXNlTW9kZWxJbmZvU2VydmljZUluc3RhbmNlIH0gZnJvbSAnLi9tb2RlbC5jb250ZXh0JztcbmltcG9ydCB7IERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbFNlcnZpY2VJbnN0YW5jZUZhY3RvcnkgfSBmcm9tICcuL21vZGVsLmNvbnRleHQuaW5zdGFuY2UnO1xuXG4vKipcbiAqIFVzZWQgZm9yIHJldHJpZXZpbmcgY29udGV4dHMgZm9yIGEgc3BlY2lmaWMgbW9kZWwgdHlwZS9pZGVudGl0eS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbEluZm9TZXJ2aWNlSW5zdGFuY2UgZm9yIHRoZSBpbnB1dCBtb2RlbCBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkkXG4gICAqL1xuICBhYnN0cmFjdCBtb2RlbEluZm9JbnN0YW5jZTxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiA9IGFueSwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+KGtleU9iczogT2JzZXJ2YWJsZU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+KTogT2JzZXJ2YWJsZTxEYnhGaXJlYmFzZUluQ29udGV4dEZpcmViYXNlTW9kZWxJbmZvU2VydmljZUluc3RhbmNlPEQsIFI+Pjtcbn1cblxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlSW5mb0luc3RhbmNlRmFjdG9yeSA9IDxEIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQ8YW55PiwgUiBleHRlbmRzIEdyYW50ZWRSb2xlID0gR3JhbnRlZFJvbGU+KGtleU9iczogT2JzZXJ2YWJsZU9yVmFsdWU8RmlyZXN0b3JlTW9kZWxLZXk+KSA9PiBPYnNlcnZhYmxlPERieEZpcmViYXNlSW5Db250ZXh0RmlyZWJhc2VNb2RlbEluZm9TZXJ2aWNlSW5zdGFuY2U8RCwgUj4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZpcmViYXNlTW9kZWxDb250ZXh0U2VydmljZUluZm9JbnN0YW5jZUZhY3RvcnlDb25maWc8UyBleHRlbmRzIEluQ29udGV4dEZpcmViYXNlTW9kZWxzU2VydmljZTxhbnk+LCBDIGV4dGVuZHMgRmlyZWJhc2VQZXJtaXNzaW9uRXJyb3JDb250ZXh0ID0gRmlyZWJhc2VQZXJtaXNzaW9uRXJyb3JDb250ZXh0PiB7XG4gIHJlYWRvbmx5IG1vZGVsU2VydmljZTogRGJ4RmlyZWJhc2VJbkNvbnRleHRGaXJlYmFzZU1vZGVsU2VydmljZUluc3RhbmNlRmFjdG9yeTxTLCBDPjtcbiAgcmVhZG9ubHkgZW50aXR5TWFwJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkZW50aXR5VHlwZU1hcD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2VJbmZvSW5zdGFuY2VGYWN0b3J5PFMgZXh0ZW5kcyBJbkNvbnRleHRGaXJlYmFzZU1vZGVsc1NlcnZpY2U8YW55PiwgQyBleHRlbmRzIEZpcmViYXNlUGVybWlzc2lvbkVycm9yQ29udGV4dCA9IEZpcmViYXNlUGVybWlzc2lvbkVycm9yQ29udGV4dD4oY29uZmlnOiBEYnhGaXJlYmFzZU1vZGVsQ29udGV4dFNlcnZpY2VJbmZvSW5zdGFuY2VGYWN0b3J5Q29uZmlnPFMsIEM+KTogRGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlSW5mb0luc3RhbmNlRmFjdG9yeSB7XG4gIGNvbnN0IHsgbW9kZWxTZXJ2aWNlLCBlbnRpdHlNYXAkIH0gPSBjb25maWc7XG4gIHJldHVybiA8RCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PGFueT4sIFIgZXh0ZW5kcyBHcmFudGVkUm9sZSA9IEdyYW50ZWRSb2xlPihrZXlPYnM6IE9ic2VydmFibGVPclZhbHVlPHN0cmluZz4pID0+IHtcbiAgICBjb25zdCBrZXkkID0gYXNPYnNlcnZhYmxlKGtleU9icyk7XG5cbiAgICByZXR1cm4ga2V5JC5waXBlKFxuICAgICAgYXNGaXJlc3RvcmVNb2RlbEtleUNvbGxlY3Rpb25UeXBlKCksXG4gICAgICBzd2l0Y2hNYXAoKHBhaXIpID0+IHtcbiAgICAgICAgcmV0dXJuIGVudGl0eU1hcCQucGlwZShcbiAgICAgICAgICBtYXAoKGVudGl0eU1hcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9kZWxUeXBlID0gZW50aXR5TWFwLmdldChwYWlyLmNvbGxlY3Rpb25UeXBlKSBhcyBGaXJlc3RvcmVNb2RlbFR5cGU7XG5cbiAgICAgICAgICAgIGlmICghbW9kZWxUeXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgZGJ4RmlyZWJhc2VNb2RlbENvbnRleHRTZXJ2aWNlSW5mb0luc3RhbmNlRmFjdG9yeSBFcnJvcjogRmFpbGVkIHRvIHJldHJpZXZlIG1vZGVsIHR5cGUgZm9yIGNvbGxlY3Rpb24gdHlwZSBcIiR7cGFpci5jb2xsZWN0aW9uVHlwZX1cImA7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG1vZGVsU2VydmljZShtb2RlbFR5cGUgYXMgYW55LCBwYWlyLmtleSkgYXMgRGJ4RmlyZWJhc2VJbkNvbnRleHRGaXJlYmFzZU1vZGVsSW5mb1NlcnZpY2VJbnN0YW5jZTxELCBSPjtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9O1xufVxuXG4vKipcbiAqIE9wZXJhdG9yIGZ1bmN0aW9uIHRoYXQgYnVpbGRzIGEgRmlyZXN0b3JlTW9kZWxJZGVudGl0eVR5cGVNYXAgZnJvbSB0aGUgaW5wdXQgY29udGV4dCBhbmQgc2hhcmVzIHRoZSByZXBsYXkuXG4gKlxuICogU2luY2UgdGhlIG91dHB1dCB3b24ndCBjaGFuZ2Ugd2l0aCBkaWZmZXJlbnQgY29udGV4dHMsIHRoZSBtYXAgaXMgYnVpbHQgb25jZSBhbmQgdGhlbiBzaGFyZWQuXG4gKlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpcmViYXNlQ29udGV4dFNlcnZpY2VFbnRpdHlNYXA8VCBleHRlbmRzIEluQ29udGV4dEZpcmViYXNlTW9kZWxzU2VydmljZTxhbnk+PigpOiBPcGVyYXRvckZ1bmN0aW9uPFQsIEZpcmVzdG9yZU1vZGVsSWRlbnRpdHlUeXBlTWFwPiB7XG4gIHJldHVybiAob2JzOiBPYnNlcnZhYmxlPFQ+KSA9PiB7XG4gICAgcmV0dXJuIG9icy5waXBlKFxuICAgICAgbWFwKCh4KSA9PiBidWlsZEZpcmViYXNlQ29sbGVjdGlvblR5cGVNb2RlbFR5cGVNYXAoeCkpLFxuICAgICAgZmlyc3QoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==
|