Skip to content

Commit

Permalink
Release 1.0.0-M5
Browse files Browse the repository at this point in the history
  • Loading branch information
adamw committed Mar 29, 2022
1 parent 14d0d70 commit 22c7235
Show file tree
Hide file tree
Showing 26 changed files with 97 additions and 65 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ tapir documentation is available at [tapir.softwaremill.com](http://tapir.softwa
Add the following dependency:

```sbt
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.0-M5"
```

Partial unification is now enabled by default from Scala 2.13. However, if you're using Scala 2.12 or older, then
Expand Down
4 changes: 2 additions & 2 deletions doc/docs/openapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
To generate OpenAPI documentation and expose it using the Swagger UI in a single step, first add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.0-M5"
```

Then, you can interpret a list of endpoints, as server endpoints exposing the Swagger UI, using `SwaggerInterpreter`.
Expand Down Expand Up @@ -46,7 +46,7 @@ for details.
Similarly as above, you'll need the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.0-M5"
```

And the server endpoints can be generated using the `sttp.tapir.redoc.bundle.RedocInterpreter` class.
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/client/http4s.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-http4s-client" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-http4s-client" % "1.0.0-M5"
```

To interpret an endpoint definition as an `org.http4s.Request[F]`, import:
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/client/play.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-play-client" % "1.0.0-M5"
```

To make requests using an endpoint definition using the [play client](https://github.com/playframework/play-ws), import:
Expand Down
4 changes: 2 additions & 2 deletions generated-doc/out/client/sttp.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-sttp-client" % "1.0.0-M5"
```

To make requests using an endpoint definition using the [sttp client](https://github.com/softwaremill/sttp), import:
Expand Down Expand Up @@ -82,7 +82,7 @@ In this case add the following dependencies (note the [`%%%`](https://www.scala-
instead of the usual `%%`):

```scala
"com.softwaremill.sttp.tapir" %%% "tapir-sttp-client" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %%% "tapir-sttp-client" % "1.0.0-M5"
"io.github.cquiroz" %%% "scala-java-time" % "2.2.0" // implementations of java.time classes for Scala.JS
```

Expand Down
4 changes: 2 additions & 2 deletions generated-doc/out/docs/asyncapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
To use, add the following dependencies:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-circe-yaml" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-docs" % "1.0.0-M5"
"com.softwaremill.sttp.tapir" %% "tapir-asyncapi-circe-yaml" % "1.0.0-M5"
```

Tapir contains a case class-based model of the asyncapi data structures in the `asyncapi/asyncapi-model` subproject (the
Expand Down
12 changes: 6 additions & 6 deletions generated-doc/out/docs/openapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
To generate OpenAPI documentation and expose it using the Swagger UI in a single step, first add the dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui-bundle" % "1.0.0-M5"
```

Then, you can interpret a list of endpoints, as server endpoints exposing the Swagger UI, using `SwaggerInterpreter`.
Expand Down Expand Up @@ -46,7 +46,7 @@ for details.
Similarly as above, you'll need the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-redoc-bundle" % "1.0.0-M5"
```

And the server endpoints can be generated using the `sttp.tapir.redoc.bundle.RedocInterpreter` class.
Expand All @@ -56,8 +56,8 @@ And the server endpoints can be generated using the `sttp.tapir.redoc.bundle.Red
To generate the docs in the OpenAPI yaml format, add the following dependencies:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-openapi-circe-yaml" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-openapi-docs" % "1.0.0-M5"
"com.softwaremill.sttp.tapir" %% "tapir-openapi-circe-yaml" % "1.0.0-M5"
```

Tapir contains a case class-based model of the openapi data structures in the `openapi/openapi-model` subproject (the
Expand Down Expand Up @@ -193,12 +193,12 @@ The modules `tapir-swagger-ui` and `tapir-redoc` contain server endpoint definit
yaml format, will expose it using the given context path. To use, add as a dependency either
`tapir-swagger-ui`:
```scala
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-swagger-ui" % "1.0.0-M5"
```

or `tapir-redoc`:
```scala
"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-redoc" % "1.0.0-M5"
```

Then, you'll need to pass the server endpoints to your server interpreter. For example, using akka-http:
Expand Down
12 changes: 7 additions & 5 deletions generated-doc/out/endpoint/integrations.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The `tapir-cats` module contains additional instances for some [cats](https://ty
datatypes as well as additional syntax:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-cats" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-cats" % "1.0.0-M5"
```

- `import sttp.tapir.integ.cats.codec._` - brings schema, validator and codec instances
Expand All @@ -18,7 +18,7 @@ If you use [refined](https://github.com/fthomas/refined), the `tapir-refined` mo
validators for `T Refined P` as long as a codec for `T` already exists:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-refined" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-refined" % "1.0.0-M5"
```

You'll need to extend the `sttp.tapir.codec.refined.TapirCodecRefined`
Expand All @@ -39,7 +39,7 @@ The `tapir-enumeratum` module provides schemas, validators and codecs for [Enume
enumerations. To use, add the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-enumeratum" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-enumeratum" % "1.0.0-M5"
```

Then, `import sttp.tapir.codec.enumeratum`, or extends the `sttp.tapir.codec.enumeratum.TapirCodecEnumeratum` trait.
Expand Down Expand Up @@ -71,13 +71,15 @@ object Color extends Enumeration with EnumHelper {
}
```

Tapir `Schema` for any `Enumeration.Value` can also be auto or semi-auto derived using `import sttp.tapir.generic.auto._` or `Schema.derivedEnumerationValue`.

## NewType integration

If you use [scala-newtype](https://github.com/estatico/scala-newtype), the `tapir-newtype` module will provide implicit codecs and
schemas for a types with a `@newtype` and `@newsubtype` annotations as long as a codec and schema for its underlying value already exists:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-newtype" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-newtype" % "1.0.0-M5"
```

Then, `import sttp.tapir.codec.newtype._`, or extend the `sttp.tapir.codec.enumeratum.TapirCodecNewType` trait to bring the implicit values into scope.
Expand All @@ -89,7 +91,7 @@ For details refer to [derevo documentation](https://github.com/tofu-tf/derevo#in
To use, add the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-derevo" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-derevo" % "1.0.0-M5"
```

Then you can derive schema for your ADT along with other typeclasses besides ADT declaration itself:
Expand Down
16 changes: 8 additions & 8 deletions generated-doc/out/endpoint/json.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ the json codec that is in scope.
To use Circe, add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-json-circe" % "1.0.0-M5"
```

Next, import the package (or extend the `TapirJsonCirce` trait, see [MyTapir](../mytapir.md)):
Expand Down Expand Up @@ -91,7 +91,7 @@ Now the above JSON object will render as
To use µPickle add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-upickle" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-json-upickle" % "1.0.0-M5"
```

Next, import the package (or extend the `TapirJsonuPickle` trait, see [MyTapir](../mytapir.md) and add `TapirJsonuPickle` not `TapirCirceJson`):
Expand Down Expand Up @@ -126,7 +126,7 @@ For more examples, including making a custom encoder/decoder, see [TapirJsonuPic
To use Play JSON add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-json-play" % "1.0.0-M5"
```

Next, import the package (or extend the `TapirJsonPlay` trait, see [MyTapir](../mytapir.md) and add `TapirJsonPlay` not `TapirCirceJson`):
Expand All @@ -142,7 +142,7 @@ Play JSON requires `Reads` and `Writes` implicit values in scope for each type y
To use Spray JSON add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-spray" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-json-spray" % "1.0.0-M5"
```

Next, import the package (or extend the `TapirJsonSpray` trait, see [MyTapir](../mytapir.md) and add `TapirJsonSpray` not `TapirCirceJson`):
Expand All @@ -158,7 +158,7 @@ Spray JSON requires a `JsonFormat` implicit value in scope for each type you wan
To use Tethys JSON add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-tethys" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-json-tethys" % "1.0.0-M5"
```

Next, import the package (or extend the `TapirJsonTethys` trait, see [MyTapir](../mytapir.md) and add `TapirJsonTethys` not `TapirCirceJson`):
Expand All @@ -174,7 +174,7 @@ Tethys JSON requires `JsonReader` and `JsonWriter` implicit values in scope for
To use [Jsoniter-scala](https://github.com/plokhotnyuk/jsoniter-scala) add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-jsoniter-scala" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-jsoniter-scala" % "1.0.0-M5"
```

Next, import the package (or extend the `TapirJsonJsoniter` trait, see [MyTapir](../mytapir.md) and add `TapirJsonJsoniter` not `TapirCirceJson`):
Expand All @@ -191,7 +191,7 @@ Jsoniter Scala requires `JsonValueCodec` implicit value in scope for each type y
To use [json4s](https://github.com/json4s/json4s) add the following dependencies to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-json4s" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-json-json4s" % "1.0.0-M5"
```

And one of the implementations:
Expand Down Expand Up @@ -222,7 +222,7 @@ implicit val formats: Formats = org.json4s.jackson.Serialization.formats(NoTypeH
To use Zio JSON, add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-json-zio" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-json-zio" % "1.0.0-M5"
```
Next, import the package (or extend the `TapirJsonZio` trait, see [MyTapir](../mytapir.md) and add `TapirJsonZio` instead of `TapirCirceJson`):

Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/generator/sbt-openapi-codegen.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
Add the sbt plugin to the `project/plugins.sbt`:

```scala
addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "1.0.0-M4")
addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "1.0.0-M5")
```

Enable the plugin for your project in the `build.sbt`:
Expand Down
8 changes: 8 additions & 0 deletions generated-doc/out/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@ Tapir is available:
* selected modules (core; http4s, vertx, netty, aws servers; sttp and http4s clients; openapi; some js and datatype integrations) - Scala 3 on the JVM
* selected modules (aws server; sttp client; some js and datatype integrations) - Scala 2.12, 2.13 and 3 using Scala.JS.

## ⚠️ April 2022: Building an adopters page

Is your company already using tapir? We're building an "adopters" section in the documentation, and the more the merrier! It would be great to feature your company's logo, but in order to do that, we'll need written permission to avoid any legal misunderstandings.

Please email us at [[email protected]](mailto:[email protected]) from your company's email with a link to your logo (if we can use it, of course!) or with details who to kindly ask for permission to feature the logo in tapir's documentation. We'll handle the rest.

We're seeing tapir's download numbers going steadily up; as we're nearing 1.0, the additional confidence boost for newcomers will help us to build tapir's ecosystem and make it thrive. Thank you! :)

## Code teaser

```scala
Expand Down
16 changes: 15 additions & 1 deletion generated-doc/out/migrating.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,25 @@

* in custom server interpreters, the `RejectInterecptor` must be now disabled explicitly using `RejectInterceptor.disableWhenSingleEndpoint` when a single endpoint is being interpreted; the `ServerInterpreter` no longer knows about all endpoints, as it is now parametrised with a function which gives the potentially matching endpoints, given a `ServerRequest`
* the names of Prometheus and OpenTelemetry metrics have changed; there are now three metrics (requests active, total and duration), instead of the previous 4 (requests active, total, response total and duration). Moreover, the request duration metric includes an additional label - phase (either headers or body), measuring how long it takes to create the headers or the body.
* `CustomInterceptors.appendInterceptor` is replaced with `.prependInterceptor` and `.appendInterceptor` methods.
* `RequestHandler`, returned by `RequestInterceptor`, now also accepts a list of server endpoints. This allows to dynamically filter the endpoints. Moreover, there's a new type parameter in `RequestInterceptor` and `RequestHandler`, `R`, specifying the capabilities required by the given server endpoints.

### Moved traits, classes, objects

* server interpreters & interceptors have moved from `core` into the `server/core` module
* `ServerResponse` and `ValuedEndpointOutput` are moved to `sttp.tapir.server.model`
* metrics classes and interceptors have moved to the `sttp.tapir.server.metrics` package
* `Endpoint.renderPathTemplate` is renamed to `Endpoint.showPathTemplate`
* web socket exceptions `UnsupportedWebSocketFrameException` and `WebSocketFrameDecodeFailure` are now in the `sttp.tapir.model` package
* web socket exceptions `UnsupportedWebSocketFrameException` and `WebSocketFrameDecodeFailure` are now in the `sttp.tapir.model` package

## From 0.19 to 0.20

See the [release notes](https://github.com/softwaremill/tapir/releases/tag/v0.20.0)

## From 0.18 to 0.19

See the [release notes](https://github.com/softwaremill/tapir/releases/tag/v0.19.0)

## From 0.17 to 0.18

See the [release notes](https://github.com/softwaremill/tapir/releases/tag/v0.18.0)
2 changes: 1 addition & 1 deletion generated-doc/out/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
To use tapir, add the following dependency to your project:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-core" % "1.0.0-M5"
```

This will import only the core classes needed to create endpoint descriptions. To generate a server or a client, you
Expand Down
4 changes: 2 additions & 2 deletions generated-doc/out/server/akkahttp.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ To expose an endpoint as an [akka-http](https://doc.akka.io/docs/akka-http/curre
dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.0-M5"
```

This will transitively pull some Akka modules in version 2.6. If you want to force
your own Akka version (for example 2.5), use sbt exclusion. Mind the Scala version in artifact name:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.0-M4" exclude("com.typesafe.akka", "akka-stream_2.12")
"com.softwaremill.sttp.tapir" %% "tapir-akka-http-server" % "1.0.0-M5" exclude("com.typesafe.akka", "akka-stream_2.12")
```

Now import the object:
Expand Down
6 changes: 3 additions & 3 deletions generated-doc/out/server/armeria.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Armeria interpreter can be used with different effect systems (cats-effect, ZIO)

Add the following dependency
```scala
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server" % "1.0.0-M5"
```

and import the object:
Expand Down Expand Up @@ -75,7 +75,7 @@ Note that Armeria automatically injects an `ExecutionContext` on top of Armeria'

Add the following dependency
```scala
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-cats" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-cats" % "1.0.0-M5"
```
to use this interpreter with Cats Effect typeclasses.

Expand Down Expand Up @@ -154,7 +154,7 @@ val tapirService = ArmeriaCatsServerInterpreter(dispatcher).toService(streamingR
Add the following dependency

```scala
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-armeria-server-zio" % "1.0.0-M5"
```

to use this interpreter with ZIO.
Expand Down
6 changes: 3 additions & 3 deletions generated-doc/out/server/aws.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ To implement the Lambda function, a server interpreter is available, which takes
Currently, only an interpreter integrating with cats-effect is available (`AwsCatsEffectServerInterpreter`). To use, add the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-aws-lambda" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-aws-lambda" % "1.0.0-M5"
```

To configure API Gateway and the Lambda function, you can use:
Expand All @@ -24,8 +24,8 @@ To configure API Gateway and the Lambda function, you can use:
Add one of the following dependencies:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-aws-sam" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-aws-sam" % "1.0.0-M5"
"com.softwaremill.sttp.tapir" %% "tapir-aws-terraform" % "1.0.0-M5"
```

## Examples
Expand Down
4 changes: 2 additions & 2 deletions generated-doc/out/server/finatra.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ To expose an endpoint as an [finatra](https://twitter.github.io/finatra/) server
dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server" % "1.0.0-M5"
```

and import the object:
Expand All @@ -17,7 +17,7 @@ This interpreter supports the twitter `Future`.
Or, if you would like to use cats-effect project, you can add the following dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server-cats" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-finatra-server-cats" % "1.0.0-M5"
```

and import the object:
Expand Down
2 changes: 1 addition & 1 deletion generated-doc/out/server/http4s.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ To expose an endpoint as an [http4s](https://http4s.org) server, first add the f
dependency:

```scala
"com.softwaremill.sttp.tapir" %% "tapir-http4s-server" % "1.0.0-M4"
"com.softwaremill.sttp.tapir" %% "tapir-http4s-server" % "1.0.0-M5"
```

and import the object:
Expand Down
Loading

0 comments on commit 22c7235

Please sign in to comment.