Skip to content

Commit d316d31

Browse files
committed
feat(asyncTailOnce): add asyncTailOnce function
1 parent c68f349 commit d316d31

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

index.test.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type {ExecutionContext} from "ava";
22
import test from "ava";
3-
import {asyncIterator} from "./index";
3+
import {asyncIterator, asyncTailOnce, asyncToArrayOnce} from "./index";
44

55
test("asyncIterator(empty)", async t => {
66
t.true((await asyncIterator([]).next()).done);
@@ -87,3 +87,9 @@ test("asyncIterator(Promise<Iterable<T>>", async t => {
8787
test("asyncIterator(Promise<Iterable<Promise<T>>>)", async t => {
8888
await verify123(t, asyncIterator(Promise.resolve(promiseGenerator123())));
8989
});
90+
91+
test("asyncTailOnce", async t => {
92+
t.deepEqual(await asyncToArrayOnce(asyncTailOnce(asyncIterator([1, 2, 3, 4]))), [2, 3, 4]);
93+
t.deepEqual(await asyncToArrayOnce(asyncTailOnce(asyncIterator([1]))), []);
94+
t.deepEqual(await asyncToArrayOnce(asyncTailOnce(asyncIterator([]))), []);
95+
});

index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,9 @@ export async function asyncFirstOnce<T>(iterator: AsyncIteratorLike<T>): Promise
9696
return element.value;
9797
}
9898
}
99+
100+
export function asyncTailOnce<T>(iterator: AsyncIteratorLike<T>): AsyncIterator<T> {
101+
const it = asyncIterator(iterator);
102+
const tail = it.next().then(() => it);
103+
return fromPromiseOfIteratorLike(tail);
104+
}

0 commit comments

Comments
 (0)