Skip to content

Commit 546a492

Browse files
vinassefranchetim-smart
authored andcommitted
Add HashMap.toValues and HashSet.toValues (#4317)
1 parent bf865e5 commit 546a492

File tree

7 files changed

+38
-2
lines changed

7 files changed

+38
-2
lines changed

.changeset/three-bees-attack.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"effect": minor
3+
---
4+
5+
Add `HashMap.toValues` and `HashSet.toValues` getters

packages/effect/src/HashMap.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,14 @@ export const keySet: <K, V>(self: HashMap<K, V>) => HashSet<K> = keySet_.keySet
229229
*/
230230
export const values: <K, V>(self: HashMap<K, V>) => IterableIterator<V> = HM.values
231231

232+
/**
233+
* Returns an `Array` of the values within the `HashMap`.
234+
*
235+
* @since 3.13.0
236+
* @category getters
237+
*/
238+
export const toValues = <K, V>(self: HashMap<K, V>): Array<V> => Array.from(values(self))
239+
232240
/**
233241
* Returns an `IterableIterator` of the entries within the `HashMap`.
234242
*

packages/effect/src/HashSet.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,14 @@ export const isSubset: {
115115
*/
116116
export const values: <A>(self: HashSet<A>) => IterableIterator<A> = HS.values
117117

118+
/**
119+
* Returns an `Array` of the values within the `HashSet`.
120+
*
121+
* @since 3.13.0
122+
* @category getters
123+
*/
124+
export const toValues = <A>(self: HashSet<A>): Array<A> => Array.from(values(self))
125+
118126
/**
119127
* Calculates the number of values in the `HashSet`.
120128
*

packages/effect/src/internal/keyedPool.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ const makeImpl = <K, A, E, R>(
174174
}
175175
})
176176
const activePools: Effect.Effect<Array<Pool.Pool<A, E>>> = core.suspend(() =>
177-
core.forEachSequential(Array.from(HashMap.values(MutableRef.get(map))), (value) => {
177+
core.forEachSequential(HashMap.toValues(MutableRef.get(map)), (value) => {
178178
switch (value._tag) {
179179
case "Complete": {
180180
return core.succeed(value.pool)

packages/effect/test/HashMap.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,13 @@ describe("HashMap", () => {
394394
deepStrictEqual(result, [value("a"), value("b")])
395395
})
396396

397+
it("toValues", () => {
398+
const map = HM.make([key(0), value("a")], [key(1), value("b")])
399+
const result = HM.toValues(map)
400+
401+
deepStrictEqual(result, [value("a"), value("b")])
402+
})
403+
397404
it("entries", () => {
398405
const map = HM.make([key(0), value("a")], [key(1), value("b")])
399406
const result = Array.from(HM.entries(map))

packages/effect/test/HashSet.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,14 @@ describe("HashSet", () => {
220220
deepStrictEqual(result, [value(0), value(1), value(2)])
221221
})
222222

223+
it("toValues", () => {
224+
const hashSet = makeTestHashSet(0, 1, 2)
225+
226+
const result = HashSet.toValues(hashSet)
227+
228+
deepStrictEqual(result, [value(0), value(1), value(2)])
229+
})
230+
223231
it("pipe()", () => {
224232
strictEqual(
225233
HashSet.empty<string>().pipe(HashSet.add("value"), HashSet.size),

packages/effect/test/utils/cache/WatchableLookup.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ export const makeEffect = <Key, Value, Error = never>(
101101
const assertAllCleaned = () =>
102102
Effect.flatMap(createdResources(), (resources) =>
103103
resourcesCleaned(
104-
Chunk.flatten(Chunk.unsafeFromArray(Array.from(HashMap.values(resources))))
104+
Chunk.flatten(Chunk.unsafeFromArray(HashMap.toValues(resources)))
105105
))
106106
const assertAllCleanedForKey = (key: Key) =>
107107
Effect.flatMap(createdResources(), (resources) =>

0 commit comments

Comments
 (0)