Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async function shiftedNext(unwrappedNextPayload) {
nextCalled = true;
const nextPayload = wrap(unwrappedNextPayload, path);
if (remainingPayload.length) merge(nextPayload, remainingPayload);
const nextResult = await next(nextPayload);
// Remember the next() results that are not returned to this provider.
// These will be merged into the result later.
remainingNextResult = remove(nextResult, path) || [];
return unwrap(nextResult, path);
}
return async function shiftedFn(payload, options, next) {
let nextCalled = false;
let remainingNextResult;
const unwrappedPayload = unwrap(payload, path);
const remainingPayload = remove(payload, path) || [];
// This next function is offered to the provider function.
async function shiftedNext(unwrappedNextPayload) {
nextCalled = true;
const nextPayload = wrap(unwrappedNextPayload, path);
if (remainingPayload.length) merge(nextPayload, remainingPayload);
const nextResult = await next(nextPayload);
// Remember the next() results that are not returned to this provider.
// These will be merged into the result later.
remainingNextResult = remove(nextResult, path) || [];
return unwrap(nextResult, path);
}
const result = wrap(await fn(unwrappedPayload, options, shiftedNext), path);
return async function* shiftedGen(payload, options, next) {
let nextCalled = false;
let remainingNextStream;
const unwrappedPayload = unwrap(payload, path);
const remainingPayload = remove(payload, path) || [];
// TODO: This should probably use makeStream and propagate returns.
const shiftedNext = async function*(unwrappedNextPayload) {
nextCalled = true;
const nextPayload = wrap(unwrappedNextPayload, path);
if (remainingPayload.length) merge(nextPayload, remainingPayload);
let pushRemaining;
remainingNextStream = makeStream(push => {
pushRemaining = push;
});
for await (const value of next(nextPayload)) {
const unwrappedValue = unwrap(value, path);
const remainingValue = remove(value, path);
if (remainingValue) pushRemaining(remainingValue);
const shiftedNext = async function*(unwrappedNextPayload) {
nextCalled = true;
const nextPayload = wrap(unwrappedNextPayload, path);
if (remainingPayload.length) merge(nextPayload, remainingPayload);
let pushRemaining;
remainingNextStream = makeStream(push => {
pushRemaining = push;
});
for await (const value of next(nextPayload)) {
const unwrappedValue = unwrap(value, path);
const remainingValue = remove(value, path);
if (remainingValue) pushRemaining(remainingValue);
if (unwrappedValue) yield unwrappedValue;
}
};