apollo-angular
Version:
Use your GraphQL data in your Angular app, with the Apollo Client
53 lines • 7.92 kB
JavaScript
import { observeOn, startWith, map } from 'rxjs/operators';
import { Observable, queueScheduler, observable } from 'rxjs';
export function fromPromise(promiseFn) {
return new Observable((subscriber) => {
promiseFn().then((result) => {
if (!subscriber.closed) {
subscriber.next(result);
subscriber.complete();
}
}, (error) => {
if (!subscriber.closed) {
subscriber.error(error);
}
});
return () => subscriber.unsubscribe();
});
}
export function useMutationLoading(source, enabled) {
if (!enabled) {
return source.pipe(map((result) => ({
...result,
loading: false,
})));
}
return source.pipe(startWith({
loading: true,
}), map((result) => ({
...result,
loading: !!result.loading,
})));
}
export class ZoneScheduler {
constructor(zone) {
this.zone = zone;
this.now = Date.now ? Date.now : () => +new Date();
}
schedule(work, delay = 0, state) {
return this.zone.run(() => queueScheduler.schedule(work, delay, state));
}
}
export function fixObservable(obs) {
obs[observable] = () => obs;
return obs;
}
export function wrapWithZone(obs, ngZone) {
return obs.pipe(observeOn(new ZoneScheduler(ngZone)));
}
export function pickFlag(flags, flag, defaultValue) {
return flags && typeof flags[flag] !== 'undefined'
? flags[flag]
: defaultValue;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFRekQsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRzVELE1BQU0sVUFBVSxXQUFXLENBQUksU0FBMkI7SUFDeEQsT0FBTyxJQUFJLFVBQVUsQ0FBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQ3RDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDZCxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RCLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN2QjtRQUNILENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RCLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekI7UUFDSCxDQUFDLENBQ0YsQ0FBQztRQUVGLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsTUFBa0MsRUFDbEMsT0FBZ0I7SUFFaEIsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsR0FBRyxDQUFvQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsRCxHQUFHLE1BQU07WUFDVCxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUMsQ0FBQyxDQUNKLENBQUM7S0FDSDtJQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FDaEIsU0FBUyxDQUFvQjtRQUMzQixPQUFPLEVBQUUsSUFBSTtLQUNkLENBQUMsRUFDRixHQUFHLENBQXVDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELEdBQUcsTUFBTTtRQUNULE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU87S0FDMUIsQ0FBQyxDQUFDLENBQ0osQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFvQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQUV6QixRQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0lBRmxCLENBQUM7SUFJN0IsUUFBUSxDQUNiLElBQW1ELEVBQ25ELFFBQWdCLENBQUMsRUFDakIsS0FBUztRQUVULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQ3hCLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FDNUIsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFTRCxNQUFNLFVBQVUsYUFBYSxDQUMzQixHQUF3QztJQUV2QyxHQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3JDLE9BQU8sR0FBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixHQUFrQixFQUNsQixNQUFjO0lBRWQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQ3RCLEtBQXlCLEVBQ3pCLElBQU8sRUFDUCxZQUF1QjtJQUV2QixPQUFPLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXO1FBQ2hELENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2IsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtvYnNlcnZlT24sIHN0YXJ0V2l0aCwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgdHlwZSB7XG4gIE9ic2VydmFibGVRdWVyeSxcbiAgQXBvbGxvUXVlcnlSZXN1bHQsXG4gIEZldGNoUmVzdWx0LFxuICBPYnNlcnZhYmxlIGFzIEFPYnNlcnZhYmxlLFxufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB0eXBlIHtTdWJzY3JpcHRpb24sIFNjaGVkdWxlckxpa2UsIFNjaGVkdWxlckFjdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge09ic2VydmFibGUsIHF1ZXVlU2NoZWR1bGVyLCBvYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHtNdXRhdGlvblJlc3VsdH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUHJvbWlzZTxUPihwcm9taXNlRm46ICgpID0+IFByb21pc2U8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChzdWJzY3JpYmVyKSA9PiB7XG4gICAgcHJvbWlzZUZuKCkudGhlbihcbiAgICAgIChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKCFzdWJzY3JpYmVyLmNsb3NlZCkge1xuICAgICAgICAgIHN1YnNjcmliZXIubmV4dChyZXN1bHQpO1xuICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBpZiAoIXN1YnNjcmliZXIuY2xvc2VkKSB7XG4gICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiAoKSA9PiBzdWJzY3JpYmVyLnVuc3Vic2NyaWJlKCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlTXV0YXRpb25Mb2FkaW5nPFQ+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8RmV0Y2hSZXN1bHQ8VD4+LFxuICBlbmFibGVkOiBib29sZWFuLFxuKSB7XG4gIGlmICghZW5hYmxlZCkge1xuICAgIHJldHVybiBzb3VyY2UucGlwZShcbiAgICAgIG1hcDxGZXRjaFJlc3VsdDxUPiwgTXV0YXRpb25SZXN1bHQ8VD4+KChyZXN1bHQpID0+ICh7XG4gICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICB9KSksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBzb3VyY2UucGlwZShcbiAgICBzdGFydFdpdGg8TXV0YXRpb25SZXN1bHQ8VD4+KHtcbiAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgfSksXG4gICAgbWFwPE11dGF0aW9uUmVzdWx0PFQ+LCBNdXRhdGlvblJlc3VsdDxUPj4oKHJlc3VsdCkgPT4gKHtcbiAgICAgIC4uLnJlc3VsdCxcbiAgICAgIGxvYWRpbmc6ICEhcmVzdWx0LmxvYWRpbmcsXG4gICAgfSkpLFxuICApO1xufVxuXG5leHBvcnQgY2xhc3MgWm9uZVNjaGVkdWxlciBpbXBsZW1lbnRzIFNjaGVkdWxlckxpa2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSkge31cblxuICBwdWJsaWMgbm93ID0gRGF0ZS5ub3cgPyBEYXRlLm5vdyA6ICgpID0+ICtuZXcgRGF0ZSgpO1xuXG4gIHB1YmxpYyBzY2hlZHVsZTxUPihcbiAgICB3b3JrOiAodGhpczogU2NoZWR1bGVyQWN0aW9uPFQ+LCBzdGF0ZT86IFQpID0+IHZvaWQsXG4gICAgZGVsYXk6IG51bWJlciA9IDAsXG4gICAgc3RhdGU/OiBULFxuICApOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICBxdWV1ZVNjaGVkdWxlci5zY2hlZHVsZSh3b3JrLCBkZWxheSwgc3RhdGUpLFxuICAgICkgYXMgU3Vic2NyaXB0aW9uO1xuICB9XG59XG5cbi8vIFhYWDogQXBvbGxvJ3MgUXVlcnlPYnNlcnZhYmxlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggUnhKU1xuLy8gVE9ETzogcmVtb3ZlIGl0IGluIG9uZSBvZiBmdXR1cmUgcmVsZWFzZXNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9SZWFjdGl2ZVgvcnhqcy9ibG9iLzlmYjBjZTllMDljODY1OTIwY2YzNzkxNWNjNjc1ZTNiM2E3NTA1MGIvc3JjL2ludGVybmFsL3V0aWwvc3Vic2NyaWJlVG8udHMjTDMyXG5leHBvcnQgZnVuY3Rpb24gZml4T2JzZXJ2YWJsZTxUPihcbiAgb2JzOiBPYnNlcnZhYmxlUXVlcnk8VD4sXG4pOiBPYnNlcnZhYmxlPEFwb2xsb1F1ZXJ5UmVzdWx0PFQ+PjtcbmV4cG9ydCBmdW5jdGlvbiBmaXhPYnNlcnZhYmxlPFQ+KG9iczogQU9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+O1xuZXhwb3J0IGZ1bmN0aW9uIGZpeE9ic2VydmFibGU8VD4oXG4gIG9iczogQU9ic2VydmFibGU8VD4gfCBPYnNlcnZhYmxlUXVlcnk8VD4sXG4pOiBPYnNlcnZhYmxlPEFwb2xsb1F1ZXJ5UmVzdWx0PFQ+PiB8IE9ic2VydmFibGU8VD4ge1xuICAob2JzIGFzIGFueSlbb2JzZXJ2YWJsZV0gPSAoKSA9PiBvYnM7XG4gIHJldHVybiBvYnMgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcFdpdGhab25lPFQ+KFxuICBvYnM6IE9ic2VydmFibGU8VD4sXG4gIG5nWm9uZTogTmdab25lLFxuKTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBvYnMucGlwZShvYnNlcnZlT24obmV3IFpvbmVTY2hlZHVsZXIobmdab25lKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGlja0ZsYWc8VEZsYWdzLCBLIGV4dGVuZHMga2V5b2YgVEZsYWdzPihcbiAgZmxhZ3M6IFRGbGFncyB8IHVuZGVmaW5lZCxcbiAgZmxhZzogSyxcbiAgZGVmYXVsdFZhbHVlOiBURmxhZ3NbS10sXG4pOiBURmxhZ3NbS10ge1xuICByZXR1cm4gZmxhZ3MgJiYgdHlwZW9mIGZsYWdzW2ZsYWddICE9PSAndW5kZWZpbmVkJ1xuICAgID8gZmxhZ3NbZmxhZ11cbiAgICA6IGRlZmF1bHRWYWx1ZTtcbn1cbiJdfQ==