@angular/fire
Version:
The official library for Firebase and Angular
98 lines • 7.08 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { asyncScheduler, Observable } from 'rxjs';
import { map, share } from 'rxjs/operators';
/**
* @record
* @template T
*/
function SnapshotPrevKey() { }
if (false) {
/** @type {?} */
SnapshotPrevKey.prototype.snapshot;
/** @type {?} */
SnapshotPrevKey.prototype.prevKey;
}
/**
* Create an observable from a Database Reference or Database Query.
* @template T
* @param {?} ref Database Reference
* @param {?} event Listen event type ('value', 'added', 'changed', 'removed', 'moved')
* @param {?=} listenType 'on' or 'once'
* @param {?=} scheduler - Rxjs scheduler
* @return {?}
*/
export function fromRef(ref, event, listenType = 'on', scheduler = asyncScheduler) {
return new Observable((/**
* @param {?} subscriber
* @return {?}
*/
subscriber => {
/** @type {?} */
let fn = null;
fn = ref[listenType](event, (/**
* @param {?} snapshot
* @param {?} prevKey
* @return {?}
*/
(snapshot, prevKey) => {
scheduler.schedule((/**
* @return {?}
*/
() => {
subscriber.next({ snapshot, prevKey });
}));
if (listenType === 'once') {
scheduler.schedule((/**
* @return {?}
*/
() => subscriber.complete()));
}
}), (/**
* @param {?} err
* @return {?}
*/
err => {
scheduler.schedule((/**
* @return {?}
*/
() => subscriber.error(err)));
}));
if (listenType === 'on') {
return {
/**
* @return {?}
*/
unsubscribe() {
if (fn != null) {
ref.off(event, fn);
}
}
};
}
else {
return {
/**
* @return {?}
*/
unsubscribe() {
}
};
}
})).pipe(map((/**
* @param {?} payload
* @return {?}
*/
payload => {
const { snapshot, prevKey } = payload;
/** @type {?} */
let key = null;
if (snapshot.exists()) {
key = snapshot.key;
}
return { type: event, payload: snapshot, prevKey, key };
})), share());
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbVJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9vYnNlcnZhYmxlL2Zyb21SZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFpQixNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUU1Qyw4QkFHQzs7O0lBRkMsbUNBQThCOztJQUM5QixrQ0FBbUM7Ozs7Ozs7Ozs7O0FBVXJDLE1BQU0sVUFBVSxPQUFPLENBQUksR0FBa0IsRUFDbEIsS0FBa0IsRUFDbEIsVUFBVSxHQUFHLElBQUksRUFDakIsWUFBMkIsY0FBYztJQUVsRSxPQUFPLElBQUksVUFBVTs7OztJQUFxQixVQUFVLENBQUMsRUFBRTs7WUFDakQsRUFBRSxHQUFlLElBQUk7UUFDekIsRUFBRSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLOzs7OztRQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2hELFNBQVMsQ0FBQyxRQUFROzs7WUFBQyxHQUFHLEVBQUU7Z0JBQ3RCLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN6QyxDQUFDLEVBQUMsQ0FBQztZQUNILElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRTtnQkFDekIsU0FBUyxDQUFDLFFBQVE7OztnQkFBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUMsQ0FBQzthQUNqRDtRQUNILENBQUM7Ozs7UUFBRSxHQUFHLENBQUMsRUFBRTtZQUNQLFNBQVMsQ0FBQyxRQUFROzs7WUFBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7UUFDbEQsQ0FBQyxFQUFDLENBQUM7UUFFSCxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUU7WUFDdkIsT0FBTzs7OztnQkFDTCxXQUFXO29CQUNULElBQUksRUFBRSxJQUFJLElBQUksRUFBRTt3QkFDZCxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztxQkFDcEI7Z0JBQ0gsQ0FBQzthQUNGLENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTzs7OztnQkFDTCxXQUFXO2dCQUNYLENBQUM7YUFDRixDQUFDO1NBQ0g7SUFDSCxDQUFDLEVBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRzs7OztJQUFDLE9BQU8sQ0FBQyxFQUFFO2NBQ04sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTzs7WUFDakMsR0FBRyxHQUFrQixJQUFJO1FBQzdCLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3JCLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO1NBQ3BCO1FBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDMUQsQ0FBQyxFQUFDLEVBQ0YsS0FBSyxFQUFFLENBQ1IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmd1bGFyRmlyZUFjdGlvbiwgRGF0YWJhc2VRdWVyeSwgRGF0YWJhc2VTbmFwc2hvdCwgTGlzdGVuRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGFzeW5jU2NoZWR1bGVyLCBPYnNlcnZhYmxlLCBTY2hlZHVsZXJMaWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbnRlcmZhY2UgU25hcHNob3RQcmV2S2V5PFQ+IHtcbiAgc25hcHNob3Q6IERhdGFiYXNlU25hcHNob3Q8VD47XG4gIHByZXZLZXk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIG9ic2VydmFibGUgZnJvbSBhIERhdGFiYXNlIFJlZmVyZW5jZSBvciBEYXRhYmFzZSBRdWVyeS5cbiAqIEBwYXJhbSByZWYgRGF0YWJhc2UgUmVmZXJlbmNlXG4gKiBAcGFyYW0gZXZlbnQgTGlzdGVuIGV2ZW50IHR5cGUgKCd2YWx1ZScsICdhZGRlZCcsICdjaGFuZ2VkJywgJ3JlbW92ZWQnLCAnbW92ZWQnKVxuICogQHBhcmFtIGxpc3RlblR5cGUgJ29uJyBvciAnb25jZSdcbiAqIEBwYXJhbSBzY2hlZHVsZXIgLSBSeGpzIHNjaGVkdWxlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbVJlZjxUPihyZWY6IERhdGFiYXNlUXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudDogTGlzdGVuRXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5UeXBlID0gJ29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlcjogU2NoZWR1bGVyTGlrZSA9IGFzeW5jU2NoZWR1bGVyXG4pOiBPYnNlcnZhYmxlPEFuZ3VsYXJGaXJlQWN0aW9uPERhdGFiYXNlU25hcHNob3Q8VD4+PiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxTbmFwc2hvdFByZXZLZXk8VD4+KHN1YnNjcmliZXIgPT4ge1xuICAgIGxldCBmbjogYW55IHwgbnVsbCA9IG51bGw7XG4gICAgZm4gPSByZWZbbGlzdGVuVHlwZV0oZXZlbnQsIChzbmFwc2hvdCwgcHJldktleSkgPT4ge1xuICAgICAgc2NoZWR1bGVyLnNjaGVkdWxlKCgpID0+IHtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KHsgc25hcHNob3QsIHByZXZLZXkgfSk7XG4gICAgICB9KTtcbiAgICAgIGlmIChsaXN0ZW5UeXBlID09PSAnb25jZScpIHtcbiAgICAgICAgc2NoZWR1bGVyLnNjaGVkdWxlKCgpID0+IHN1YnNjcmliZXIuY29tcGxldGUoKSk7XG4gICAgICB9XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHNjaGVkdWxlci5zY2hlZHVsZSgoKSA9PiBzdWJzY3JpYmVyLmVycm9yKGVycikpO1xuICAgIH0pO1xuXG4gICAgaWYgKGxpc3RlblR5cGUgPT09ICdvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHVuc3Vic2NyaWJlKCkge1xuICAgICAgICAgIGlmIChmbiAhPSBudWxsKSB7XG4gICAgICAgICAgICByZWYub2ZmKGV2ZW50LCBmbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1bnN1YnNjcmliZSgpIHtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH0pLnBpcGUoXG4gICAgbWFwKHBheWxvYWQgPT4ge1xuICAgICAgY29uc3QgeyBzbmFwc2hvdCwgcHJldktleSB9ID0gcGF5bG9hZDtcbiAgICAgIGxldCBrZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgICAgaWYgKHNuYXBzaG90LmV4aXN0cygpKSB7XG4gICAgICAgIGtleSA9IHNuYXBzaG90LmtleTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHR5cGU6IGV2ZW50LCBwYXlsb2FkOiBzbmFwc2hvdCwgcHJldktleSwga2V5IH07XG4gICAgfSksXG4gICAgc2hhcmUoKVxuICApO1xufVxuIl19