From fdf8756877f456b68a30c9d946070a6d7a3f4cb8 Mon Sep 17 00:00:00 2001 From: Julien Nicoulaud Date: Sat, 4 Nov 2023 11:22:02 +0100 Subject: [PATCH] remove scodec parts --- build.sbt | 18 +++++----- .../scala/common/iron/constraint/all.scala | 5 --- .../scala/common/iron/constraint/scodec.scala | 20 ----------- .../src/main/scala/common/scodec/codecs.scala | 36 ------------------- modules/api/src/main/scala/common/types.scala | 24 +++---------- 5 files changed, 13 insertions(+), 90 deletions(-) delete mode 100644 modules/api/src/main/scala/common/iron/constraint/all.scala delete mode 100644 modules/api/src/main/scala/common/iron/constraint/scodec.scala delete mode 100644 modules/api/src/main/scala/common/scodec/codecs.scala diff --git a/build.sbt b/build.sbt index 74afa31..d61802f 100644 --- a/build.sbt +++ b/build.sbt @@ -2,17 +2,15 @@ inThisBuild( scalaVersion := "3.3.1" ) -lazy val api = Project("api", file("modules/api")) +lazy val api = project.in(file("modules/api")) .settings( libraryDependencies ++= Seq( - "org.typelevel" %% "cats-core" % "2.10.0", - "com.softwaremill.sttp.tapir" %% "tapir-core" % "1.8.5", - "com.softwaremill.sttp.tapir" %% "tapir-iron" % "1.8.5", - "io.circe" %% "circe-core" % "0.14.6", - "org.scodec" %% "scodec-core" % "2.2.2", - "org.scodec" %% "scodec-bits" % "1.1.38", - "io.github.iltotore" %% "iron" % "2.3.0", - "io.github.iltotore" %% "iron-cats" % "2.3.0", - "io.github.iltotore" %% "iron-circe" % "2.3.0" + "org.typelevel" %% "cats-core" % "2.10.0", + "com.softwaremill.sttp.tapir" %% "tapir-core" % "1.8.5", + "com.softwaremill.sttp.tapir" %% "tapir-iron" % "1.8.5", + "io.circe" %% "circe-core" % "0.14.6", + "io.github.iltotore" %% "iron" % "2.3.0", + "io.github.iltotore" %% "iron-cats" % "2.3.0", + "io.github.iltotore" %% "iron-circe" % "2.3.0" ) ) diff --git a/modules/api/src/main/scala/common/iron/constraint/all.scala b/modules/api/src/main/scala/common/iron/constraint/all.scala deleted file mode 100644 index c747b92..0000000 --- a/modules/api/src/main/scala/common/iron/constraint/all.scala +++ /dev/null @@ -1,5 +0,0 @@ -package common.iron.constraint - -object all: - export scodec.* - export scodec.given diff --git a/modules/api/src/main/scala/common/iron/constraint/scodec.scala b/modules/api/src/main/scala/common/iron/constraint/scodec.scala deleted file mode 100644 index d949877..0000000 --- a/modules/api/src/main/scala/common/iron/constraint/scodec.scala +++ /dev/null @@ -1,20 +0,0 @@ -package common.iron.constraint - -import _root_.scodec.bits.ByteVector -import io.github.iltotore.iron.* -import io.github.iltotore.iron.compileTime.* -import io.github.iltotore.iron.constraint.all.* -import scala.compiletime.summonInline - -object scodec: - - type MinLengthL[V <: Long] = Length[GreaterEqual[V]] `DescribedAs` "Should have a minimum length of " + V - type MaxLengthL[V <: Long] = Length[LessEqual[V]] `DescribedAs` "Should have a maximum length of " + V - type FixedLengthL[V <: Long] = Length[StrictEqual[V]] `DescribedAs` "Should have an exact length of " + V - - class LengthByteVector[C, Impl <: Constraint[Long, C]](using Impl) extends Constraint[ByteVector, Length[C]]: - override inline def test(value: ByteVector): Boolean = summonInline[Impl].test(value.length) - override inline def message: String = "Length: (" + summonInline[Impl].message + ")" - - inline given lengthByteVector[C, Impl <: Constraint[Long, C]](using inline impl: Impl): LengthByteVector[C, Impl] = - new LengthByteVector diff --git a/modules/api/src/main/scala/common/scodec/codecs.scala b/modules/api/src/main/scala/common/scodec/codecs.scala deleted file mode 100644 index c389032..0000000 --- a/modules/api/src/main/scala/common/scodec/codecs.scala +++ /dev/null @@ -1,36 +0,0 @@ -package common.scodec - -import cats.Show -import common.circe.codecs.given -import common.tapir.syntax.* -import io.circe.Codec as CirceCodec -import io.circe.KeyDecoder as CirceKeyDecoder -import io.circe.KeyEncoder as CirceKeyEncoder -import scala.language.adhocExtensions -import scodec.bits.ByteVector -import sttp.tapir -import sttp.tapir.Codec.PlainCodec as TapirPlainCodec -import sttp.tapir.Codec as TapirCodec -import sttp.tapir.Schema as TapirSchema - -object codecs: - - trait ByteVectorCodecs: - protected val decode: String => Either[String, ByteVector] - protected val encode: ByteVector => String - - given CirceKeyDecoder[ByteVector] = decode(_).toOption - given CirceKeyEncoder[ByteVector] = encode(_) - given CirceCodec[ByteVector] = CirceCodec[String].iemap(decode)(encode) - given TapirPlainCodec[ByteVector] = TapirCodec.string.iemap(decode)(encode) - given TapirSchema[ByteVector] = TapirSchema.string - given Show[ByteVector] = encode(_) - - object ByteVectorCodecs: - trait Hex extends ByteVectorCodecs: - override final val decode: String => Either[String, ByteVector] = ByteVector.fromHexDescriptive(_) - override final val encode: ByteVector => String = _.toHex - - trait Base64 extends ByteVectorCodecs: - override final val decode: String => Either[String, ByteVector] = ByteVector.fromBase64Descriptive(_) - override final val encode: ByteVector => String = _.toBase64 diff --git a/modules/api/src/main/scala/common/types.scala b/modules/api/src/main/scala/common/types.scala index 8550c4e..6da0222 100644 --- a/modules/api/src/main/scala/common/types.scala +++ b/modules/api/src/main/scala/common/types.scala @@ -1,15 +1,9 @@ package common -import _root_.scodec.bits -import _root_.scodec.bits.ByteVector import cats.syntax.all.* import cats.Order import cats.Show import common.circe.codecs.given -import common.iron.constraint.all.* -import common.iron.constraint.all.given -import common.scodec.codecs.ByteVectorCodecs -import common.scodec.codecs.ByteVectorCodecs.Base64 import common.tapir.syntax.* import io.circe.Codec as CirceCodec import io.github.iltotore.iron.* @@ -20,19 +14,11 @@ import sttp.tapir.Codec.PlainCodec as TapirPlainCodec import sttp.tapir.Codec as TapirCodec import sttp.tapir.Schema as TapirSchema -private type PayloadConstraints = DescribedAs[MaxLengthL[1048576L], "Payload must be 1MB max"] -opaque type Payload = ByteVector :| PayloadConstraints -object Payload extends RefinedTypeOps[ByteVector, PayloadConstraints, Payload], Base64, TapirCodecIron: - given CirceCodec[Payload] = summon[CirceCodec[ByteVector]].iemap(either(_))(_.value) - given TapirPlainCodec[Payload] = summon[TapirPlainCodec[ByteVector]].iemap(either(_))(_.value) - given TapirSchema[Payload] = ironTypeSchema[ByteVector, PayloadConstraints] - given Show[Payload] = summon[Show[ByteVector]].contramap(_.value) - private type VersionConstraints = DescribedAs[GreaterEqual[0], "Version must be positive"] -opaque type Version = Int :| VersionConstraints +opaque type Version = Int :| VersionConstraints object Version extends RefinedTypeOps[Int, VersionConstraints, Version], TapirCodecIron: - given CirceCodec[Version] = summon[CirceCodec[Int]].iemap(either(_))(_.value) + given CirceCodec[Version] = summon[CirceCodec[Int]].iemap(either(_))(_.value) given TapirPlainCodec[Version] = summon[TapirPlainCodec[Int]].iemap(either(_))(_.value) - given TapirSchema[Version] = ironTypeSchema[Int, VersionConstraints] - given Order[Version] = Order.fromOrdering - given Show[Version] = summon[Show[Int]].contramap(_.value) + given TapirSchema[Version] = ironTypeSchema[Int, VersionConstraints] + given Order[Version] = Order.fromOrdering + given Show[Version] = summon[Show[Int]].contramap(_.value)