izumi.distage.config.codec

Members list

Concise view

Type members

Classlikes

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes

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 f 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

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any

Attributes

Companion:
trait
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
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
Graph
Supertypes
class AnyVal
trait Matchable
class Any

Attributes

Companion:
class
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes

Attributes

Companion:
trait
Graph
Supertypes
class Object
trait Matchable
class Any
Self type