import { pipe } from 'extra-utils' import { map } from '@src/map.js' import { filter } from '@src/filter.js' export function findAllIndexes( iterable: Iterable , predicate: (value: T, index: number) => unknown ): IterableIterator { return pipe( iterable , iterable => map(iterable, (x, i) => [x, i] as const) , iterable => filter(iterable, ([x, i]) => predicate(x, i)) , iterable => map(iterable, ([_, i]) => i) ) }