@loona/angular
Version:
App State Management done with GraphQL (angular integration)
33 lines • 2.35 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { Observable, from } from 'rxjs';
/**
* @template T
* @param {?} val
* @return {?}
*/
export function isObservable(val) {
return val instanceof Observable;
}
/**
* @param {?} resolver
* @return {?}
*/
export function handleObservable(resolver) {
return (...args) => {
/** @type {?} */
let result;
try {
result = resolver(...args);
}
catch (e) {
return Promise.reject(e);
}
return result instanceof Promise || isObservable(result)
? from(result).toPromise()
: Promise.resolve(result);
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbG9vbmEvYW5ndWxhci8iLCJzb3VyY2VzIjpbInV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBRXRDLE1BQU0sVUFBVSxZQUFZLENBQVUsR0FBUTtJQUM1QyxPQUFPLEdBQUcsWUFBWSxVQUFVLENBQUM7QUFDbkMsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBYTtJQUM1QyxPQUFPLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRTs7WUFDcEIsTUFBVztRQUVmLElBQUk7WUFDRixNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDNUI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQjtRQUVELE9BQU8sTUFBTSxZQUFZLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3RELENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFO1lBQzFCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGUsIGZyb219IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNPYnNlcnZhYmxlPFQgPSBhbnk+KHZhbDogYW55KTogdmFsIGlzIE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgT2JzZXJ2YWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZU9ic2VydmFibGUocmVzb2x2ZXI6IGFueSkge1xuICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogYW55O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IHJlc29sdmVyKC4uLmFyZ3MpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSB8fCBpc09ic2VydmFibGUocmVzdWx0KVxuICAgICAgPyBmcm9tKHJlc3VsdCkudG9Qcm9taXNlKClcbiAgICAgIDogUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4gIH07XG59XG4iXX0=