diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 92258ab..62e1da4 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -3,3 +3,6 @@ # Scala Steward: Reformat with scalafmt 3.7.0 65e04a3eeaf1b0f141e3a5ebbd40bd820b4f6f5d + +# Scala Steward: Reformat with scalafmt 3.7.17 +f93a6966c771e973e2a474ea36ffbb922291538f diff --git a/.scalafmt.conf b/.scalafmt.conf index 22af2dd..5be3359 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,4 +1,4 @@ -version = 3.7.16 +version = 3.7.17 runner.dialect = scala213source3 style = defaultWithAlign diff --git a/build.sbt b/build.sbt index 23bf045..e504cd0 100644 --- a/build.sbt +++ b/build.sbt @@ -34,8 +34,7 @@ lazy val commonSettings = Seq( Deps.scalatest.value % Test :: Nil, scalacOptions --= Seq("-Wconf:any&src=src_managed/.*"), - - libraryDependencies ++= (if (isDotty.value) Nil + libraryDependencies ++= (if (isDotty.value) Nil else Seq( compilerPlugin(("org.typelevel" %% "kind-projector" % "0.13.2").cross(CrossVersion.full)), @@ -43,7 +42,7 @@ lazy val commonSettings = Seq( ) lazy val jsSettings = Seq( - useYarn := true, + useYarn := true, ) lazy val core = project diff --git a/lambdaHttpApiTapir/src/main/scala/helper/DocServer.scala b/lambdaHttpApiTapir/src/main/scala/helper/DocServer.scala index c1e326e..7634ad2 100644 --- a/lambdaHttpApiTapir/src/main/scala/helper/DocServer.scala +++ b/lambdaHttpApiTapir/src/main/scala/helper/DocServer.scala @@ -1,10 +1,10 @@ package funstack.lambda.http.api.tapir.helper +import io.circe.Encoder import io.circe.syntax._ import net.exoego.facade.aws_lambda._ import sttp.apispec.{SecurityRequirement, Tag} -import sttp.apispec.openapi.{Info, PathItem, ReferenceOr, Server} -import sttp.apispec.openapi.circe._ +import sttp.apispec.openapi.{Info, OpenAPI, PathItem, ReferenceOr, Server} import sttp.tapir.docs.openapi.{OpenAPIDocsInterpreter, OpenAPIDocsOptions} import sttp.tapir.server.ServerEndpoint import sttp.tapir.{EndpointInfoOps, EndpointMetaOps} @@ -20,6 +20,7 @@ case class DocInfo( security: List[SecurityRequirement] = Nil, swaggerUIOptions: js.Object = js.Object(), filterEndpoints: EndpointInfoOps[_] with EndpointMetaOps => Boolean = _ => true, + openApiVersion: Option[String] = None, ) object DocInfo { def default = DocInfo(title = "API", version = "latest") @@ -29,6 +30,11 @@ object DocInfo { object DocServer { + private def openApiEncoder(version: String): Encoder[OpenAPI] = version match { + case "3.0.3" => sttp.apispec.openapi.circe_openapi_3_0_3.encoderOpenAPI + case _ => sttp.apispec.openapi.circe.encoderOpenAPI + } + private def result(body: String, contentType: String): APIGatewayProxyStructuredResultV2 = APIGatewayProxyStructuredResultV2( statusCode = 200, body = body, @@ -45,10 +51,13 @@ object DocServer { Some(result(html, "text/html")) case List("openapi.json") => - val openapi = OpenAPIDocsInterpreter(docInfo.options) + val openapiBase = OpenAPIDocsInterpreter(docInfo.options) .serverEndpointsToOpenAPI[F](endpoints.filter(docInfo.filterEndpoints), docInfo.info) .copy(tags = docInfo.tags, webhooks = docInfo.webhooks, servers = docInfo.servers, security = docInfo.security) - val json = openapi.asJson.spaces2SortKeys + + val openapi = docInfo.openApiVersion.fold(openapiBase)(version => openapiBase.copy(openapi = version)) + + val json = openapi.asJson(openApiEncoder(openapi.openapi)).spaces2SortKeys Some(result(json, "application/json")) case _ => None diff --git a/lambdaWsEventAuthorizer/src/main/scala/Handler.scala b/lambdaWsEventAuthorizer/src/main/scala/Handler.scala index 2db1759..fb88ddd 100644 --- a/lambdaWsEventAuthorizer/src/main/scala/Handler.scala +++ b/lambdaWsEventAuthorizer/src/main/scala/Handler.scala @@ -111,7 +111,7 @@ object Handler { val router = routerf(request) val result: Future[Boolean] = ServerMessageSerdes.deserialize(record.Sns.Message) match { - case Right(n: Notification[SubscriptionEvent@unchecked]) => + case Right(n: Notification[SubscriptionEvent @unchecked]) => val (a, b, arg) = n.event.subscriptionKey.split("/") match { case Array(a, b) => (a, b, "") case Array(a, b, arg) => (a, b, arg) @@ -129,8 +129,8 @@ object Handler { } case Left(error) => Future.failed(new Exception(s"Deserialization Error - ${error}")) } - case Right(s) => Future.failed(new Exception(s"Unexpected event body: $s")) - case Left(error) => Future.failed(new Exception(s"Deserialization Error - ${error}")) + case Right(s) => Future.failed(new Exception(s"Unexpected event body: $s")) + case Left(error) => Future.failed(new Exception(s"Deserialization Error - ${error}")) } result.flatMap { diff --git a/project/Deps.scala b/project/Deps.scala index 1e795dd..6b3b23b 100644 --- a/project/Deps.scala +++ b/project/Deps.scala @@ -35,7 +35,7 @@ object Deps { // sttp val apiSpec = new { - val version = "0.7.0" + val version = "0.7.1" val circe = s("com.softwaremill.sttp.apispec" %%% "openapi-circe" % version) } diff --git a/project/plugins.sbt b/project/plugins.sbt index 6fa0e06..60cc215 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -7,6 +7,6 @@ addSbtPlugin("org.scalablytyped.converter" % "sbt-converter" % "1.0.0 // sane scalac options addSbtPlugin("org.typelevel" % "sbt-tpolecat" % "0.5.0") -addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.10") +addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.12") addSbtPlugin("com.thoughtworks.sbt-scala-js-map" % "sbt-scala-js-map" % "4.1.1")