Transport

SystemOne talks HTTP through Transport. Live traffic is heddle on JVM, Scala.js (Node fetch), and Native. Tests use Transport.test.

Retry, status mapping, and JSON live in SystemOne, not in Transport. That is what keeps TestTransport honest.

val script = TestTransport.Script(HttpResponse(200, Map.empty, body))
SystemOne.evaluate(state, questions)
  .provide(Transport.test(script), ZLayer.succeed(cfg), SystemOne.layer)

Transport.heddle(client) injects an existing heddle Client.

JevError.TimedOut.message
request timed out