izumi.distage.config.codec

Members list

Type members

Classlikes

sealed trait ConfigMetaBasicType

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object TBigDecimal
object TBigInt
object TBigInteger
object TBoolean
object TByte
object TChar
object TChronoUnit
object TConfig
object TConfigList
object TConfigObject
object TConfigValue
object TDouble
object TDuration
object TFloat
object TInstant
object TInt
object TJavaDuration
object TLong
object TPath
object TPattern
object TPeriod
object TRegex
object TShort
object TString
object TURI
object TURL
object TUUID
object TYear
object TZoneId
object TZoneOffset
Show all

Attributes

Companion
trait
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type

Attributes

Companion
trait
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type
sealed trait ConfigMetaType

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
Known subtypes
class TBasic
class TCaseClass
class TList
class TMap
class TOption
class TSealedTrait
class TSet
class TUnknown
class TVariant
Show all
final case class ConfigMetaTypeId(owner: Option[String], short: String, typeArguments: Seq[ConfigMetaTypeId])

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
trait DIConfigMeta[T]

Type information for generated config codec, used to generate JSON Schemas for config in ConfigWriter role.

Type information for generated config codec, used to generate JSON Schemas for config in ConfigWriter role.

Attributes

See also
Companion
object
Supertypes
class Object
trait Matchable
class Any

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type
trait DIConfigReader[A]

Config reader that uses a pureconfig.ConfigReader implicit instance for a type to decode it from Typesafe Config.

Config reader that uses a pureconfig.ConfigReader implicit instance for a type to decode it from Typesafe Config.

Always automatically derives a codec if it's not available.

Automatic derivation will use camelCase fields, NOT kebab-case fields, as in default pureconfig. It also overrides pureconfig's default type field type discriminator for sealed traits, instead using a circe-like format with a single-key object.

Example:

 sealed trait AorB
 final case class A(a: Int) extends AorB
 final case class B(b: String) extends AorB

 final case class Config(values: List[AorB])

In config:

 config {
   values = [
     { A { a = 123 } },
     { B { b = cba } }
   ]
 }

Auto-derivation will work without importing pureconfig.generic.auto._ and without any other imports

You may use izumi.distage.config.codec.PureconfigAutoDerive if you want to use DIConfigReader's deriving strategy to derive a standalone pureconfig codec:

 final case class Abc(a: Duration, b: Regex, c: URL)

 object Abc {
   implicit val configReader: pureconfig.ConfigReader[Abc] =
     PureconfigAutoDerive[Abc]
 }

Attributes

Note

on Scala.js DIConfigReader uses io.circe.Decoder instances to decode JSON configs, not HOCON as on JVM

Companion
object
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes
object DIConfigMeta

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
final class MetaAutoDerive[A](val value: DIConfigMeta[A]) extends AnyVal

Attributes

Companion
object
Supertypes
class AnyVal
trait Matchable
class Any
object MetaInstances

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
final class PureconfigAutoDerive[A](val value: ConfigReader[A]) extends AnyVal

Derive pureconfig.ConfigReader for A and for its fields recursively with pureconfig-magnolia

Derive pureconfig.ConfigReader for A and for its fields recursively with pureconfig-magnolia

This differs from just using pureconfig.module.magnolia.auto.reader.exportReader by using different configuration, defined in PureconfigInstances, specifically:

  1. Field name remapping is disabled, camelCase fields will remain camelCase, not kebab-case
  2. Sealed traits are rendered as in circe, using a wrapper object with a single field, instead of using a type field. Example:
 sealed trait AorB
 final case class A(a: Int) extends AorB
 final case class B(b: String) extends AorB

 final case class Config(values: List[AorB])

in config:

 config {
   values = [
     { A { a = 123 } },
     { B { b = cba } }
   ]
 }

Attributes

Companion
object
Supertypes
class AnyVal
trait Matchable
class Any

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type