node_modules.graphql.subscription.mapAsyncIterator.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of apollo-client-maven-plugin Show documentation
Show all versions of apollo-client-maven-plugin Show documentation
Maven plugin for generating graphql clients
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = mapAsyncIterator;
var _iterall = require('iterall');
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /**
* Copyright (c) 2017, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*
*/
/**
* Given an AsyncIterable and a callback function, return an AsyncIterator
* which produces values mapped via calling the callback function.
*/
function mapAsyncIterator(iterable, callback) {
var iterator = (0, _iterall.getAsyncIterator)(iterable);
var $return = void 0;
var abruptClose = void 0;
if (typeof iterator.return === 'function') {
$return = iterator.return;
abruptClose = function abruptClose(error) {
var rethrow = function rethrow() {
return Promise.reject(error);
};
return $return.call(iterator).then(rethrow, rethrow);
};
}
function mapResult(result) {
return result.done ? result : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose);
}
return _defineProperty({
next: function next() {
return iterator.next().then(mapResult);
},
return: function _return() {
return $return ? $return.call(iterator).then(mapResult) : Promise.resolve({ value: undefined, done: true });
},
throw: function _throw(error) {
if (typeof iterator.throw === 'function') {
return iterator.throw(error).then(mapResult);
}
return Promise.reject(error).catch(abruptClose);
}
}, _iterall.$$asyncIterator, function () {
return this;
});
}
function asyncMapValue(value, callback) {
return new Promise(function (resolve) {
return resolve(callback(value));
});
}
function iteratorResult(value) {
return { value: value, done: false };
}