import { concreteTPriorityQueue } from "@effect/core/stm/TPriorityQueue/operations/_internal/InternalTPriorityQueue"
/**
* Collects all values into an array.
*
* @tsplus getter effect/core/stm/TPriorityQueue toImmutableArray
*/
export function toArray(self: TPriorityQueue): USTM> {
concreteTPriorityQueue(self)
return self.map.modify((map) => {
const entries = map.entries
const result: A[] = []
let e: IteratorResult]>
while (!(e = entries.next()).done) {
const [, as] = e.value
result.push(...Array.from(as))
}
return [ImmutableArray.from(result), map] as const
})
}