UNPKG

@apollo-orbit/angular

Version:

A fully-featured GraphQL client for Angular with modular state management.

54 lines 10.1 kB
/* eslint-disable max-len */ import { Injectable } from '@angular/core'; import { NetworkStatus } from '@apollo/client/core'; import { defer, of } from 'rxjs'; import { catchError, map, startWith } from 'rxjs/operators'; import { extendCache } from './cacheEx'; import { QueryObservable } from './queryObservable'; import { toMutationResult, toQueryResult, toSubscriptionResult } from './result'; import { fromZenObservable } from './utils'; import * as i0 from "@angular/core"; import * as i1 from "@apollo/client/core"; export class Apollo { /** * Instance of ApolloClient */ client; defaultOptions; _cache; constructor(client, defaultOptions) { this.client = client; this.defaultOptions = defaultOptions; this._cache = extendCache(client.cache); } query(options) { const { notifyOnLoading = false, throwError = true } = { ...this.defaultOptions?.query, ...options }; return defer(() => this.client.query(options)).pipe(map(result => toQueryResult(result)), (source => notifyOnLoading ? source.pipe(startWith({ loading: true, networkStatus: NetworkStatus.loading })) : source), (source => !throwError ? source.pipe(catchError((error) => of({ error, loading: false, networkStatus: NetworkStatus.error }))) : source)); } watchQuery(options) { const { notifyOnLoading, throwError } = { ...this.defaultOptions?.watchQuery, ...options }; return new QueryObservable(this.client.watchQuery(options), { notifyOnLoading, throwError }); } watchFragment(options) { return fromZenObservable(this.client.watchFragment(options)); } mutate(options) { return defer(() => this.client.mutate(options)).pipe(map(result => toMutationResult(result))); } subscribe(options) { return defer(() => fromZenObservable(this.client.subscribe(options))).pipe(map(result => toSubscriptionResult(result))); } get cache() { return this._cache; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: Apollo, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: Apollo }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: Apollo, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.ApolloClient }, { type: undefined }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBvbGxvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29yZS9zcmMvYXBvbGxvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBOEMsYUFBYSxFQUFtRyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pNLE9BQU8sRUFBYyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7O0FBRzVDLE1BQU0sT0FBTyxNQUFNO0lBQ2pCOztPQUVHO0lBQ2EsTUFBTSxDQUE0QjtJQUVqQyxjQUFjLENBQWtCO0lBQ2hDLE1BQU0sQ0FBNkI7SUFFcEQsWUFBbUIsTUFBaUMsRUFBRSxjQUErQjtRQUNuRixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBYyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLEtBQUssQ0FBMkMsT0FBMkI7UUFDaEYsTUFBTSxFQUFFLGVBQWUsR0FBRyxLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3JHLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN2RCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDcEMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGVBQWU7WUFDeEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFpQixFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2pHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFDWCxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVO1lBQ3BCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBaUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFTSxVQUFVLENBQTJDLE9BQWdDO1FBQzFGLE1BQU0sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDM0YsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBTyxPQUFPLENBQUMsRUFBRSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFTSxhQUFhLENBQTJDLE9BQW1DO1FBQ2hHLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sTUFBTSxDQUEyQyxPQUE4QjtRQUNwRixPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDeEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFTSxTQUFTLENBQTJDLE9BQWtDO1FBQzNGLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQzVDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7dUdBbkRVLE1BQU07MkdBQU4sTUFBTTs7MkZBQU4sTUFBTTtrQkFEbEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcG9sbG9DbGllbnQsIEFwb2xsb0Vycm9yLCBNdXRhdGlvbk9wdGlvbnMsIE5ldHdvcmtTdGF0dXMsIFN1YnNjcmlwdGlvbk9wdGlvbnMsIE9wZXJhdGlvblZhcmlhYmxlcyBhcyBWYXJpYWJsZXMsIFdhdGNoRnJhZ21lbnRPcHRpb25zLCBXYXRjaEZyYWdtZW50UmVzdWx0IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGRlZmVyLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQXBvbGxvQ2FjaGVFeCwgZXh0ZW5kQ2FjaGUgfSBmcm9tICcuL2NhY2hlRXgnO1xyXG5pbXBvcnQgeyBRdWVyeU9ic2VydmFibGUgfSBmcm9tICcuL3F1ZXJ5T2JzZXJ2YWJsZSc7XHJcbmltcG9ydCB7IHRvTXV0YXRpb25SZXN1bHQsIHRvUXVlcnlSZXN1bHQsIHRvU3Vic2NyaXB0aW9uUmVzdWx0IH0gZnJvbSAnLi9yZXN1bHQnO1xyXG5pbXBvcnQgdHlwZSB7IERlZmF1bHRPcHRpb25zLCBNdXRhdGlvblJlc3VsdCwgUXVlcnlPcHRpb25zLCBRdWVyeVJlc3VsdCwgU3Vic2NyaXB0aW9uUmVzdWx0LCBXYXRjaFF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBmcm9tWmVuT2JzZXJ2YWJsZSB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXBvbGxvPFRDYWNoZVNoYXBlID0gYW55PiB7XHJcbiAgLyoqXHJcbiAgICogSW5zdGFuY2Ugb2YgQXBvbGxvQ2xpZW50XHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGNsaWVudDogQXBvbGxvQ2xpZW50PFRDYWNoZVNoYXBlPjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0T3B0aW9ucz86IERlZmF1bHRPcHRpb25zO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhY2hlOiBBcG9sbG9DYWNoZUV4PFRDYWNoZVNoYXBlPjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNsaWVudDogQXBvbGxvQ2xpZW50PFRDYWNoZVNoYXBlPiwgZGVmYXVsdE9wdGlvbnM/OiBEZWZhdWx0T3B0aW9ucykge1xyXG4gICAgdGhpcy5jbGllbnQgPSBjbGllbnQ7XHJcbiAgICB0aGlzLmRlZmF1bHRPcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XHJcbiAgICB0aGlzLl9jYWNoZSA9IGV4dGVuZENhY2hlPFRDYWNoZVNoYXBlPihjbGllbnQuY2FjaGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHF1ZXJ5PFQgPSBhbnksIFYgZXh0ZW5kcyBWYXJpYWJsZXMgPSBWYXJpYWJsZXM+KG9wdGlvbnM6IFF1ZXJ5T3B0aW9uczxWLCBUPik6IE9ic2VydmFibGU8UXVlcnlSZXN1bHQ8VD4+IHtcclxuICAgIGNvbnN0IHsgbm90aWZ5T25Mb2FkaW5nID0gZmFsc2UsIHRocm93RXJyb3IgPSB0cnVlIH0gPSB7IC4uLnRoaXMuZGVmYXVsdE9wdGlvbnM/LnF1ZXJ5LCAuLi5vcHRpb25zIH07XHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5jbGllbnQucXVlcnk8VCwgVj4ob3B0aW9ucykpLnBpcGUoXHJcbiAgICAgIG1hcChyZXN1bHQgPT4gdG9RdWVyeVJlc3VsdChyZXN1bHQpKSxcclxuICAgICAgKHNvdXJjZSA9PiBub3RpZnlPbkxvYWRpbmdcclxuICAgICAgICA/IHNvdXJjZS5waXBlKHN0YXJ0V2l0aDxRdWVyeVJlc3VsdDxUPj4oeyBsb2FkaW5nOiB0cnVlLCBuZXR3b3JrU3RhdHVzOiBOZXR3b3JrU3RhdHVzLmxvYWRpbmcgfSkpXHJcbiAgICAgICAgOiBzb3VyY2UpLFxyXG4gICAgICAoc291cmNlID0+ICF0aHJvd0Vycm9yXHJcbiAgICAgICAgPyBzb3VyY2UucGlwZShjYXRjaEVycm9yKChlcnJvcjogQXBvbGxvRXJyb3IpID0+IG9mPFF1ZXJ5UmVzdWx0PFQ+Pih7IGVycm9yLCBsb2FkaW5nOiBmYWxzZSwgbmV0d29ya1N0YXR1czogTmV0d29ya1N0YXR1cy5lcnJvciB9KSkpXHJcbiAgICAgICAgOiBzb3VyY2UpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdhdGNoUXVlcnk8VCA9IGFueSwgViBleHRlbmRzIFZhcmlhYmxlcyA9IFZhcmlhYmxlcz4ob3B0aW9uczogV2F0Y2hRdWVyeU9wdGlvbnM8ViwgVD4pOiBRdWVyeU9ic2VydmFibGU8VCwgVj4ge1xyXG4gICAgY29uc3QgeyBub3RpZnlPbkxvYWRpbmcsIHRocm93RXJyb3IgfSA9IHsgLi4udGhpcy5kZWZhdWx0T3B0aW9ucz8ud2F0Y2hRdWVyeSwgLi4ub3B0aW9ucyB9O1xyXG4gICAgcmV0dXJuIG5ldyBRdWVyeU9ic2VydmFibGUodGhpcy5jbGllbnQud2F0Y2hRdWVyeTxULCBWPihvcHRpb25zKSwgeyBub3RpZnlPbkxvYWRpbmcsIHRocm93RXJyb3IgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd2F0Y2hGcmFnbWVudDxUID0gYW55LCBWIGV4dGVuZHMgVmFyaWFibGVzID0gVmFyaWFibGVzPihvcHRpb25zOiBXYXRjaEZyYWdtZW50T3B0aW9uczxULCBWPik6IE9ic2VydmFibGU8V2F0Y2hGcmFnbWVudFJlc3VsdDxUPj4ge1xyXG4gICAgcmV0dXJuIGZyb21aZW5PYnNlcnZhYmxlKHRoaXMuY2xpZW50LndhdGNoRnJhZ21lbnQob3B0aW9ucykpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG11dGF0ZTxUID0gYW55LCBWIGV4dGVuZHMgVmFyaWFibGVzID0gVmFyaWFibGVzPihvcHRpb25zOiBNdXRhdGlvbk9wdGlvbnM8VCwgVj4pOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PFQ+PiB7XHJcbiAgICByZXR1cm4gZGVmZXIoKCkgPT4gdGhpcy5jbGllbnQubXV0YXRlPFQsIFY+KG9wdGlvbnMpKS5waXBlKFxyXG4gICAgICBtYXAocmVzdWx0ID0+IHRvTXV0YXRpb25SZXN1bHQocmVzdWx0KSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3Vic2NyaWJlPFQgPSBhbnksIFYgZXh0ZW5kcyBWYXJpYWJsZXMgPSBWYXJpYWJsZXM+KG9wdGlvbnM6IFN1YnNjcmlwdGlvbk9wdGlvbnM8ViwgVD4pOiBPYnNlcnZhYmxlPFN1YnNjcmlwdGlvblJlc3VsdDxUPj4ge1xyXG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb21aZW5PYnNlcnZhYmxlKHRoaXMuY2xpZW50LnN1YnNjcmliZTxULCBWPihvcHRpb25zKSkpLnBpcGUoXHJcbiAgICAgIG1hcChyZXN1bHQgPT4gdG9TdWJzY3JpcHRpb25SZXN1bHQocmVzdWx0KSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhY2hlKCk6IEFwb2xsb0NhY2hlRXg8VENhY2hlU2hhcGU+IHtcclxuICAgIHJldHVybiB0aGlzLl9jYWNoZTtcclxuICB9XHJcbn1cclxuIl19