UNPKG

apollo-angular

Version:

Use your GraphQL data in your Angular app, with the Apollo Client

86 lines 13.4 kB
import { from, Observable } from 'rxjs'; import { NetworkStatus } from '@apollo/client/core'; import { fixObservable, wrapWithZone } from './utils'; function useInitialLoading(obsQuery) { return function useInitialLoadingOperator(source) { return new Observable(function useInitialLoadingSubscription(subscriber) { const currentResult = obsQuery.getCurrentResult(); const { loading, errors, error, partial, data } = currentResult; const { partialRefetch, fetchPolicy } = obsQuery.options; const hasError = errors || error; if (partialRefetch && partial && (!data || Object.keys(data).length === 0) && fetchPolicy !== 'cache-only' && !loading && !hasError) { subscriber.next({ ...currentResult, loading: true, networkStatus: NetworkStatus.loading, }); } return source.subscribe(subscriber); }); }; } export class QueryRef { obsQuery; valueChanges; queryId; constructor(obsQuery, ngZone, options) { this.obsQuery = obsQuery; const wrapped = wrapWithZone(from(fixObservable(this.obsQuery)), ngZone); this.valueChanges = options.useInitialLoading ? wrapped.pipe(useInitialLoading(this.obsQuery)) : wrapped; this.queryId = this.obsQuery.queryId; } // ObservableQuery's methods get options() { return this.obsQuery.options; } get variables() { return this.obsQuery.variables; } result() { return this.obsQuery.result(); } getCurrentResult() { return this.obsQuery.getCurrentResult(); } getLastResult() { return this.obsQuery.getLastResult(); } getLastError() { return this.obsQuery.getLastError(); } resetLastResults() { return this.obsQuery.resetLastResults(); } refetch(variables) { return this.obsQuery.refetch(variables); } fetchMore(fetchMoreOptions) { return this.obsQuery.fetchMore(fetchMoreOptions); } subscribeToMore(options) { return this.obsQuery.subscribeToMore(options); } updateQuery(mapFn) { return this.obsQuery.updateQuery(mapFn); } stopPolling() { return this.obsQuery.stopPolling(); } startPolling(pollInterval) { return this.obsQuery.startPolling(pollInterval); } setOptions(opts) { return this.obsQuery.setOptions(opts); } setVariables(variables) { return this.obsQuery.setVariables(variables); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5LXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVl4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEQsU0FBUyxpQkFBaUIsQ0FBa0MsUUFBK0I7SUFDekYsT0FBTyxTQUFTLHlCQUF5QixDQUFJLE1BQXFCO1FBQ2hFLE9BQU8sSUFBSSxVQUFVLENBQUMsU0FBUyw2QkFBNkIsQ0FBQyxVQUFVO1lBQ3JFLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xELE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBQ2hFLE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUV6RCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDO1lBRWpDLElBQ0UsY0FBYztnQkFDZCxPQUFPO2dCQUNQLENBQUMsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxXQUFXLEtBQUssWUFBWTtnQkFDNUIsQ0FBQyxPQUFPO2dCQUNSLENBQUMsUUFBUSxFQUNULENBQUM7Z0JBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDZCxHQUFHLGFBQWE7b0JBQ2hCLE9BQU8sRUFBRSxJQUFJO29CQUNiLGFBQWEsRUFBRSxhQUFhLENBQUMsT0FBTztpQkFDOUIsQ0FBQyxDQUFDO1lBQ1osQ0FBQztZQUVELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUM7QUFLRCxNQUFNLE9BQU8sUUFBUTtJQUtBO0lBSkgsWUFBWSxDQUF1QztJQUNuRCxPQUFPLENBQWdEO0lBRXZFLFlBQ21CLFFBQTRDLEVBQzdELE1BQWMsRUFDZCxPQUE2QztRQUY1QixhQUFRLEdBQVIsUUFBUSxDQUFvQztRQUk3RCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUI7WUFDM0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTSxPQUFPLENBQ1osU0FBd0U7UUFFeEUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sU0FBUyxDQUNkLGdCQVFDO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxlQUFlLENBSXBCLE9BQTZGO1FBRTdGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVNLFdBQVcsQ0FDaEIsS0FBdUU7UUFFdkUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLFlBQVksQ0FDakIsWUFBK0U7UUFFL0UsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sVUFBVSxDQUNmLElBQXFFO1FBRXJFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFlBQVksQ0FDakIsU0FBNEU7UUFFNUUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgQXBvbGxvUXVlcnlSZXN1bHQsXG4gIEZldGNoTW9yZVF1ZXJ5T3B0aW9ucyxcbiAgTWF5YmVNYXNrZWQsXG4gIE9ic2VydmFibGVRdWVyeSxcbiAgT3BlcmF0aW9uVmFyaWFibGVzLFxuICBTdWJzY3JpYmVUb01vcmVPcHRpb25zLFxuICBUeXBlZERvY3VtZW50Tm9kZSxcbiAgVW5tYXNrZWQsXG59IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgTmV0d29ya1N0YXR1cyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgRW1wdHlPYmplY3QsIFdhdGNoUXVlcnlPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBmaXhPYnNlcnZhYmxlLCB3cmFwV2l0aFpvbmUgfSBmcm9tICcuL3V0aWxzJztcblxuZnVuY3Rpb24gdXNlSW5pdGlhbExvYWRpbmc8VCwgViBleHRlbmRzIE9wZXJhdGlvblZhcmlhYmxlcz4ob2JzUXVlcnk6IE9ic2VydmFibGVRdWVyeTxULCBWPikge1xuICByZXR1cm4gZnVuY3Rpb24gdXNlSW5pdGlhbExvYWRpbmdPcGVyYXRvcjxUPihzb3VyY2U6IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gdXNlSW5pdGlhbExvYWRpbmdTdWJzY3JpcHRpb24oc3Vic2NyaWJlcikge1xuICAgICAgY29uc3QgY3VycmVudFJlc3VsdCA9IG9ic1F1ZXJ5LmdldEN1cnJlbnRSZXN1bHQoKTtcbiAgICAgIGNvbnN0IHsgbG9hZGluZywgZXJyb3JzLCBlcnJvciwgcGFydGlhbCwgZGF0YSB9ID0gY3VycmVudFJlc3VsdDtcbiAgICAgIGNvbnN0IHsgcGFydGlhbFJlZmV0Y2gsIGZldGNoUG9saWN5IH0gPSBvYnNRdWVyeS5vcHRpb25zO1xuXG4gICAgICBjb25zdCBoYXNFcnJvciA9IGVycm9ycyB8fCBlcnJvcjtcblxuICAgICAgaWYgKFxuICAgICAgICBwYXJ0aWFsUmVmZXRjaCAmJlxuICAgICAgICBwYXJ0aWFsICYmXG4gICAgICAgICghZGF0YSB8fCBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGggPT09IDApICYmXG4gICAgICAgIGZldGNoUG9saWN5ICE9PSAnY2FjaGUtb25seScgJiZcbiAgICAgICAgIWxvYWRpbmcgJiZcbiAgICAgICAgIWhhc0Vycm9yXG4gICAgICApIHtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KHtcbiAgICAgICAgICAuLi5jdXJyZW50UmVzdWx0LFxuICAgICAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICAgICAgbmV0d29ya1N0YXR1czogTmV0d29ya1N0YXR1cy5sb2FkaW5nLFxuICAgICAgICB9IGFzIGFueSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzb3VyY2Uuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBRdWVyeVJlZkZyb21Eb2N1bWVudDxUIGV4dGVuZHMgVHlwZWREb2N1bWVudE5vZGU+ID1cbiAgVCBleHRlbmRzIFR5cGVkRG9jdW1lbnROb2RlPGluZmVyIFIsIGluZmVyIFY+ID8gUXVlcnlSZWY8UiwgViAmIE9wZXJhdGlvblZhcmlhYmxlcz4gOiBuZXZlcjtcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5UmVmPFREYXRhLCBUVmFyaWFibGVzIGV4dGVuZHMgT3BlcmF0aW9uVmFyaWFibGVzID0gRW1wdHlPYmplY3Q+IHtcbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlQ2hhbmdlczogT2JzZXJ2YWJsZTxBcG9sbG9RdWVyeVJlc3VsdDxURGF0YT4+O1xuICBwdWJsaWMgcmVhZG9ubHkgcXVlcnlJZDogT2JzZXJ2YWJsZVF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzPlsncXVlcnlJZCddO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JzUXVlcnk6IE9ic2VydmFibGVRdWVyeTxURGF0YSwgVFZhcmlhYmxlcz4sXG4gICAgbmdab25lOiBOZ1pvbmUsXG4gICAgb3B0aW9uczogV2F0Y2hRdWVyeU9wdGlvbnM8VFZhcmlhYmxlcywgVERhdGE+LFxuICApIHtcbiAgICBjb25zdCB3cmFwcGVkID0gd3JhcFdpdGhab25lKGZyb20oZml4T2JzZXJ2YWJsZSh0aGlzLm9ic1F1ZXJ5KSksIG5nWm9uZSk7XG5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlcyA9IG9wdGlvbnMudXNlSW5pdGlhbExvYWRpbmdcbiAgICAgID8gd3JhcHBlZC5waXBlKHVzZUluaXRpYWxMb2FkaW5nKHRoaXMub2JzUXVlcnkpKVxuICAgICAgOiB3cmFwcGVkO1xuICAgIHRoaXMucXVlcnlJZCA9IHRoaXMub2JzUXVlcnkucXVlcnlJZDtcbiAgfVxuXG4gIC8vIE9ic2VydmFibGVRdWVyeSdzIG1ldGhvZHNcblxuICBwdWJsaWMgZ2V0IG9wdGlvbnMoKTogT2JzZXJ2YWJsZVF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzPlsnb3B0aW9ucyddIHtcbiAgICByZXR1cm4gdGhpcy5vYnNRdWVyeS5vcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGdldCB2YXJpYWJsZXMoKTogT2JzZXJ2YWJsZVF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzPlsndmFyaWFibGVzJ10ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnZhcmlhYmxlcztcbiAgfVxuXG4gIHB1YmxpYyByZXN1bHQoKTogUmV0dXJuVHlwZTxPYnNlcnZhYmxlUXVlcnk8VERhdGEsIFRWYXJpYWJsZXM+WydyZXN1bHQnXT4ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnJlc3VsdCgpO1xuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbnRSZXN1bHQoKTogUmV0dXJuVHlwZTxPYnNlcnZhYmxlUXVlcnk8VERhdGEsIFRWYXJpYWJsZXM+WydnZXRDdXJyZW50UmVzdWx0J10+IHtcbiAgICByZXR1cm4gdGhpcy5vYnNRdWVyeS5nZXRDdXJyZW50UmVzdWx0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFzdFJlc3VsdCgpOiBSZXR1cm5UeXBlPE9ic2VydmFibGVRdWVyeTxURGF0YSwgVFZhcmlhYmxlcz5bJ2dldExhc3RSZXN1bHQnXT4ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LmdldExhc3RSZXN1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXN0RXJyb3IoKTogUmV0dXJuVHlwZTxPYnNlcnZhYmxlUXVlcnk8VERhdGEsIFRWYXJpYWJsZXM+WydnZXRMYXN0RXJyb3InXT4ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LmdldExhc3RFcnJvcigpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0TGFzdFJlc3VsdHMoKTogUmV0dXJuVHlwZTxPYnNlcnZhYmxlUXVlcnk8VERhdGEsIFRWYXJpYWJsZXM+WydyZXNldExhc3RSZXN1bHRzJ10+IHtcbiAgICByZXR1cm4gdGhpcy5vYnNRdWVyeS5yZXNldExhc3RSZXN1bHRzKCk7XG4gIH1cblxuICBwdWJsaWMgcmVmZXRjaChcbiAgICB2YXJpYWJsZXM/OiBQYXJhbWV0ZXJzPE9ic2VydmFibGVRdWVyeTxURGF0YSwgVFZhcmlhYmxlcz5bJ3JlZmV0Y2gnXT5bMF0sXG4gICk6IFJldHVyblR5cGU8T2JzZXJ2YWJsZVF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzPlsncmVmZXRjaCddPiB7XG4gICAgcmV0dXJuIHRoaXMub2JzUXVlcnkucmVmZXRjaCh2YXJpYWJsZXMpO1xuICB9XG5cbiAgcHVibGljIGZldGNoTW9yZTxURmV0Y2hEYXRhID0gVERhdGEsIFRGZXRjaFZhcnMgZXh0ZW5kcyBPcGVyYXRpb25WYXJpYWJsZXMgPSBUVmFyaWFibGVzPihcbiAgICBmZXRjaE1vcmVPcHRpb25zOiBGZXRjaE1vcmVRdWVyeU9wdGlvbnM8VEZldGNoVmFycywgVEZldGNoRGF0YT4gJiB7XG4gICAgICB1cGRhdGVRdWVyeT86IChcbiAgICAgICAgcHJldmlvdXNRdWVyeVJlc3VsdDogVW5tYXNrZWQ8VERhdGE+LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZmV0Y2hNb3JlUmVzdWx0OiBVbm1hc2tlZDxURmV0Y2hEYXRhPjtcbiAgICAgICAgICB2YXJpYWJsZXM6IFRGZXRjaFZhcnM7XG4gICAgICAgIH0sXG4gICAgICApID0+IFVubWFza2VkPFREYXRhPjtcbiAgICB9LFxuICApOiBQcm9taXNlPEFwb2xsb1F1ZXJ5UmVzdWx0PE1heWJlTWFza2VkPFRGZXRjaERhdGE+Pj4ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LmZldGNoTW9yZShmZXRjaE1vcmVPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJzY3JpYmVUb01vcmU8XG4gICAgVFN1YnNjcmlwdGlvbkRhdGEgPSBURGF0YSxcbiAgICBUU3Vic2NyaXB0aW9uVmFyaWFibGVzIGV4dGVuZHMgT3BlcmF0aW9uVmFyaWFibGVzID0gVFZhcmlhYmxlcyxcbiAgPihcbiAgICBvcHRpb25zOiBTdWJzY3JpYmVUb01vcmVPcHRpb25zPFREYXRhLCBUU3Vic2NyaXB0aW9uVmFyaWFibGVzLCBUU3Vic2NyaXB0aW9uRGF0YSwgVFZhcmlhYmxlcz4sXG4gICk6IFJldHVyblR5cGU8T2JzZXJ2YWJsZVF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzPlsnc3Vic2NyaWJlVG9Nb3JlJ10+IHtcbiAgICByZXR1cm4gdGhpcy5vYnNRdWVyeS5zdWJzY3JpYmVUb01vcmUob3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUXVlcnkoXG4gICAgbWFwRm46IFBhcmFtZXRlcnM8T2JzZXJ2YWJsZVF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzPlsndXBkYXRlUXVlcnknXT5bMF0sXG4gICk6IFJldHVyblR5cGU8T2JzZXJ2YWJsZVF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzPlsndXBkYXRlUXVlcnknXT4ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnVwZGF0ZVF1ZXJ5KG1hcEZuKTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9wUG9sbGluZygpOiBSZXR1cm5UeXBlPE9ic2VydmFibGVRdWVyeTxURGF0YSwgVFZhcmlhYmxlcz5bJ3N0b3BQb2xsaW5nJ10+IHtcbiAgICByZXR1cm4gdGhpcy5vYnNRdWVyeS5zdG9wUG9sbGluZygpO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0UG9sbGluZyhcbiAgICBwb2xsSW50ZXJ2YWw6IFBhcmFtZXRlcnM8T2JzZXJ2YWJsZVF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzPlsnc3RhcnRQb2xsaW5nJ10+WzBdLFxuICApOiBSZXR1cm5UeXBlPE9ic2VydmFibGVRdWVyeTxURGF0YSwgVFZhcmlhYmxlcz5bJ3N0YXJ0UG9sbGluZyddPiB7XG4gICAgcmV0dXJuIHRoaXMub2JzUXVlcnkuc3RhcnRQb2xsaW5nKHBvbGxJbnRlcnZhbCk7XG4gIH1cblxuICBwdWJsaWMgc2V0T3B0aW9ucyhcbiAgICBvcHRzOiBQYXJhbWV0ZXJzPE9ic2VydmFibGVRdWVyeTxURGF0YSwgVFZhcmlhYmxlcz5bJ3NldE9wdGlvbnMnXT5bMF0sXG4gICk6IFJldHVyblR5cGU8T2JzZXJ2YWJsZVF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzPlsnc2V0T3B0aW9ucyddPiB7XG4gICAgcmV0dXJuIHRoaXMub2JzUXVlcnkuc2V0T3B0aW9ucyhvcHRzKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRWYXJpYWJsZXMoXG4gICAgdmFyaWFibGVzOiBQYXJhbWV0ZXJzPE9ic2VydmFibGVRdWVyeTxURGF0YSwgVFZhcmlhYmxlcz5bJ3NldFZhcmlhYmxlcyddPlswXSxcbiAgKTogUmV0dXJuVHlwZTxPYnNlcnZhYmxlUXVlcnk8VERhdGEsIFRWYXJpYWJsZXM+WydzZXRWYXJpYWJsZXMnXT4ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnNldFZhcmlhYmxlcyh2YXJpYWJsZXMpO1xuICB9XG59XG4iXX0=