@@ -1300,4 +1300,35 @@ export function asyncMapKeyByOnceFn<TKey, TElement, TNewElement>(
13001300 ) => readonly [ TKey , TNewElement ] | Promise < readonly [ TKey , TNewElement ] >
13011301) : ( iterator : AsyncIteratorLike < TElement > ) => Promise < Map < TKey , readonly TNewElement [ ] > > {
13021302 return async iterator => asyncMapKeyByOnce ( iterator , f ) ;
1303- }
1303+ }
1304+
1305+ export async function asyncMapKeyFirstByOnce < TKey , TElement , TNewElement > (
1306+ iterator : AsyncIteratorLike < TElement > ,
1307+ f : (
1308+ element : TElement ,
1309+ index : number
1310+ ) => readonly [ TKey , TNewElement ] | Promise < readonly [ TKey , TNewElement ] >
1311+ ) : Promise < Map < TKey , TNewElement > > {
1312+ const it = asyncIterator ( iterator ) ;
1313+ const map = new Map < TKey , TNewElement > ( ) ;
1314+ for (
1315+ let i = 0 , element = await it . next ( ) ;
1316+ element . done !== true ;
1317+ ++ i , element = await it . next ( )
1318+ ) {
1319+ const [ key , value ] = await f ( element . value , i ) ;
1320+ if ( ! map . has ( key ) ) {
1321+ map . set ( key , value ) ;
1322+ }
1323+ }
1324+ return map ;
1325+ }
1326+
1327+ export function asyncMapKeyFirstByOnceFn < TKey , TElement , TNewElement > (
1328+ f : (
1329+ element : TElement ,
1330+ index : number
1331+ ) => readonly [ TKey , TNewElement ] | Promise < readonly [ TKey , TNewElement ] >
1332+ ) : ( iterator : AsyncIteratorLike < TElement > ) => Promise < Map < TKey , TNewElement > > {
1333+ return async iterator => asyncMapKeyFirstByOnce ( iterator , f ) ;
1334+ }
0 commit comments