@dereekb/dbx-firebase 6.0.0 → 7.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.
@@ -5,6 +5,7 @@ export * from './store.collection.change.if.directive';
5
5
  export * from './store.collection.directive';
6
6
  export * from './store.collection.list.directive';
7
7
  export * from './store.document';
8
+ export * from './store.document.crud';
8
9
  export * from './store.document.auth.directive';
9
10
  export * from './store.document.directive';
10
11
  export * from './store.document.router.directive';
@@ -12,4 +13,4 @@ export * from './store.subcollection';
12
13
  export * from './store.subcollection.document';
13
14
  export * from './store.subcollection.directive';
14
15
  export * from './store.subcollection.rxjs';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9zdG9yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGVsLnN0b3JlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmNoYW5nZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmNoYW5nZS5pZi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5jb2xsZWN0aW9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24ubGlzdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5kb2N1bWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50LmF1dGguZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQucm91dGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLnN1YmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uLmRvY3VtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuc3ViY29sbGVjdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uLnJ4anMnO1xuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9zdG9yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kZWwuc3RvcmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24uY2hhbmdlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24uY2hhbmdlLmlmLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmNvbGxlY3Rpb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuY29sbGVjdGlvbi5saXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQuY3J1ZCc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLmRvY3VtZW50LmF1dGguZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuZG9jdW1lbnQucm91dGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JlLnN1YmNvbGxlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uLmRvY3VtZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmUuc3ViY29sbGVjdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZS5zdWJjb2xsZWN0aW9uLnJ4anMnO1xuIl19
@@ -0,0 +1,43 @@
1
+ import { lazyFrom, loadingStateFromObs } from '@dereekb/rxjs';
2
+ import { firstValue } from '@dereekb/util';
3
+ import { first, switchMap } from 'rxjs';
4
+ /**
5
+ * Creates a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseCreateFunction result and sets the key of the created value.
6
+ *
7
+ * @param store
8
+ * @param fn
9
+ * @returns
10
+ */
11
+ export function firebaseDocumentStoreCreateFunction(store, fn) {
12
+ return (params) => loadingStateFromObs(lazyFrom(() => fn(params).then((result) => {
13
+ const modelKeys = result.modelKeys;
14
+ const firstKey = firstValue(modelKeys);
15
+ if (firstKey) {
16
+ store.setKey(firstKey);
17
+ }
18
+ return result;
19
+ })));
20
+ }
21
+ export function firebaseDocumentStoreUpdateFunction(store, fn) {
22
+ return (params) => loadingStateFromObs(store.key$.pipe(first(), switchMap((key) => fn({
23
+ ...params,
24
+ key // inject key into the parameters.
25
+ }))));
26
+ }
27
+ /**
28
+ * Deletes a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseDeleteFunction result and sets the key of the created value.
29
+ *
30
+ * @param store
31
+ * @param fn
32
+ * @returns
33
+ */
34
+ export function firebaseDocumentStoreDeleteFunction(store, fn) {
35
+ return (params) => loadingStateFromObs(store.key$.pipe(first(), switchMap((key) => fn({
36
+ ...params,
37
+ key // inject key into the parameters.
38
+ }).then((result) => {
39
+ store.clearRefs();
40
+ return result;
41
+ }))));
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuY3J1ZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL3N0b3JlL3N0b3JlLmRvY3VtZW50LmNydWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU9wRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsbUNBQW1DLENBQWlFLEtBQXlDLEVBQUUsRUFBcUM7SUFDbE0sT0FBTyxDQUFDLE1BQVMsRUFBRSxFQUFFLENBQ25CLG1CQUFtQixDQUNqQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQ1osRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZDLElBQUksUUFBUSxFQUFFO1lBQ1osS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztBQUNOLENBQUM7QUFPRCxNQUFNLFVBQVUsbUNBQW1DLENBQWlELEtBQXlDLEVBQUUsRUFBa0M7SUFDL0ssT0FBTyxDQUFDLE1BQVMsRUFBRSxFQUFFLENBQ25CLG1CQUFtQixDQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDYixLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNoQixFQUFFLENBQUM7UUFDRCxHQUFHLE1BQU07UUFDVCxHQUFHLENBQUMsa0NBQWtDO0tBQ3ZDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FBQztBQUNOLENBQUM7QUFPRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsbUNBQW1DLENBQUksS0FBeUMsRUFBRSxFQUFrQztJQUNsSSxPQUFPLENBQUMsTUFBUyxFQUFFLEVBQUUsQ0FDbkIsbUJBQW1CLENBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNiLEtBQUssRUFBRSxFQUNQLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2hCLEVBQUUsQ0FBQztRQUNELEdBQUcsTUFBTTtRQUNULEdBQUcsQ0FBQyxrQ0FBa0M7S0FDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2pCLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaXJlc3RvcmVNb2RlbEtleVJlZiwgTW9kZWxGaXJlYmFzZUNyZWF0ZUZ1bmN0aW9uLCBNb2RlbEZpcmViYXNlRGVsZXRlRnVuY3Rpb24sIE1vZGVsRmlyZWJhc2VVcGRhdGVGdW5jdGlvbiwgT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBsYXp5RnJvbSwgTG9hZGluZ1N0YXRlLCBsb2FkaW5nU3RhdGVGcm9tT2JzIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBmaXJzdCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJ3RzLWVzc2VudGlhbHMnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlIH0gZnJvbSAnLi9zdG9yZS5kb2N1bWVudCc7XG5cbi8vIE1BUks6IENyZWF0ZVxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ3JlYXRlRnVuY3Rpb248SSwgTyBleHRlbmRzIE9uQ2FsbENyZWF0ZU1vZGVsUmVzdWx0ID0gT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQ+ID0gKHBhcmFtczogSSkgPT4gT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Tz4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmb3IgYSBzdG9yZSB0aGF0IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZSBjYXB0dXJlcyB0aGUgTW9kZWxGaXJlYmFzZUNyZWF0ZUZ1bmN0aW9uIHJlc3VsdCBhbmQgc2V0cyB0aGUga2V5IG9mIHRoZSBjcmVhdGVkIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBzdG9yZVxuICogQHBhcmFtIGZuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmlyZWJhc2VEb2N1bWVudFN0b3JlQ3JlYXRlRnVuY3Rpb248SSwgTyBleHRlbmRzIE9uQ2FsbENyZWF0ZU1vZGVsUmVzdWx0ID0gT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQ+KHN0b3JlOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8YW55LCBhbnk+LCBmbjogTW9kZWxGaXJlYmFzZUNyZWF0ZUZ1bmN0aW9uPEksIE8+KTogRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ3JlYXRlRnVuY3Rpb248SSwgTz4ge1xuICByZXR1cm4gKHBhcmFtczogSSkgPT5cbiAgICBsb2FkaW5nU3RhdGVGcm9tT2JzKFxuICAgICAgbGF6eUZyb20oKCkgPT5cbiAgICAgICAgZm4ocGFyYW1zKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICBjb25zdCBtb2RlbEtleXMgPSByZXN1bHQubW9kZWxLZXlzO1xuICAgICAgICAgIGNvbnN0IGZpcnN0S2V5ID0gZmlyc3RWYWx1ZShtb2RlbEtleXMpO1xuXG4gICAgICAgICAgaWYgKGZpcnN0S2V5KSB7XG4gICAgICAgICAgICBzdG9yZS5zZXRLZXkoZmlyc3RLZXkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbn1cblxuLy8gTUFSSzogVXBkYXRlXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVVcGRhdGVQYXJhbXMgPSBQYXJ0aWFsPFdyaXRhYmxlPEZpcmVzdG9yZU1vZGVsS2V5UmVmPj47XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZVVwZGF0ZUZ1bmN0aW9uPEkgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVVcGRhdGVQYXJhbXM+ID0gKHBhcmFtczogSSkgPT4gT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8dm9pZD4+O1xuXG5leHBvcnQgZnVuY3Rpb24gZmlyZWJhc2VEb2N1bWVudFN0b3JlVXBkYXRlRnVuY3Rpb248SSBleHRlbmRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZVVwZGF0ZVBhcmFtcz4oc3RvcmU6IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxhbnksIGFueT4sIGZuOiBNb2RlbEZpcmViYXNlVXBkYXRlRnVuY3Rpb248ST4pOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVVcGRhdGVGdW5jdGlvbjxJPiB7XG4gIHJldHVybiAocGFyYW1zOiBJKSA9PlxuICAgIGxvYWRpbmdTdGF0ZUZyb21PYnMoXG4gICAgICBzdG9yZS5rZXkkLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHN3aXRjaE1hcCgoa2V5KSA9PlxuICAgICAgICAgIGZuKHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIGtleSAvLyBpbmplY3Qga2V5IGludG8gdGhlIHBhcmFtZXRlcnMuXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG59XG5cbi8vIE1BUks6IERlbGV0ZVxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGVsZXRlUGFyYW1zID0gUGFydGlhbDxXcml0YWJsZTxGaXJlc3RvcmVNb2RlbEtleVJlZj4+O1xuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVEZWxldGVGdW5jdGlvbjxJIGV4dGVuZHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGVsZXRlUGFyYW1zPiA9IChwYXJhbXM6IEkpID0+IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPHZvaWQ+PjtcblxuLyoqXG4gKiBEZWxldGVzIGEgZnVuY3Rpb24gZm9yIGEgc3RvcmUgdGhhdCBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmUgY2FwdHVyZXMgdGhlIE1vZGVsRmlyZWJhc2VEZWxldGVGdW5jdGlvbiByZXN1bHQgYW5kIHNldHMgdGhlIGtleSBvZiB0aGUgY3JlYXRlZCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gc3RvcmVcbiAqIEBwYXJhbSBmblxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpcmViYXNlRG9jdW1lbnRTdG9yZURlbGV0ZUZ1bmN0aW9uPEk+KHN0b3JlOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8YW55LCBhbnk+LCBmbjogTW9kZWxGaXJlYmFzZURlbGV0ZUZ1bmN0aW9uPEk+KTogRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGVsZXRlRnVuY3Rpb248ST4ge1xuICByZXR1cm4gKHBhcmFtczogSSkgPT5cbiAgICBsb2FkaW5nU3RhdGVGcm9tT2JzKFxuICAgICAgc3RvcmUua2V5JC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBzd2l0Y2hNYXAoKGtleSkgPT5cbiAgICAgICAgICBmbih7XG4gICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICBrZXkgLy8gaW5qZWN0IGtleSBpbnRvIHRoZSBwYXJhbWV0ZXJzLlxuICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgc3RvcmUuY2xlYXJSZWZzKCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { shareReplay, distinctUntilChanged, map, switchMap, combineLatest } from 'rxjs';
2
+ import { shareReplay, distinctUntilChanged, map, switchMap, combineLatest, of } from 'rxjs';
3
3
  import { documentDataWithId } from '@dereekb/firebase';
4
4
  import { filterMaybe, beginLoading, successResult, loadingStateFromObs, errorResult } from '@dereekb/rxjs';
5
5
  import { isMaybeSo } from '@dereekb/util';
@@ -14,27 +14,36 @@ export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
14
14
  super(...arguments);
15
15
  // MARK: Effects
16
16
  // MARK: Accessors
17
+ this.currentFirestoreCollectionLike$ = this.state$.pipe(map((x) => x.firestoreCollection ?? x.firestoreCollectionLike), distinctUntilChanged(), shareReplay(1));
17
18
  this.currentFirestoreCollection$ = this.state$.pipe(map((x) => x.firestoreCollection), distinctUntilChanged(), shareReplay(1));
19
+ this.firestoreCollectionLike$ = this.currentFirestoreCollectionLike$.pipe(filterMaybe());
18
20
  this.firestoreCollection$ = this.currentFirestoreCollection$.pipe(filterMaybe());
19
21
  this.currentInputId$ = this.state$.pipe(map((x) => x.id), distinctUntilChanged(), shareReplay(1));
20
22
  this.inputId$ = this.currentInputId$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
23
+ this.currentInputKey$ = this.state$.pipe(map((x) => x.key), distinctUntilChanged(), shareReplay(1));
24
+ this.inputKey$ = this.currentInputKey$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
21
25
  this.currentInputRef$ = this.state$.pipe(map((x) => x.ref), distinctUntilChanged(), shareReplay(1));
22
26
  this.inputRef$ = this.currentInputRef$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
23
- this.currentDocument$ = combineLatest([this.currentFirestoreCollection$, this.currentInputId$, this.currentInputRef$]).pipe(map(([collection, id, ref]) => {
27
+ this.currentDocument$ = combineLatest([this.currentInputId$, this.currentInputKey$, this.currentInputRef$]).pipe(switchMap(([id, key, ref]) => {
24
28
  let document;
25
- if (collection) {
26
- if (ref) {
27
- document = collection.documentAccessor().loadDocument(ref);
28
- }
29
- else if (id) {
30
- document = collection.documentAccessor().loadDocumentForPath(id);
31
- }
29
+ if (ref) {
30
+ document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocument(ref)));
31
+ }
32
+ else if (key) {
33
+ document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocumentForKey(key)));
34
+ }
35
+ else if (id) {
36
+ document = this.firestoreCollection$.pipe(map((x) => x.documentAccessor().loadDocumentForPath(id)));
37
+ }
38
+ else {
39
+ document = of(undefined);
32
40
  }
33
41
  return document;
34
42
  }), distinctUntilChanged(), shareReplay(1));
35
43
  this.document$ = this.currentDocument$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
36
44
  this.documentLoadingState$ = this.currentDocument$.pipe(map((x) => (x ? successResult(x) : beginLoading())), shareReplay(1));
37
45
  this.id$ = this.document$.pipe(map((x) => x.id), shareReplay());
46
+ this.key$ = this.document$.pipe(map((x) => x.key), shareReplay());
38
47
  this.ref$ = this.document$.pipe(map((x) => x.documentRef), shareReplay());
39
48
  this.snapshot$ = this.document$.pipe(switchMap((x) => x.accessor.stream()), shareReplay(1));
40
49
  this.snapshotLoadingState$ = this.currentDocument$.pipe(switchMap(() => loadingStateFromObs(this.snapshot$)), shareReplay(1));
@@ -61,16 +70,23 @@ export class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
61
70
  }), shareReplay(1));
62
71
  this.exists$ = this.currentData$.pipe(map((x) => isMaybeSo(x)), shareReplay(1));
63
72
  this.doesNotExist$ = this.exists$.pipe(map((x) => !x), shareReplay(1));
73
+ this.modelIdentity$ = this.document$.pipe(map((x) => x.modelIdentity), shareReplay(1));
64
74
  // MARK: State Changes
65
75
  /**
66
76
  * Sets the id of the document to load.
67
77
  */
68
78
  this.setId = this.updater((state, id) => (id ? { ...state, id, ref: undefined } : { ...state, id }));
79
+ /**
80
+ * Sets the key of the document to load.
81
+ */
82
+ this.setKey = this.updater((state, key) => (key ? { ...state, key, ref: undefined } : { ...state, key }));
69
83
  /**
70
84
  * Sets the ref of the document to load.
71
85
  */
72
86
  this.setRef = this.updater((state, ref) => (ref ? { ...state, id: undefined, ref } : { ...state, ref }));
87
+ this.clearRefs = this.updater((state) => ({ ...state, id: undefined, key: undefined, ref: undefined }));
73
88
  this.setFirestoreCollection = this.updater((state, firestoreCollection) => ({ ...state, firestoreCollection }));
89
+ this.setFirestoreCollectionLike = this.updater((state, firestoreCollectionLike) => ({ ...state, firestoreCollectionLike }));
74
90
  }
75
91
  }
76
92
  AbstractDbxFirebaseDocumentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
@@ -78,4 +94,4 @@ AbstractDbxFirebaseDocumentStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersio
78
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, decorators: [{
79
95
  type: Injectable
80
96
  }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9zdG9yZS9zdG9yZS5kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ2xILE9BQU8sRUFBK0Usa0JBQWtCLEVBQXNCLE1BQU0sbUJBQW1CLENBQUM7QUFDeEosT0FBTyxFQUFFLFdBQVcsRUFBZ0IsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBbUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBb0IscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBcUNsRDs7R0FFRztBQUVILE1BQU0sT0FBTyxnQ0FBOEwsU0FBUSxxQkFBd0I7SUFEM087O1FBRUUsZ0JBQWdCO1FBRWhCLGtCQUFrQjtRQUNULGdDQUEyQixHQUFpRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFDakMsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFFTyx5QkFBb0IsR0FBMEMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRW5ILG9CQUFlLEdBQWdDLElBQUksQ0FBQyxN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Q0FBQyxDQUFDO0tBQ3ZKOzs2SEFqSVksZ0NBQWdDO2lJQUFoQyxnQ0FBZ0M7MkZBQWhDLGdDQUFnQztrQkFENUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAsIGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9jdW1lbnRTbmFwc2hvdCwgRG9jdW1lbnRSZWZlcmVuY2UsIEZpcmVzdG9yZUNvbGxlY3Rpb24sIEZpcmVzdG9yZURvY3VtZW50LCBkb2N1bWVudERhdGFXaXRoSWQsIERvY3VtZW50RGF0YVdpdGhJZCB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIGJlZ2luTG9hZGluZywgc3VjY2Vzc1Jlc3VsdCwgbG9hZGluZ1N0YXRlRnJvbU9icywgZXJyb3JSZXN1bHQsIE9ic2VydmFibGVPclZhbHVlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBNYXliZSwgTW9kZWxLZXksIGlzTWF5YmVTbyB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgTG9ja1NldENvbXBvbmVudCwgTG9ja1NldENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgbW9kZWxEb2VzTm90RXhpc3RFcnJvciB9IGZyb20gJy4uL2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IGV4dGVuZHMgTG9ja1NldENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+O1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dElkJDogT2JzZXJ2YWJsZTxNYXliZTxNb2RlbEtleT4+O1xuICByZWFkb25seSBpbnB1dElkJDogT2JzZXJ2YWJsZTxNb2RlbEtleT47XG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dFJlZiQ6IE9ic2VydmFibGU8TWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+PjtcbiAgcmVhZG9ubHkgaW5wdXRSZWYkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+PjtcblxuICByZWFkb25seSBjdXJyZW50RG9jdW1lbnQkOiBPYnNlcnZhYmxlPE1heWJlPEQ+PjtcbiAgcmVhZG9ubHkgZG9jdW1lbnQkOiBPYnNlcnZhYmxlPEQ+O1xuICByZWFkb25seSBpZCQ6IE9ic2VydmFibGU8TW9kZWxLZXk+O1xuICByZWFkb25seSByZWYkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+PjtcbiAgcmVhZG9ubHkgZG9jdW1lbnRMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEPj47XG4gIHJlYWRvbmx5IHNuYXBzaG90JDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+PjtcbiAgcmVhZG9ubHkgc25hcHNob3RMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEb2N1bWVudFNuYXBzaG90PFQ+Pj47XG4gIHJlYWRvbmx5IGN1cnJlbnREYXRhJDogT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+PjtcbiAgcmVhZG9ubHkgZGF0YSQ6IE9ic2VydmFibGU8RG9jdW1lbnREYXRhV2l0aElkPFQ+PjtcbiAgcmVhZG9ubHkgZGF0YUxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZDxUPj4+O1xuICByZWFkb25seSBleGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHNldElkOiAob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPHN0cmluZz4+KSA9PiBTdWJzY3JpcHRpb247XG4gIHNldFJlZjogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZpcmVzdG9yZSBjb2xsZWN0aW9uIHRvIHJldHJpZXZlIGRvY3VtZW50IGZyb20uXG4gICAqL1xuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uOiAoKCkgPT4gdm9pZCkgfCAoKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+Pj4pID0+IFN1YnNjcmlwdGlvbik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiB7XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb24/OiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PjtcbiAgcmVhZG9ubHkgaWQ/OiBNYXliZTxNb2RlbEtleT47XG4gIHJlYWRvbmx5IHJlZj86IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pjtcbn1cblxuLyoqXG4gKiBVc2VkIGZvciBzdG9yaW5nIHRoZSBzdGF0ZSBvZiBhIFBlcnNvbiBhbmQgcmVsYXRlZCBlbWFpbCB0aHJlYWRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWJzdHJhY3REYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4sIEMgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4gPSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRD4+IGV4dGVuZHMgTG9ja1NldENvbXBvbmVudFN0b3JlPEM+IGltcGxlbWVudHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFQsIEQ+IHtcbiAgLy8gTUFSSzogRWZmZWN0c1xuXG4gIC8vIE1BUks6IEFjY2Vzc29yc1xuICByZWFkb25seSBjdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbjxULCBEPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZmlyZXN0b3JlQ29sbGVjdGlvbiksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRJZCQ6IE9ic2VydmFibGU8TWF5YmU8TW9kZWxLZXk+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlkKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRJZCQ6IE9ic2VydmFibGU8TW9kZWxLZXk+ID0gdGhpcy5jdXJyZW50SW5wdXRJZCQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0UmVmJDogT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgucmVmKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRSZWYkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+PiA9IHRoaXMuY3VycmVudElucHV0UmVmJC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBjdXJyZW50RG9jdW1lbnQkOiBPYnNlcnZhYmxlPE1heWJlPEQ+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb24kLCB0aGlzLmN1cnJlbnRJbnB1dElkJCwgdGhpcy5jdXJyZW50SW5wdXRSZWYkXSkucGlwZShcbiAgICBtYXAoKFtjb2xsZWN0aW9uLCBpZCwgcmVmXSkgPT4ge1xuICAgICAgbGV0IGRvY3VtZW50OiBNYXliZTxEPjtcblxuICAgICAgaWYgKGNvbGxlY3Rpb24pIHtcbiAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgIGRvY3VtZW50ID0gY29sbGVjdGlvbi5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50KHJlZik7XG4gICAgICAgIH0gZWxzZSBpZiAoaWQpIHtcbiAgICAgICAgICBkb2N1bWVudCA9IGNvbGxlY3Rpb24uZG9jdW1lbnRBY2Nlc3NvcigpLmxvYWREb2N1bWVudEZvclBhdGgoaWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZG9jdW1lbnQkOiBPYnNlcnZhYmxlPEQ+ID0gdGhpcy5jdXJyZW50RG9jdW1lbnQkLnBpcGUoZmlsdGVyTWF5YmUoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50TG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RD4+ID0gdGhpcy5jdXJyZW50RG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAoeCA/IHN1Y2Nlc3NSZXN1bHQoeCkgOiBiZWdpbkxvYWRpbmc8RD4oKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaWQkOiBPYnNlcnZhYmxlPE1vZGVsS2V5PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlkKSxcbiAgICBzaGFyZVJlcGxheSgpXG4gICk7XG5cbiAgcmVhZG9ubHkgcmVmJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4gPSB0aGlzLmRvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5kb2N1bWVudFJlZiksXG4gICAgc2hhcmVSZXBsYXkoKVxuICApO1xuXG4gIHJlYWRvbmx5IHNuYXBzaG90JDogT2JzZXJ2YWJsZTxEb2N1bWVudFNuYXBzaG90PFQ+PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB4LmFjY2Vzc29yLnN0cmVhbSgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHNuYXBzaG90TG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnRTbmFwc2hvdDxUPj4+ID0gdGhpcy5jdXJyZW50RG9jdW1lbnQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IGxvYWRpbmdTdGF0ZUZyb21PYnModGhpcy5zbmFwc2hvdCQpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnREYXRhJDogT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB4LmFjY2Vzc29yLnN0cmVhbSgpLnBpcGUobWFwKCh5KSA9PiBkb2N1bWVudERhdGFXaXRoSWQoeSkpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRhJDogT2JzZXJ2YWJsZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+ID0gdGhpcy5jdXJyZW50RG9jdW1lbnQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY3VycmVudERhdGEkLnBpcGUoZmlsdGVyTWF5YmUoKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZGF0YUxvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZDxUPj4+ID0gdGhpcy5zbmFwc2hvdExvYWRpbmdTdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGxldCByZXN1bHQ6IExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+O1xuXG4gICAgICBpZiAoeC52YWx1ZSkge1xuICAgICAgICBjb25zdCBkYXRhID0gZG9jdW1lbnREYXRhV2l0aElkKHgudmFsdWUpO1xuXG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgcmVzdWx0ID0gc3VjY2Vzc1Jlc3VsdChkYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBlcnJvclJlc3VsdChtb2RlbERvZXNOb3RFeGlzdEVycm9yKCkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgLi4ueCxcbiAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBleGlzdHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5jdXJyZW50RGF0YSQucGlwZShcbiAgICBtYXAoKHgpID0+IGlzTWF5YmVTbyh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkb2VzTm90RXhpc3QkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5leGlzdHMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAheCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvLyBNQVJLOiBTdGF0ZSBDaGFuZ2VzXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpZCBvZiB0aGUgZG9jdW1lbnQgdG8gbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldElkID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgaWQ6IE1heWJlPE1vZGVsS2V5PikgPT4gKGlkID8geyAuLi5zdGF0ZSwgaWQsIHJlZjogdW5kZWZpbmVkIH0gOiB7IC4uLnN0YXRlLCBpZCB9KSkgYXMgKG9ic2VydmFibGVPclZhbHVlOiBNYXliZTxzdHJpbmc+IHwgT2JzZXJ2YWJsZTxNYXliZTxzdHJpbmc+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZWYgb2YgdGhlIGRvY3VtZW50IHRvIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzZXRSZWYgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCByZWY6IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+PikgPT4gKHJlZiA/IHsgLi4uc3RhdGUsIGlkOiB1bmRlZmluZWQsIHJlZiB9IDogeyAuLi5zdGF0ZSwgcmVmIH0pKSBhcyAob2JzZXJ2YWJsZU9yVmFsdWU6IE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+PiB8IE9ic2VydmFibGU8TWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+PikgPT4gU3Vic2NyaXB0aW9uO1xuXG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb24gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBmaXJlc3RvcmVDb2xsZWN0aW9uOiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PikgPT4gKHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb24gfSkpO1xufVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZmlyZWJhc2Uvc3JjL2xpYi9tb2RlbC9zdG9yZS9zdG9yZS5kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0SCxPQUFPLEVBQStFLGtCQUFrQixFQUE0RyxNQUFNLG1CQUFtQixDQUFDO0FBQzlPLE9BQU8sRUFBRSxXQUFXLEVBQWdCLFlBQVksRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQVMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBb0IscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBdURsRDs7R0FFRztBQUVILE1BQU0sT0FBTyxnQ0FBOEwsU0FBUSxxQkFBd0I7SUFEM087O1FBRUUsZ0JBQWdCO1FBRWhCLGtCQUFrQjtRQUNULG9DQUErQixHQUFxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0csR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLElBQUksQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEVBQzlELG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8sZ0NBQTJCLEdBQWlELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNuRyxHQUFHLENBQUMsQ0FBQyxDQUFD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QUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBbUYsQ0FBQztRQUUxTjs7V0FFRztRQUNNLFdBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQWdDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBK0csQ0FBQztRQUUvTyxjQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRW5HLDJCQUFzQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsbUJBQXFELEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3SSwrQkFBMEIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLHVCQUE2RCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDdks7OzZIQXBLWSxnQ0FBZ0M7aUlBQWhDLGdDQUFnQzsyRkFBaEMsZ0NBQWdDO2tCQUQ1QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9jdW1lbnRTbmFwc2hvdCwgRG9jdW1lbnRSZWZlcmVuY2UsIEZpcmVzdG9yZUNvbGxlY3Rpb24sIEZpcmVzdG9yZURvY3VtZW50LCBkb2N1bWVudERhdGFXaXRoSWQsIERvY3VtZW50RGF0YVdpdGhJZCwgRmlyZXN0b3JlTW9kZWxJZCwgRmlyZXN0b3JlTW9kZWxLZXksIEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlLCBGaXJlc3RvcmVNb2RlbElkZW50aXR5IH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIExvYWRpbmdTdGF0ZSwgYmVnaW5Mb2FkaW5nLCBzdWNjZXNzUmVzdWx0LCBsb2FkaW5nU3RhdGVGcm9tT2JzLCBlcnJvclJlc3VsdCwgT2JzZXJ2YWJsZU9yVmFsdWUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE1heWJlLCBpc01heWJlU28gfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IExvY2tTZXRDb21wb25lbnQsIExvY2tTZXRDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IG1vZGVsRG9lc05vdEV4aXN0RXJyb3IgfSBmcm9tICcuLi9lcnJvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+PiBleHRlbmRzIExvY2tTZXRDb21wb25lbnQge1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+O1xuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PjtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRJZCQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4+O1xuICByZWFkb25seSBpbnB1dElkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPjtcbiAgcmVhZG9ubHkgY3VycmVudElucHV0S2V5JDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4+O1xuICByZWFkb25seSBpbnB1dEtleSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxLZXk+O1xuICByZWFkb25seSBjdXJyZW50SW5wdXRSZWYkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50UmVmZXJlbmNlPFQ+Pj47XG4gIHJlYWRvbmx5IGlucHV0UmVmJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPj47XG5cbiAgcmVhZG9ubHkgY3VycmVudERvY3VtZW50JDogT2JzZXJ2YWJsZTxNYXliZTxEPj47XG4gIHJlYWRvbmx5IGRvY3VtZW50JDogT2JzZXJ2YWJsZTxEPjtcbiAgcmVhZG9ubHkgaWQkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWQ+O1xuICByZWFkb25seSBrZXkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsS2V5PjtcbiAgcmVhZG9ubHkgcmVmJDogT2JzZXJ2YWJsZTxEb2N1bWVudFJlZmVyZW5jZTxUPj47XG4gIHJlYWRvbmx5IGRvY3VtZW50TG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RD4+O1xuICByZWFkb25seSBzbmFwc2hvdCQ6IE9ic2VydmFibGU8RG9jdW1lbnRTbmFwc2hvdDxUPj47XG4gIHJlYWRvbmx5IHNuYXBzaG90TG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnRTbmFwc2hvdDxUPj4+O1xuICByZWFkb25seSBjdXJyZW50RGF0YSQ6IE9ic2VydmFibGU8TWF5YmU8RG9jdW1lbnREYXRhV2l0aElkPFQ+Pj47XG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZDxUPj47XG4gIHJlYWRvbmx5IGRhdGFMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEb2N1bWVudERhdGFXaXRoSWQ8VD4+PjtcbiAgcmVhZG9ubHkgZXhpc3RzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcmVhZG9ubHkgbW9kZWxJZGVudGl0eSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlTW9kZWxJZGVudGl0eT47XG5cbiAgc2V0SWQ6IChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4+KSA9PiBTdWJzY3JpcHRpb247XG4gIHNldEtleTogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxGaXJlc3RvcmVNb2RlbEtleT4+KSA9PiBTdWJzY3JpcHRpb247XG4gIHNldFJlZjogKG9ic2VydmFibGVPclZhbHVlOiBPYnNlcnZhYmxlT3JWYWx1ZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUga2V5L2lkL3JlZiBhbmQgY3VycmVudCBkb2N1bWVudCBmcm9tIHRoZSBzdG9yZS5cbiAgICovXG4gIGNsZWFyUmVmczogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgRmlyZXN0b3JlQ29sbGVjdGlvbiB0byByZXRyaWV2ZSBkb2N1bWVudHMgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb246ICgoKSA9PiB2b2lkKSB8ICgob2JzZXJ2YWJsZU9yVmFsdWU6IE9ic2VydmFibGVPclZhbHVlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+PikgPT4gU3Vic2NyaXB0aW9uKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgRmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UgdG8gcmV0cmlldmUgZG9jdW1lbnRzIGZyb20uXG4gICAqL1xuICByZWFkb25seSBzZXRGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTogKCgpID0+IHZvaWQpIHwgKChvYnNlcnZhYmxlT3JWYWx1ZTogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+PikgPT4gU3Vic2NyaXB0aW9uKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDb250ZXh0U3RhdGU8VCwgRCBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50PFQ+ID0gRmlyZXN0b3JlRG9jdW1lbnQ8VD4+IHtcbiAgcmVhZG9ubHkgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U/OiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj47XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb24/OiBNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uPFQsIEQ+PjtcbiAgcmVhZG9ubHkgaWQ/OiBNYXliZTxGaXJlc3RvcmVNb2RlbElkPjtcbiAgcmVhZG9ubHkga2V5PzogTWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+O1xuICByZWFkb25seSByZWY/OiBNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj47XG59XG5cbi8qKlxuICogVXNlZCBmb3Igc3RvcmluZyB0aGUgc3RhdGUgb2YgYSBQZXJzb24gYW5kIHJlbGF0ZWQgZW1haWwgdGhyZWFkcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFic3RyYWN0RGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlPFQsIEQgZXh0ZW5kcyBGaXJlc3RvcmVEb2N1bWVudDxUPiA9IEZpcmVzdG9yZURvY3VtZW50PFQ+LCBDIGV4dGVuZHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+ID0gRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ29udGV4dFN0YXRlPFQsIEQ+PiBleHRlbmRzIExvY2tTZXRDb21wb25lbnRTdG9yZTxDPiBpbXBsZW1lbnRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxULCBEPiB7XG4gIC8vIE1BUks6IEVmZmVjdHNcblxuICAvLyBNQVJLOiBBY2Nlc3NvcnNcbiAgcmVhZG9ubHkgY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJDogT2JzZXJ2YWJsZTxNYXliZTxGaXJlc3RvcmVDb2xsZWN0aW9uTGlrZTxULCBEPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguZmlyZXN0b3JlQ29sbGVjdGlvbiA/PyB4LmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudEZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmZpcmVzdG9yZUNvbGxlY3Rpb24pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBmaXJlc3RvcmVDb2xsZWN0aW9uTGlrZSQ6IE9ic2VydmFibGU8RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U8VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG4gIHJlYWRvbmx5IGZpcmVzdG9yZUNvbGxlY3Rpb24kOiBPYnNlcnZhYmxlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+ID0gdGhpcy5jdXJyZW50RmlyZXN0b3JlQ29sbGVjdGlvbiQucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBjdXJyZW50SW5wdXRJZCQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxJZD4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguaWQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpbnB1dElkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPiA9IHRoaXMuY3VycmVudElucHV0SWQkLnBpcGUoZmlsdGVyTWF5YmUoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dEtleSQ6IE9ic2VydmFibGU8TWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmtleSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0S2V5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbEtleT4gPSB0aGlzLmN1cnJlbnRJbnB1dEtleSQucGlwZShmaWx0ZXJNYXliZSgpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudElucHV0UmVmJDogT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgucmVmKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRSZWYkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+PiA9IHRoaXMuY3VycmVudElucHV0UmVmJC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBjdXJyZW50RG9jdW1lbnQkOiBPYnNlcnZhYmxlPE1heWJlPEQ+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudElucHV0SWQkLCB0aGlzLmN1cnJlbnRJbnB1dEtleSQsIHRoaXMuY3VycmVudElucHV0UmVmJF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbaWQsIGtleSwgcmVmXSkgPT4ge1xuICAgICAgbGV0IGRvY3VtZW50OiBPYnNlcnZhYmxlPE1heWJlPEQ+PjtcblxuICAgICAgaWYgKHJlZikge1xuICAgICAgICBkb2N1bWVudCA9IHRoaXMuZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2UkLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnQocmVmKSkpO1xuICAgICAgfSBlbHNlIGlmIChrZXkpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlJC5waXBlKG1hcCgoeCkgPT4geC5kb2N1bWVudEFjY2Vzc29yKCkubG9hZERvY3VtZW50Rm9yS2V5KGtleSkpKTtcbiAgICAgIH0gZWxzZSBpZiAoaWQpIHtcbiAgICAgICAgZG9jdW1lbnQgPSB0aGlzLmZpcmVzdG9yZUNvbGxlY3Rpb24kLnBpcGUobWFwKCh4KSA9PiB4LmRvY3VtZW50QWNjZXNzb3IoKS5sb2FkRG9jdW1lbnRGb3JQYXRoKGlkKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9jdW1lbnQgPSBvZih1bmRlZmluZWQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgfSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvY3VtZW50JDogT2JzZXJ2YWJsZTxEPiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKGZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBkb2N1bWVudExvYWRpbmdTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPEQ+PiA9IHRoaXMuY3VycmVudERvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKHggPyBzdWNjZXNzUmVzdWx0KHgpIDogYmVnaW5Mb2FkaW5nPEQ+KCkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlkJDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbElkPiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlkKSxcbiAgICBzaGFyZVJlcGxheSgpXG4gICk7XG5cbiAgcmVhZG9ubHkga2V5JDogT2JzZXJ2YWJsZTxGaXJlc3RvcmVNb2RlbEtleT4gPSB0aGlzLmRvY3VtZW50JC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5rZXkpLFxuICAgIHNoYXJlUmVwbGF5KClcbiAgKTtcblxuICByZWFkb25seSByZWYkOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPFQ+PiA9IHRoaXMuZG9jdW1lbnQkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmRvY3VtZW50UmVmKSxcbiAgICBzaGFyZVJlcGxheSgpXG4gICk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3QkOiBPYnNlcnZhYmxlPERvY3VtZW50U25hcHNob3Q8VD4+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguYWNjZXNzb3Iuc3RyZWFtKCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc25hcHNob3RMb2FkaW5nU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxEb2N1bWVudFNuYXBzaG90PFQ+Pj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gbG9hZGluZ1N0YXRlRnJvbU9icyh0aGlzLnNuYXBzaG90JCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudERhdGEkOiBPYnNlcnZhYmxlPE1heWJlPERvY3VtZW50RGF0YVdpdGhJZDxUPj4+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHguYWNjZXNzb3Iuc3RyZWFtKCkucGlwZShtYXAoKHkpID0+IGRvY3VtZW50RGF0YVdpdGhJZCh5KSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGEkOiBPYnNlcnZhYmxlPERvY3VtZW50RGF0YVdpdGhJZDxUPj4gPSB0aGlzLmN1cnJlbnREb2N1bWVudCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jdXJyZW50RGF0YSQucGlwZShmaWx0ZXJNYXliZSgpKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRhTG9hZGluZ1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8RG9jdW1lbnREYXRhV2l0aElkPFQ+Pj4gPSB0aGlzLnNuYXBzaG90TG9hZGluZ1N0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogTG9hZGluZ1N0YXRlPERvY3VtZW50RGF0YVdpdGhJZDxUPj47XG5cbiAgICAgIGlmICh4LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBkb2N1bWVudERhdGFXaXRoSWQoeC52YWx1ZSk7XG5cbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICByZXN1bHQgPSBzdWNjZXNzUmVzdWx0KGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IGVycm9yUmVzdWx0KG1vZGVsRG9lc05vdEV4aXN0RXJyb3IoKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAuLi54LFxuICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGV4aXN0cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmN1cnJlbnREYXRhJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gaXNNYXliZVNvKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRvZXNOb3RFeGlzdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmV4aXN0cyQucGlwZShcbiAgICBtYXAoKHgpID0+ICF4KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG1vZGVsSWRlbnRpdHkkOiBPYnNlcnZhYmxlPEZpcmVzdG9yZU1vZGVsSWRlbnRpdHk+ID0gdGhpcy5kb2N1bWVudCQucGlwZShcbiAgICBtYXAoKHgpID0+IHgubW9kZWxJZGVudGl0eSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICAvLyBNQVJLOiBTdGF0ZSBDaGFuZ2VzXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpZCBvZiB0aGUgZG9jdW1lbnQgdG8gbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldElkID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgaWQ6IE1heWJlPEZpcmVzdG9yZU1vZGVsSWQ+KSA9PiAoaWQgPyB7IC4uLnN0YXRlLCBpZCwgcmVmOiB1bmRlZmluZWQgfSA6IHsgLi4uc3RhdGUsIGlkIH0pKSBhcyAob2JzZXJ2YWJsZU9yVmFsdWU6IE1heWJlPHN0cmluZz4gfCBPYnNlcnZhYmxlPE1heWJlPHN0cmluZz4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGtleSBvZiB0aGUgZG9jdW1lbnQgdG8gbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldEtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogTWF5YmU8RmlyZXN0b3JlTW9kZWxLZXk+KSA9PiAoa2V5ID8geyAuLi5zdGF0ZSwga2V5LCByZWY6IHVuZGVmaW5lZCB9IDogeyAuLi5zdGF0ZSwga2V5IH0pKSBhcyAob2JzZXJ2YWJsZU9yVmFsdWU6IE1heWJlPHN0cmluZz4gfCBPYnNlcnZhYmxlPE1heWJlPHN0cmluZz4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlZiBvZiB0aGUgZG9jdW1lbnQgdG8gbG9hZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldFJlZiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHJlZjogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+KSA9PiAocmVmID8geyAuLi5zdGF0ZSwgaWQ6IHVuZGVmaW5lZCwgcmVmIH0gOiB7IC4uLnN0YXRlLCByZWYgfSkpIGFzIChvYnNlcnZhYmxlT3JWYWx1ZTogTWF5YmU8RG9jdW1lbnRSZWZlcmVuY2U8VD4+IHwgT2JzZXJ2YWJsZTxNYXliZTxEb2N1bWVudFJlZmVyZW5jZTxUPj4+KSA9PiBTdWJzY3JpcHRpb247XG5cbiAgcmVhZG9ubHkgY2xlYXJSZWZzID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gKHsgLi4uc3RhdGUsIGlkOiB1bmRlZmluZWQsIGtleTogdW5kZWZpbmVkLCByZWY6IHVuZGVmaW5lZCB9KSk7XG5cbiAgcmVhZG9ubHkgc2V0RmlyZXN0b3JlQ29sbGVjdGlvbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb246IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb248VCwgRD4+KSA9PiAoeyAuLi5zdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbiB9KSk7XG4gIHJlYWRvbmx5IHNldEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZmlyZXN0b3JlQ29sbGVjdGlvbkxpa2U6IE1heWJlPEZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlPFQsIEQ+PikgPT4gKHsgLi4uc3RhdGUsIGZpcmVzdG9yZUNvbGxlY3Rpb25MaWtlIH0pKTtcbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { urlWithoutParameters, cachedGetter, addToSet, removeFromSet, filterMaybeValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, forEachKeyValue, readableError, isMaybeSo } from '@dereekb/util';
1
+ import { urlWithoutParameters, cachedGetter, addToSet, removeFromSet, filterMaybeValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, forEachKeyValue, readableError, isMaybeSo, firstValue } from '@dereekb/util';
2
2
  import * as i0 from '@angular/core';
3
3
  import { InjectionToken, Injectable, Inject, Optional, Component, Input, Directive, EventEmitter, Output, NgModule, Injector, forwardRef, Host } from '@angular/core';
4
4
  import { getToken, initializeAppCheck, ReCaptchaV3Provider } from 'firebase/app-check';
@@ -15,7 +15,7 @@ import * as i3 from '@dereekb/dbx-web';
15
15
  import { DbxRouterAnchorModule, DbxReadableErrorModule, DbxActionModule, DbxButtonModule } from '@dereekb/dbx-web';
16
16
  import * as i3$1 from '@dereekb/dbx-core';
17
17
  import { loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, authUserIdentifier, DbxInjectionContext, AbstractForwardDbxInjectionContextDirective, DBX_INJECTION_COMPONENT_DATA, DbxInjectionComponentModule, DbxAuthService, AbstractSubscriptionDirective, AbstractIfDirective, LockSetComponentStore } from '@dereekb/dbx-core';
18
- import { filterMaybe, isNot, SubscriptionObject, cleanupDestroyable, accumulatorFlattenPageListLoadingState, useFirst, successResult, beginLoading, loadingStateFromObs, errorResult, cleanup } from '@dereekb/rxjs';
18
+ import { filterMaybe, isNot, SubscriptionObject, cleanupDestroyable, accumulatorFlattenPageListLoadingState, useFirst, successResult, beginLoading, loadingStateFromObs, errorResult, lazyFrom, cleanup } from '@dereekb/rxjs';
19
19
  import * as i1$1 from '@angular/fire/auth';
20
20
  import { authState, GoogleAuthProvider, FacebookAuthProvider, TwitterAuthProvider, GithubAuthProvider, signInWithPopup, createUserWithEmailAndPassword, signInWithEmailAndPassword, signInAnonymously, provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';
21
21
  import { sendPasswordResetEmail } from 'firebase/auth';
@@ -2329,27 +2329,36 @@ class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
2329
2329
  super(...arguments);
2330
2330
  // MARK: Effects
2331
2331
  // MARK: Accessors
2332
+ this.currentFirestoreCollectionLike$ = this.state$.pipe(map((x) => { var _a; return (_a = x.firestoreCollection) !== null && _a !== void 0 ? _a : x.firestoreCollectionLike; }), distinctUntilChanged(), shareReplay(1));
2332
2333
  this.currentFirestoreCollection$ = this.state$.pipe(map((x) => x.firestoreCollection), distinctUntilChanged(), shareReplay(1));
2334
+ this.firestoreCollectionLike$ = this.currentFirestoreCollectionLike$.pipe(filterMaybe());
2333
2335
  this.firestoreCollection$ = this.currentFirestoreCollection$.pipe(filterMaybe());
2334
2336
  this.currentInputId$ = this.state$.pipe(map((x) => x.id), distinctUntilChanged(), shareReplay(1));
2335
2337
  this.inputId$ = this.currentInputId$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
2338
+ this.currentInputKey$ = this.state$.pipe(map((x) => x.key), distinctUntilChanged(), shareReplay(1));
2339
+ this.inputKey$ = this.currentInputKey$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
2336
2340
  this.currentInputRef$ = this.state$.pipe(map((x) => x.ref), distinctUntilChanged(), shareReplay(1));
2337
2341
  this.inputRef$ = this.currentInputRef$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
2338
- this.currentDocument$ = combineLatest([this.currentFirestoreCollection$, this.currentInputId$, this.currentInputRef$]).pipe(map(([collection, id, ref]) => {
2342
+ this.currentDocument$ = combineLatest([this.currentInputId$, this.currentInputKey$, this.currentInputRef$]).pipe(switchMap(([id, key, ref]) => {
2339
2343
  let document;
2340
- if (collection) {
2341
- if (ref) {
2342
- document = collection.documentAccessor().loadDocument(ref);
2343
- }
2344
- else if (id) {
2345
- document = collection.documentAccessor().loadDocumentForPath(id);
2346
- }
2344
+ if (ref) {
2345
+ document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocument(ref)));
2346
+ }
2347
+ else if (key) {
2348
+ document = this.firestoreCollectionLike$.pipe(map((x) => x.documentAccessor().loadDocumentForKey(key)));
2349
+ }
2350
+ else if (id) {
2351
+ document = this.firestoreCollection$.pipe(map((x) => x.documentAccessor().loadDocumentForPath(id)));
2352
+ }
2353
+ else {
2354
+ document = of(undefined);
2347
2355
  }
2348
2356
  return document;
2349
2357
  }), distinctUntilChanged(), shareReplay(1));
2350
2358
  this.document$ = this.currentDocument$.pipe(filterMaybe(), distinctUntilChanged(), shareReplay(1));
2351
2359
  this.documentLoadingState$ = this.currentDocument$.pipe(map((x) => (x ? successResult(x) : beginLoading())), shareReplay(1));
2352
2360
  this.id$ = this.document$.pipe(map((x) => x.id), shareReplay());
2361
+ this.key$ = this.document$.pipe(map((x) => x.key), shareReplay());
2353
2362
  this.ref$ = this.document$.pipe(map((x) => x.documentRef), shareReplay());
2354
2363
  this.snapshot$ = this.document$.pipe(switchMap((x) => x.accessor.stream()), shareReplay(1));
2355
2364
  this.snapshotLoadingState$ = this.currentDocument$.pipe(switchMap(() => loadingStateFromObs(this.snapshot$)), shareReplay(1));
@@ -2373,16 +2382,23 @@ class AbstractDbxFirebaseDocumentStore extends LockSetComponentStore {
2373
2382
  }), shareReplay(1));
2374
2383
  this.exists$ = this.currentData$.pipe(map((x) => isMaybeSo(x)), shareReplay(1));
2375
2384
  this.doesNotExist$ = this.exists$.pipe(map((x) => !x), shareReplay(1));
2385
+ this.modelIdentity$ = this.document$.pipe(map((x) => x.modelIdentity), shareReplay(1));
2376
2386
  // MARK: State Changes
2377
2387
  /**
2378
2388
  * Sets the id of the document to load.
2379
2389
  */
2380
2390
  this.setId = this.updater((state, id) => (id ? Object.assign(Object.assign({}, state), { id, ref: undefined }) : Object.assign(Object.assign({}, state), { id })));
2391
+ /**
2392
+ * Sets the key of the document to load.
2393
+ */
2394
+ this.setKey = this.updater((state, key) => (key ? Object.assign(Object.assign({}, state), { key, ref: undefined }) : Object.assign(Object.assign({}, state), { key })));
2381
2395
  /**
2382
2396
  * Sets the ref of the document to load.
2383
2397
  */
2384
2398
  this.setRef = this.updater((state, ref) => (ref ? Object.assign(Object.assign({}, state), { id: undefined, ref }) : Object.assign(Object.assign({}, state), { ref })));
2399
+ this.clearRefs = this.updater((state) => (Object.assign(Object.assign({}, state), { id: undefined, key: undefined, ref: undefined })));
2385
2400
  this.setFirestoreCollection = this.updater((state, firestoreCollection) => (Object.assign(Object.assign({}, state), { firestoreCollection })));
2401
+ this.setFirestoreCollectionLike = this.updater((state, firestoreCollectionLike) => (Object.assign(Object.assign({}, state), { firestoreCollectionLike })));
2386
2402
  }
2387
2403
  }
2388
2404
  AbstractDbxFirebaseDocumentStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AbstractDbxFirebaseDocumentStore, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
@@ -2391,6 +2407,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
2391
2407
  type: Injectable
2392
2408
  }] });
2393
2409
 
2410
+ /**
2411
+ * Creates a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseCreateFunction result and sets the key of the created value.
2412
+ *
2413
+ * @param store
2414
+ * @param fn
2415
+ * @returns
2416
+ */
2417
+ function firebaseDocumentStoreCreateFunction(store, fn) {
2418
+ return (params) => loadingStateFromObs(lazyFrom(() => fn(params).then((result) => {
2419
+ const modelKeys = result.modelKeys;
2420
+ const firstKey = firstValue(modelKeys);
2421
+ if (firstKey) {
2422
+ store.setKey(firstKey);
2423
+ }
2424
+ return result;
2425
+ })));
2426
+ }
2427
+ function firebaseDocumentStoreUpdateFunction(store, fn) {
2428
+ return (params) => loadingStateFromObs(store.key$.pipe(first(), switchMap((key) => fn(Object.assign(Object.assign({}, params), { key // inject key into the parameters.
2429
+ })))));
2430
+ }
2431
+ /**
2432
+ * Deletes a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseDeleteFunction result and sets the key of the created value.
2433
+ *
2434
+ * @param store
2435
+ * @param fn
2436
+ * @returns
2437
+ */
2438
+ function firebaseDocumentStoreDeleteFunction(store, fn) {
2439
+ return (params) => loadingStateFromObs(store.key$.pipe(first(), switchMap((key) => fn(Object.assign(Object.assign({}, params), { key // inject key into the parameters.
2440
+ })).then((result) => {
2441
+ store.clearRefs();
2442
+ return result;
2443
+ }))));
2444
+ }
2445
+
2394
2446
  function setParentStoreEffect(store) {
2395
2447
  return store.effect((input) => {
2396
2448
  return input.pipe(map((parentStore) => {
@@ -2591,5 +2643,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
2591
2643
  * Generated bundle index. Do not edit.
2592
2644
  */
2593
2645
 
2594
- export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_OPTIONS_TOKEN, DBX_FIREBASE_ROUTER_SYNC_DEFAULT_ID_PARAM_KEY, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthContextInfo, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultAppCheckProviderModule, DbxFirebaseDefaultAuthProviderModule, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDefaultFirestoreProviderModule, DbxFirebaseDefaultFunctionsProviderModule, DbxFirebaseDefaultStorageProviderModule, DbxFirebaseDocumentAuthIdDirective, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginModuleRootConfig, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModule, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirestoreContextService, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthService, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, defaultFirebaseAuthLoginProvidersFactory, enableAppCheckDebugTokenGeneration, firebaseAuthErrorToReadableError, firebaseAuthTokenFromUser, modelDoesNotExistError, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDocumentStoreDirective, readValueFromIdToken, setParentStoreEffect };
2646
+ export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_OPTIONS_TOKEN, DBX_FIREBASE_ROUTER_SYNC_DEFAULT_ID_PARAM_KEY, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthContextInfo, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultAppCheckProviderModule, DbxFirebaseDefaultAuthProviderModule, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDefaultFirestoreProviderModule, DbxFirebaseDefaultFunctionsProviderModule, DbxFirebaseDefaultStorageProviderModule, DbxFirebaseDocumentAuthIdDirective, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginModuleRootConfig, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModule, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirestoreContextService, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthService, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, defaultFirebaseAuthLoginProvidersFactory, enableAppCheckDebugTokenGeneration, firebaseAuthErrorToReadableError, firebaseAuthTokenFromUser, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreUpdateFunction, modelDoesNotExistError, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDocumentStoreDirective, readValueFromIdToken, setParentStoreEffect };
2595
2647
  //# sourceMappingURL=dereekb-dbx-firebase.mjs.map