-
Notifications
You must be signed in to change notification settings - Fork 533
/
Derivation.scala
56 lines (48 loc) · 2.35 KB
/
Derivation.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package io.circe
import scala.compiletime.constValue
import scala.deriving.Mirror
import Predef.genericArrayOps
import cats.data.{ NonEmptyList, Validated }
import io.circe.derivation._
@deprecated(since = "0.14.4")
object Derivation {
inline final def summonLabels[T <: Tuple]: Array[String] = summonLabelsRec[T].toArray
inline final def summonDecoders[T <: Tuple]: Array[Decoder[_]] =
derivation.summonDecoders[T](using Configuration.default).toArray
inline final def summonEncoders[T <: Tuple]: Array[Encoder[_]] =
derivation.summonEncoders[T](using Configuration.default).toArray
inline final def summonEncoder[A]: Encoder[A] = derivation.summonEncoder[A](using Configuration.default)
inline final def summonDecoder[A]: Decoder[A] = derivation.summonDecoder[A](using Configuration.default)
inline final def summonLabelsRec[T <: Tuple]: List[String] = derivation.summonLabels[T]
inline final def summonDecodersRec[T <: Tuple]: List[Decoder[_]] =
derivation.summonDecoders[T](using Configuration.default)
inline final def summonEncodersRec[T <: Tuple]: List[Encoder[_]] =
derivation.summonEncoders[T](using Configuration.default)
}
@deprecated(since = "0.14.4")
private[circe] trait DerivedInstance
@deprecated(since = "0.14.4")
private[circe] trait DerivedEncoder
@deprecated(since = "0.14.4")
private[circe] trait DerivedDecoder
private[circe] trait EncoderDerivation:
inline final def derived[A](using inline A: Mirror.Of[A]): Encoder.AsObject[A] =
ConfiguredEncoder.derived[A](using Configuration.default)
inline final def derivedConfigured[A](using
inline A: Mirror.Of[A],
inline configuration: Configuration
): Encoder.AsObject[A] =
ConfiguredEncoder.derived[A]
private[circe] trait DecoderDerivation:
inline final def derived[A](using inline A: Mirror.Of[A]): Decoder[A] =
ConfiguredDecoder.derived[A](using Configuration.default)
inline final def derivedConfigured[A](using inline A: Mirror.Of[A], inline configuration: Configuration): Decoder[A] =
ConfiguredDecoder.derived[A]
private[circe] trait CodecDerivation:
inline final def derived[A](using inline A: Mirror.Of[A]): Codec.AsObject[A] =
ConfiguredCodec.derived[A](using Configuration.default)
inline final def derivedConfigured[A](using
inline A: Mirror.Of[A],
inline configuration: Configuration
): Codec.AsObject[A] =
ConfiguredCodec.derived[A]