Skip to main content Link Search Menu Expand Document (external link)

TMap overview

Added in v2.0.0


Table of contents


constructors

empty

Makes an empty TMap.

Signature

export declare const empty: <K, V>() => STM.STM<TMap<K, V>, never, never>

Added in v2.0.0

fromIterable

Creates a new TMap from an iterable collection of key/value pairs.

Signature

export declare const fromIterable: <K, V>(iterable: Iterable<readonly [K, V]>) => STM.STM<TMap<K, V>, never, never>

Added in v2.0.0

make

Makes a new TMap that is initialized with specified values.

Signature

export declare const make: <K, V>(...entries: (readonly [K, V])[]) => STM.STM<TMap<K, V>, never, never>

Added in v2.0.0

destructors

toArray

Collects all bindings into an Array.

Signature

export declare const toArray: <K, V>(self: TMap<K, V>) => STM.STM<[K, V][], never, never>

Added in v2.0.0

toChunk

Collects all bindings into a Chunk.

Signature

export declare const toChunk: <K, V>(self: TMap<K, V>) => STM.STM<Chunk.Chunk<[K, V]>, never, never>

Added in v2.0.0

toHashMap

Collects all bindings into a HashMap.

Signature

export declare const toHashMap: <K, V>(self: TMap<K, V>) => STM.STM<HashMap.HashMap<K, V>, never, never>

Added in v2.0.0

toMap

Collects all bindings into a Map.

Signature

export declare const toMap: <K, V>(self: TMap<K, V>) => STM.STM<ReadonlyMap<K, V>, never, never>

Added in v2.0.0

elements

find

Finds the key/value pair matching the specified predicate, and uses the provided function to extract a value out of it.

Signature

export declare const find: {
  <K, V, A>(pf: (key: K, value: V) => Option.Option<A>): (self: TMap<K, V>) => STM.STM<Option.Option<A>, never, never>
  <K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option.Option<A>): STM.STM<Option.Option<A>, never, never>
}

Added in v2.0.0

findAll

Finds all the key/value pairs matching the specified predicate, and uses the provided function to extract values out them.

Signature

export declare const findAll: {
  <K, V, A>(pf: (key: K, value: V) => Option.Option<A>): (self: TMap<K, V>) => STM.STM<A[], never, never>
  <K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option.Option<A>): STM.STM<A[], never, never>
}

Added in v2.0.0

findAllSTM

Finds all the key/value pairs matching the specified predicate, and uses the provided effectful function to extract values out of them..

Signature

export declare const findAllSTM: {
  <K, V, A, E, R>(pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): (self: TMap<K, V>) => STM.STM<A[], E, R>
  <K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<A[], E, R>
}

Added in v2.0.0

findSTM

Finds the key/value pair matching the specified predicate, and uses the provided effectful function to extract a value out of it.

Signature

export declare const findSTM: {
  <K, V, A, E, R>(
    f: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
  ): (self: TMap<K, V>) => STM.STM<Option.Option<A>, E, R>
  <K, V, A, E, R>(
    self: TMap<K, V>,
    f: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
  ): STM.STM<Option.Option<A>, E, R>
}

Added in v2.0.0

forEach

Atomically performs transactional-effect for each binding present in map.

Signature

export declare const forEach: {
  <K, V, X, E, R>(f: (key: K, value: V) => STM.STM<X, E, R>): (self: TMap<K, V>) => STM.STM<void, E, R>
  <K, V, X, E, R>(self: TMap<K, V>, f: (key: K, value: V) => STM.STM<X, E, R>): STM.STM<void, E, R>
}

Added in v2.0.0

get

Retrieves value associated with given key.

Signature

export declare const get: {
  <K>(key: K): <V>(self: TMap<K, V>) => STM.STM<Option.Option<V>, never, never>
  <K, V>(self: TMap<K, V>, key: K): STM.STM<Option.Option<V>, never, never>
}

Added in v2.0.0

getOrElse

Retrieves value associated with given key or default value, in case the key isn’t present.

Signature

export declare const getOrElse: {
  <K, V>(key: K, fallback: LazyArg<V>): (self: TMap<K, V>) => STM.STM<V, never, never>
  <K, V>(self: TMap<K, V>, key: K, fallback: LazyArg<V>): STM.STM<V, never, never>
}

Added in v2.0.0

has

Tests whether or not map contains a key.

Signature

export declare const has: {
  <K>(key: K): <V>(self: TMap<K, V>) => STM.STM<boolean>
  <K, V>(self: TMap<K, V>, key: K): STM.STM<boolean>
}

Added in v2.0.0

keys

Collects all keys stored in map.

Signature

export declare const keys: <K, V>(self: TMap<K, V>) => STM.STM<K[], never, never>

Added in v2.0.0

values

Collects all values stored in map.

Signature

export declare const values: <K, V>(self: TMap<K, V>) => STM.STM<V[], never, never>

Added in v2.0.0

folding

reduce

Atomically folds using a pure function.

Signature

export declare const reduce: {
  <Z, K, V>(zero: Z, f: (acc: Z, value: V, key: K) => Z): (self: TMap<K, V>) => STM.STM<Z, never, never>
  <K, V, Z>(self: TMap<K, V>, zero: Z, f: (acc: Z, value: V, key: K) => Z): STM.STM<Z, never, never>
}

Added in v2.0.0

reduceSTM

Atomically folds using a transactional function.

Signature

export declare const reduceSTM: {
  <Z, V, K, R, E>(zero: Z, f: (acc: Z, value: V, key: K) => STM.STM<Z, E, R>): (self: TMap<K, V>) => STM.STM<Z, E, R>
  <Z, V, K, R, E>(self: TMap<K, V>, zero: Z, f: (acc: Z, value: V, key: K) => STM.STM<Z, E, R>): STM.STM<Z, E, R>
}

Added in v2.0.0

getters

isEmpty

Tests if the map is empty or not.

Signature

export declare const isEmpty: <K, V>(self: TMap<K, V>) => STM.STM<boolean>

Added in v2.0.0

size

Returns the number of bindings.

Signature

export declare const size: <K, V>(self: TMap<K, V>) => STM.STM<number>

Added in v2.0.0

models

TMap (interface)

Transactional map implemented on top of TRef and TArray. Resolves conflicts via chaining.

Signature

export interface TMap<in out K, in out V> extends TMap.Variance<K, V> {}

Added in v2.0.0

mutations

merge

If the key is not already associated with a value, stores the provided value, otherwise merge the existing value with the new one using function f and store the result.

Signature

export declare const merge: {
  <K, V>(key: K, value: V, f: (x: V, y: V) => V): (self: TMap<K, V>) => STM.STM<V, never, never>
  <K, V>(self: TMap<K, V>, key: K, value: V, f: (x: V, y: V) => V): STM.STM<V, never, never>
}

Added in v2.0.0

remove

Removes binding for given key.

Signature

export declare const remove: {
  <K>(key: K): <V>(self: TMap<K, V>) => STM.STM<void>
  <K, V>(self: TMap<K, V>, key: K): STM.STM<void>
}

Added in v2.0.0

removeAll

Deletes all entries associated with the specified keys.

Signature

export declare const removeAll: {
  <K>(keys: Iterable<K>): <V>(self: TMap<K, V>) => STM.STM<void>
  <K, V>(self: TMap<K, V>, keys: Iterable<K>): STM.STM<void>
}

Added in v2.0.0

removeIf

Removes entries from a TMap that satisfy the specified predicate and returns the removed entries (or void if discard = true).

Signature

export declare const removeIf: {
  <K, V>(
    predicate: (key: K, value: V) => boolean,
    options: { readonly discard: true }
  ): (self: TMap<K, V>) => STM.STM<void>
  <K, V>(
    predicate: (key: K, value: V) => boolean,
    options?: { readonly discard: false }
  ): (self: TMap<K, V>) => STM.STM<[K, V][], never, never>
  <K, V>(self: TMap<K, V>, predicate: (key: K, value: V) => boolean, options: { readonly discard: true }): STM.STM<void>
  <K, V>(
    self: TMap<K, V>,
    predicate: (key: K, value: V) => boolean,
    options?: { readonly discard: false }
  ): STM.STM<[K, V][], never, never>
}

Added in v2.0.0

retainIf

Retains entries in a TMap that satisfy the specified predicate and returns the removed entries (or void if discard = true).

Signature

export declare const retainIf: {
  <K, V>(
    predicate: (key: K, value: V) => boolean,
    options: { readonly discard: true }
  ): (self: TMap<K, V>) => STM.STM<void>
  <K, V>(
    predicate: (key: K, value: V) => boolean,
    options?: { readonly discard: false }
  ): (self: TMap<K, V>) => STM.STM<[K, V][], never, never>
  <K, V>(self: TMap<K, V>, predicate: (key: K, value: V) => boolean, options: { readonly discard: true }): STM.STM<void>
  <K, V>(
    self: TMap<K, V>,
    predicate: (key: K, value: V) => boolean,
    options?: { readonly discard: false }
  ): STM.STM<[K, V][], never, never>
}

Added in v2.0.0

set

Stores new binding into the map.

Signature

export declare const set: {
  <K, V>(key: K, value: V): (self: TMap<K, V>) => STM.STM<void>
  <K, V>(self: TMap<K, V>, key: K, value: V): STM.STM<void>
}

Added in v2.0.0

setIfAbsent

Stores new binding in the map if it does not already exist.

Signature

export declare const setIfAbsent: {
  <K, V>(key: K, value: V): (self: TMap<K, V>) => STM.STM<void>
  <K, V>(self: TMap<K, V>, key: K, value: V): STM.STM<void>
}

Added in v2.0.0

takeFirst

Takes the first matching value, or retries until there is one.

Signature

export declare const takeFirst: {
  <K, V, A>(pf: (key: K, value: V) => Option.Option<A>): (self: TMap<K, V>) => STM.STM<A, never, never>
  <K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option.Option<A>): STM.STM<A, never, never>
}

Added in v2.0.0

takeFirstSTM

Takes the first matching value, or retries until there is one.

Signature

export declare const takeFirstSTM: {
  <K, V, A, E, R>(pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): (self: TMap<K, V>) => STM.STM<A, E, R>
  <K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>): STM.STM<A, E, R>
}

Added in v2.0.0

takeSome

Takes all matching values, or retries until there is at least one.

Signature

export declare const takeSome: {
  <K, V, A>(pf: (key: K, value: V) => Option.Option<A>): (self: TMap<K, V>) => STM.STM<[A, ...A[]], never, never>
  <K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option.Option<A>): STM.STM<[A, ...A[]], never, never>
}

Added in v2.0.0

takeSomeSTM

Takes all matching values, or retries until there is at least one.

Signature

export declare const takeSomeSTM: {
  <K, V, A, E, R>(
    pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
  ): (self: TMap<K, V>) => STM.STM<[A, ...A[]], E, R>
  <K, V, A, E, R>(
    self: TMap<K, V>,
    pf: (key: K, value: V) => STM.STM<A, Option.Option<E>, R>
  ): STM.STM<[A, ...A[]], E, R>
}

Added in v2.0.0

transform

Atomically updates all bindings using a pure function.

Signature

export declare const transform: {
  <K, V>(f: (key: K, value: V) => readonly [K, V]): (self: TMap<K, V>) => STM.STM<void>
  <K, V>(self: TMap<K, V>, f: (key: K, value: V) => readonly [K, V]): STM.STM<void>
}

Added in v2.0.0

transformSTM

Atomically updates all bindings using a transactional function.

Signature

export declare const transformSTM: {
  <K, V, R, E>(f: (key: K, value: V) => STM.STM<readonly [K, V], E, R>): (self: TMap<K, V>) => STM.STM<void, E, R>
  <K, V, R, E>(self: TMap<K, V>, f: (key: K, value: V) => STM.STM<readonly [K, V], E, R>): STM.STM<void, E, R>
}

Added in v2.0.0

transformValues

Atomically updates all values using a pure function.

Signature

export declare const transformValues: {
  <V>(f: (value: V) => V): <K>(self: TMap<K, V>) => STM.STM<void>
  <K, V>(self: TMap<K, V>, f: (value: V) => V): STM.STM<void>
}

Added in v2.0.0

transformValuesSTM

Atomically updates all values using a transactional function.

Signature

export declare const transformValuesSTM: {
  <V, R, E>(f: (value: V) => STM.STM<V, E, R>): <K>(self: TMap<K, V>) => STM.STM<void, E, R>
  <K, V, R, E>(self: TMap<K, V>, f: (value: V) => STM.STM<V, E, R>): STM.STM<void, E, R>
}

Added in v2.0.0

updateWith

Updates the mapping for the specified key with the specified function, which takes the current value of the key as an input, if it exists, and either returns Some with a new value to indicate to update the value in the map or None to remove the value from the map. Returns Some with the updated value or None if the value was removed from the map.

Signature

export declare const updateWith: {
  <K, V>(
    key: K,
    f: (value: Option.Option<V>) => Option.Option<V>
  ): (self: TMap<K, V>) => STM.STM<Option.Option<V>, never, never>
  <K, V>(
    self: TMap<K, V>,
    key: K,
    f: (value: Option.Option<V>) => Option.Option<V>
  ): STM.STM<Option.Option<V>, never, never>
}

Added in v2.0.0

symbols

TMapTypeId

Signature

export declare const TMapTypeId: typeof TMapTypeId

Added in v2.0.0

TMapTypeId (type alias)

Signature

export type TMapTypeId = typeof TMapTypeId

Added in v2.0.0

utils

TMap (namespace)

Added in v2.0.0

Variance (interface)

Signature

export interface Variance<in out K, in out V> {
  readonly [TMapTypeId]: {
    readonly _K: Types.Invariant<K>
    readonly _V: Types.Invariant<V>
  }
}

Added in v2.0.0