iterama
Version:
Composable functional (async) iterable helpers
103 lines (88 loc) • 3.38 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _awaitAsyncGenerator from "@babel/runtime/helpers/esm/awaitAsyncGenerator";
import _wrapAsyncGenerator from "@babel/runtime/helpers/esm/wrapAsyncGenerator";
import _asyncIterator from "@babel/runtime/helpers/esm/asyncIterator";
import FixedArray from 'circularr';
import { iterateAsync } from './iterate-async';
var skipFirstAsync = function skipFirstAsync(n) {
return function (iterable) {
return _defineProperty({}, Symbol.asyncIterator, function () {
return _wrapAsyncGenerator(function* () {
var asyncGenerator = iterateAsync(iterable);
var i = 0;
while (i < n) {
var result = yield _awaitAsyncGenerator(asyncGenerator.next());
if (result.done) {
break;
}
i++;
}
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError;
try {
for (var _iterator = _asyncIterator(asyncGenerator), _step, _value; _step = yield _awaitAsyncGenerator(_iterator.next()), _iteratorNormalCompletion = _step.done, _value = yield _awaitAsyncGenerator(_step.value), !_iteratorNormalCompletion; _iteratorNormalCompletion = true) {
var value = _value;
yield value;
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
yield _awaitAsyncGenerator(_iterator.return());
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
})();
});
};
};
var skipLastAsync = function skipLastAsync(n) {
return function (iterable) {
return _defineProperty({}, Symbol.asyncIterator, function () {
return _wrapAsyncGenerator(function* () {
var asyncGenerator = iterateAsync(iterable);
var last = new FixedArray(n);
for (var i = 0; i < n; i++) {
var result = yield _awaitAsyncGenerator(asyncGenerator.next());
if (result.done) {
break;
}
last.shift(result.value);
}
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2;
try {
for (var _iterator2 = _asyncIterator(asyncGenerator), _step2, _value2; _step2 = yield _awaitAsyncGenerator(_iterator2.next()), _iteratorNormalCompletion2 = _step2.done, _value2 = yield _awaitAsyncGenerator(_step2.value), !_iteratorNormalCompletion2; _iteratorNormalCompletion2 = true) {
var value = _value2;
yield last.shift(value);
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
yield _awaitAsyncGenerator(_iterator2.return());
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
})();
});
};
};
export var skipAsync = function skipAsync(n) {
return n < 0 ? skipLastAsync(-n) : skipFirstAsync(n);
};
//# sourceMappingURL=skip-async.js.map