sealed abstract class ConfigValue[+F[_], A] extends AnyRef
Represents a configuration value or a composition of multiple values.
If a configuration value is missing, we can use ConfigValue#or to
try and load the value from elsewhere. ConfigValue#default can be
used to set a default value if all other values are missing. If the
value is optional, ConfigValue#option can be used to default
to None
if all values are missing.
Values can be converted to a different type using ConfigValue#as. If the value might contain sensitive details, ConfigValue#secret can be used to redact sensitive details from error messages while also wrapping the value in Secret, preventing the value from being shown.
Sometimes, we first need to load a configuration value to determine
how to continue loading the remaining values. In such cases, it's
suitable to use ConfigValue#flatMap. When loading values in
sequence using flatMap
, errors are not accumulated, and so
only the first error will be available.
Parallel composition lets us achieve error accumulation. Functions
like parMapN
and parTupled
on tuples of ConfigValues loads
several values while also accumulating errors. It is often helpful
to see all errors when loading configurations, so prefer options
which accumulate errors.
Configuration values can be loaded using ConfigValue#load, which
loads the value using a specified effect type. If a ConfigValue
contains Resource
s for loading the configuration, there is also
the option to return a Resource
with ConfigValue#resource.
- Source
- ConfigValue.scala
scala> import cats.syntax.all._ import cats.syntax.all._ scala> case class Config(maxRetries: Int, apiKey: Option[Secret[String]]) class Config scala> val maxRetries = env("MAX_RETRIES").or(prop("max.retries")).as[Int].default(5) val maxRetries: ConfigValue[[x]Effect[x],Int] = ConfigValue$$88354410 scala> val apiKey = env("API_KEY").or(prop("api.key")).secret.option val apiKey: ConfigValue[[x]Effect[x],Option[Secret[String]]] = ConfigValue$$2109306667 scala> val config = (maxRetries, apiKey).parMapN(Config(_, _)) val config: ConfigValue[[x]Effect[x],Config] = ConfigValue$$1463229407
- Alphabetic
- By Inheritance
- ConfigValue
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def as[B](implicit decoder: ConfigDecoder[A, B]): ConfigValue[F, B]
Returns a new ConfigValue which attempts to decode the value to the specified type.
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- final def attempt[G[x] >: F[x]](implicit G: Async[G]): G[Either[ConfigError, A]]
Returns an effect of the specified type which attempts to load the configuration value.
Returns an effect of the specified type which attempts to load the configuration value.
Note that if the ConfigValue contains any resources, from using ConfigValue.resource, these will be used (acquired and released) as part of the returned effect. If this behaviour is not desired, we can instead use ConfigValue#resource to return a
Resource
. - def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
- final def covary[G[x] >: F[x]]: ConfigValue[G, A]
Returns the same ConfigValue but lifted to the specified effect type.
- final def default(value: => A): ConfigValue[F, A]
Returns a new ConfigValue which uses the specified default if the value is missing.
Returns a new ConfigValue which uses the specified default if the value is missing.
If a previous default value has been specified, a later default will override the earlier. If a default value is specified for a composition of values, the default will be used in case all values are either missing or are default values themselves.
Using
.default(a)
is equivalent to using.or(default(a))
. - final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def evalFlatMap[G[x] >: F[x], B](f: (A) => G[ConfigValue[G, B]]): ConfigValue[G, B]
Alias for
evalMap(f).flatten
. - final def evalMap[G[x] >: F[x], B](f: (A) => G[B]): ConfigValue[G, B]
Returns a new ConfigValue which applies the specified effectful function on the value.
- final def flatMap[G[x] >: F[x], B](f: (A) => ConfigValue[G, B]): ConfigValue[G, B]
Returns a new ConfigValue which loads the specified configuration using the value.
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def load[G[x] >: F[x]](implicit G: Async[G]): G[A]
Returns an effect of the specified type which loads the configuration value.
Returns an effect of the specified type which loads the configuration value.
Note that if the ConfigValue contains any resources, from using ConfigValue.resource, these will be used (acquired and released) as part of the returned effect. If this behaviour is not desired, we can instead use ConfigValue#resource to return a
Resource
. - final def map[B](f: (A) => B): ConfigValue[F, B]
Returns a new ConfigValue which applies the specified function on the value.
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def option: ConfigValue[F, Option[A]]
Returns a new ConfigValue which uses
None
as the default if the value is missing.Returns a new ConfigValue which uses
None
as the default if the value is missing.Using
.option
is equivalent to using.map(_.some).default(None)
. - final def or[G[x] >: F[x]](value: => ConfigValue[G, A]): ConfigValue[G, A]
Returns a new ConfigValue which uses the specified configuration if the value is missing.
Returns a new ConfigValue which uses the specified configuration if the value is missing.
If the value is a default value, an attempt is made to use the specified configuration, and if that is also missing, the default value remains. Defaults in the specified configuration will override any previous defaults. Errors from both the value and the specified configuration are accumulated.
- final def redacted: ConfigValue[F, A]
Returns a new ConfigValue with sensitive details redacted from error messages.
Returns a new ConfigValue with sensitive details redacted from error messages.
Using
.redacted
is equivalent to using.secret.map(_.value)
, except without requiring aShow
instance. - final def resource[G[x] >: F[x]](implicit G: Async[G]): Resource[G, A]
Returns a
Resource
with the specified effect type which loads the configuration value. - final def secret(implicit show: Show[A]): ConfigValue[F, Secret[A]]
Returns a new ConfigValue which treats the value like it might contain sensitive details.
Returns a new ConfigValue which treats the value like it might contain sensitive details.
Sensitive details are redacted from error messages. The value is wrapped in Secret, which prevents the value from being shown.
Using
.secret
is equivalent to using.redacted.map(Secret(_))
. - final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def useOnceSecret(implicit ev: <:<[A, Array[Char]]): ConfigValue[F, UseOnceSecret]
Returns a new ConfigValue which treats the value as a secret which can only be used once.
Returns a new ConfigValue which treats the value as a secret which can only be used once.
Sensitive details are redacted from error messages. The value is wrapped in UseOnceSecret which prevents multiple accesses to the secret and which nullifies the secret once it has been used.
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)