@zio.dev/zio-blocks 0.0.55 → 0.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/guides/async-getting-started.md +1 -1
  2. package/guides/query-dsl-extending.md +1 -1
  3. package/guides/query-dsl-fluent-builder.md +1 -1
  4. package/guides/query-dsl-reified-optics.md +1 -1
  5. package/guides/query-dsl-sql.md +1 -1
  6. package/guides/telemetry-guide.md +3 -3
  7. package/guides/zio-schema-migration.md +6 -6
  8. package/index.md +58 -34
  9. package/package.json +1 -1
  10. package/reference/async.md +2 -2
  11. package/reference/chunk.md +3 -3
  12. package/reference/codegen/index.md +1 -1
  13. package/reference/combinators.md +4 -4
  14. package/reference/config/config-source.md +2 -2
  15. package/reference/config/formats.md +3 -3
  16. package/reference/config/index.md +7 -7
  17. package/reference/config/rollout.md +1 -1
  18. package/reference/context.md +1 -1
  19. package/reference/data-migration.md +1 -1
  20. package/reference/datastar/index.md +2 -2
  21. package/reference/datastar.md +2 -2
  22. package/reference/docs.md +2 -2
  23. package/reference/endpoint/endpoint.md +1 -0
  24. package/reference/endpoint/index.md +4 -4
  25. package/reference/html.md +2 -2
  26. package/reference/htmx/index.md +2 -2
  27. package/reference/http-model/model.md +2 -2
  28. package/reference/http-model/schema-codecs.md +1 -1
  29. package/reference/http-model/schema.md +2 -2
  30. package/reference/jwt.md +1 -1
  31. package/reference/maybe.md +2 -2
  32. package/reference/media-type.md +2 -2
  33. package/reference/mux.mdx +2 -2
  34. package/reference/openapi.md +3 -3
  35. package/reference/projection.md +3 -3
  36. package/reference/resource-management/index.md +1 -1
  37. package/reference/resource-management/resource.md +2 -2
  38. package/reference/resource-management/scope.md +1 -1
  39. package/reference/resource-management/wire.md +2 -2
  40. package/reference/ringbuffer/index.mdx +2 -2
  41. package/reference/schema/built-in-codecs/avro.md +2 -2
  42. package/reference/schema/built-in-codecs/bson.md +9 -9
  43. package/reference/schema/built-in-codecs/csv.md +2 -2
  44. package/reference/schema/built-in-codecs/json/index.md +2 -2
  45. package/reference/schema/built-in-codecs/json/json.md +1 -0
  46. package/reference/schema/built-in-codecs/messagepack.md +3 -3
  47. package/reference/schema/built-in-codecs/thrift.md +2 -2
  48. package/reference/schema/built-in-codecs/toon.md +3 -3
  49. package/reference/schema/built-in-codecs/yaml.md +2 -2
  50. package/reference/schema/codec.md +10 -10
  51. package/reference/schema/dynamic-schema.md +3 -3
  52. package/reference/schema/schema-evolution/as.md +4 -4
  53. package/reference/schema/schema-evolution/into.md +2 -2
  54. package/reference/schema/schema-expr.md +2 -2
  55. package/reference/schema/type-class-derivation.md +1 -1
  56. package/reference/smithy.md +1 -1
  57. package/reference/sql/db-codec-deriver.md +3 -3
  58. package/reference/sql/db-codec.md +11 -11
  59. package/reference/sql/db-con.md +4 -4
  60. package/reference/sql/db-connection.md +1 -1
  61. package/reference/sql/db-tx.md +2 -2
  62. package/reference/sql/ddl.md +1 -1
  63. package/reference/sql/index.md +6 -6
  64. package/reference/sql/repo.md +5 -5
  65. package/reference/sql/sql-dialect.md +1 -1
  66. package/reference/sql/sql-logger.md +1 -1
  67. package/reference/sql/sql-name-mapper.md +3 -3
  68. package/reference/sql/table-metadata.md +3 -3
  69. package/reference/sql/table.md +10 -10
  70. package/reference/sql/transactor-zio.md +1 -1
  71. package/reference/sql/transactor.md +8 -8
  72. package/reference/sql-zio.md +2 -2
  73. package/reference/streams/core/pipeline.md +17 -17
  74. package/reference/streams/core/sink.md +4 -4
  75. package/reference/streams/core/stream.md +3 -3
  76. package/reference/streams/execution-and-compatibility/async-execution.md +1 -1
  77. package/reference/streams/index.md +3 -3
  78. package/reference/streams/primitives/reader.md +25 -25
  79. package/reference/streams/primitives/writer.md +18 -18
  80. package/reference/telemetry/index.md +3 -3
  81. package/reference/telemetry/otel/index.md +1 -1
  82. package/sidebars.js +261 -219
  83. package/reference/mux.md +0 -254
@@ -633,7 +633,7 @@ import zio.blocks.streams.*
633
633
  import java.io.ByteArrayInputStream
634
634
 
635
635
  val data = new ByteArrayInputStream("Hello".getBytes)
636
- // data: ByteArrayInputStream = java.io.ByteArrayInputStream@2c6b522e
636
+ // data: ByteArrayInputStream = java.io.ByteArrayInputStream@461f0ea1
637
637
  val bytes = Stream.fromInputStream(data)
638
638
  // bytes: Stream[IOException, Byte] = Stream.fromAcquireRelease(...)
639
639
  val result = bytes.runCollect
@@ -659,7 +659,7 @@ import zio.blocks.streams.*
659
659
  import java.io.StringReader
660
660
 
661
661
  val reader = new StringReader("hello world")
662
- // reader: StringReader = java.io.StringReader@e4d1116
662
+ // reader: StringReader = java.io.StringReader@1f2290ef
663
663
  val stream = Stream.fromJavaReader(reader)
664
664
  // stream: Stream[IOException, Char] = Stream.fromAcquireRelease(...)
665
665
  val result = stream.runCollect
@@ -2494,7 +2494,7 @@ import zio.blocks.streams.*
2494
2494
  val nums = Stream(1, 2, 3, 4, 5)
2495
2495
  // nums: Stream[Nothing, Int] = Stream(1, 2, 3, 4, 5)
2496
2496
  val pipe = Pipeline.filter((x: Int) => x > 2).andThen(Pipeline.map((x: Int) => x * 10))
2497
- // pipe: Pipeline[Int, Int] = zio.blocks.streams.Pipeline$Composed@34830fae
2497
+ // pipe: Pipeline[Int, Int] = zio.blocks.streams.Pipeline$Composed@7f645c3b
2498
2498
  val result = nums.via(pipe).runCollect
2499
2499
  // result: Either[Nothing, Chunk[Int]] = Right(IndexedSeq(30, 40, 50))
2500
2500
  ```
@@ -36,7 +36,7 @@ Every asynchronous addition follows one naming convention: the synchronous name
36
36
  The streams module carries the asynchronous effect type with it — `zio-blocks-streams` depends on `zio-blocks-async`, so one coordinate is all you add:
37
37
 
38
38
  ```scala
39
- libraryDependencies += "dev.zio" %%% "zio-blocks-streams" % "0.0.55"
39
+ libraryDependencies += "dev.zio" %%% "zio-blocks-streams" % "0.0.56"
40
40
  ```
41
41
 
42
42
  Use `%%%` in a cross-built project so the same line resolves for both JVM and Scala.js; `%%` is enough for a JVM-only build.
@@ -48,13 +48,13 @@ val result = stream.take(5).runCollect
48
48
  Add the Streams module to your SBT build:
49
49
 
50
50
  ```scala
51
- libraryDependencies += "dev.zio" %% "zio-blocks-streams" % "0.0.55"
51
+ libraryDependencies += "dev.zio" %% "zio-blocks-streams" % "0.0.56"
52
52
  ```
53
53
 
54
54
  For Scala.js (JavaScript/Node.js):
55
55
 
56
56
  ```scala
57
- libraryDependencies += "dev.zio" %%% "zio-blocks-streams" % "0.0.55"
57
+ libraryDependencies += "dev.zio" %%% "zio-blocks-streams" % "0.0.56"
58
58
  ```
59
59
 
60
60
  Supported Scala versions: 2.13.x and 3.x.
@@ -723,4 +723,4 @@ Stream.fromIterable(List("10", "abc", "-3", "7", "0", "25"))
723
723
  - [Platform Differences](./execution-and-compatibility/platform-differences.md) -- which members exist on the JVM, on Scala.js, and on both
724
724
  - [Zero-Boxing Streams](./execution-and-compatibility/zero-boxing.md) -- the primitive lanes and how one is chosen
725
725
  - [Async](../async.md) -- the `Async` effect type the cross-platform terminals return
726
- - [Mux](../mux.md) -- coordinating many keyed streams over one shared transport
726
+ - [Mux](../mux.mdx) -- coordinating many keyed streams over one shared transport
@@ -76,7 +76,7 @@ import zio.blocks.chunk.Chunk
76
76
  import scala.collection.mutable.Buffer
77
77
 
78
78
  val r = Reader.fromChunk(Chunk(1, 2, 3, 4, 5))
79
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@56d06418
79
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@72d71007
80
80
  val collected = Buffer[Int]()
81
81
  // collected: Buffer[Int] = ArrayBuffer(1, 2, 3, 4, 5)
82
82
 
@@ -260,7 +260,7 @@ Here's how to create and use a closed reader:
260
260
  import zio.blocks.streams.io.Reader
261
261
 
262
262
  val r = Reader.closed
263
- // r: SyncReader[Nothing] = zio.blocks.streams.io.Reader$ClosedReader$@4dad5488
263
+ // r: SyncReader[Nothing] = zio.blocks.streams.io.Reader$ClosedReader$@37ab4fcf
264
264
  println(r.isClosed) // true
265
265
  // true
266
266
  println(r.read(-1)) // -1 (the sentinel)
@@ -286,7 +286,7 @@ import zio.blocks.chunk.Chunk
286
286
  val chunk = Chunk(10, 20, 30)
287
287
  // chunk: Chunk[Int] = IndexedSeq(10, 20, 30)
288
288
  val r = Reader.fromChunk(chunk)
289
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@31de1289
289
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@61eb43ca
290
290
 
291
291
  def drain(): Unit = {
292
292
  val v = r.read(-1)
@@ -318,7 +318,7 @@ import zio.blocks.streams.io.Reader
318
318
  val list = List("a", "b", "c")
319
319
  // list: List[String] = List("a", "b", "c")
320
320
  val r = Reader.fromIterable(list)
321
- // r: SyncReader[String] = zio.blocks.streams.io.Reader$FromIterable@555aefcc
321
+ // r: SyncReader[String] = zio.blocks.streams.io.Reader$FromIterable@58ab88aa
322
322
 
323
323
  def drain(): Unit = {
324
324
  val v = r.read(null)
@@ -348,7 +348,7 @@ Create a reader from a range and drain the integers:
348
348
  import zio.blocks.streams.io.Reader
349
349
 
350
350
  val r = Reader.fromRange(1 to 5)
351
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromRange@57d0e296
351
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromRange@28012030
352
352
 
353
353
  def drain(): Unit = {
354
354
  val v = r.read(-1)
@@ -757,7 +757,7 @@ Create and read from a single-element reference-type reader with a custom sentin
757
757
  import zio.blocks.streams.io.Reader
758
758
 
759
759
  val r = Reader.single("hello")
760
- // r: SyncReader[String] = zio.blocks.streams.io.Reader$SingletonGeneric@2d6a8112
760
+ // r: SyncReader[String] = zio.blocks.streams.io.Reader$SingletonGeneric@65f1d92c
761
761
  val sentinel = "END"
762
762
  // sentinel: String = "END"
763
763
  println(r.read(sentinel)) // hello
@@ -772,7 +772,7 @@ For primitive types, use the specialized factory and read methods. `SyncReader#r
772
772
  import zio.blocks.streams.io.Reader
773
773
 
774
774
  val r = Reader.singleInt(100)
775
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$SingletonPrim@7e37e60c
775
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$SingletonPrim@63751c80
776
776
  val sentinel = Long.MinValue
777
777
  // sentinel: Long = -9223372036854775808L
778
778
  val v1 = r.readInt(sentinel)
@@ -801,7 +801,7 @@ Create an infinite reader that repeatedly emits the same value:
801
801
  import zio.blocks.streams.io.Reader
802
802
 
803
803
  val r = Reader.repeat(1)
804
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$SingletonPrim@60b1fa62
804
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$SingletonPrim@5003d04d
805
805
 
806
806
  def drainN(n: Int): Unit = {
807
807
  if (n > 0) {
@@ -845,7 +845,7 @@ import zio.blocks.streams.io.Reader
845
845
  val r = Reader.unfold(1) { s =>
846
846
  if (s > 3) None else Some((s, s + 1))
847
847
  }
848
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$Unfold@57b73038
848
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$Unfold@28e9841a
849
849
 
850
850
  def drain(): Unit = {
851
851
  val v = r.read(-1)
@@ -914,7 +914,7 @@ import zio.blocks.streams.io.Reader
914
914
  import zio.blocks.chunk.Chunk
915
915
 
916
916
  val r = Reader.fromChunk(Chunk(10, 20))
917
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@39ee3e03
917
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@2cb36210
918
918
  val v1 = r.read(-1) // 10
919
919
  // v1: Int = 10
920
920
  val v2 = r.read(-1) // 20
@@ -990,7 +990,7 @@ import zio.blocks.streams.io.Reader
990
990
  import zio.blocks.chunk.Chunk
991
991
 
992
992
  val r = Reader.fromChunk(Chunk(10, 20, 30))
993
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@137fc020
993
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@412d60e3
994
994
  val sentinel = Long.MinValue
995
995
  // sentinel: Long = -9223372036854775808L
996
996
 
@@ -1021,9 +1021,9 @@ import java.io.ByteArrayInputStream
1021
1021
  val bytes = Array[Byte](72, 101, 108, 108, 111) // Hello in ASCII bytes
1022
1022
  // bytes: Array[Byte] = Array(72, 101, 108, 108, 111)
1023
1023
  val is = new ByteArrayInputStream(bytes)
1024
- // is: ByteArrayInputStream = java.io.ByteArrayInputStream@640950b
1024
+ // is: ByteArrayInputStream = java.io.ByteArrayInputStream@5196ddfa
1025
1025
  val r = Reader.fromInputStream(is)
1026
- // r: SyncReader[Byte] = zio.blocks.streams.io.Reader$InputStreamReader@76c1d83a
1026
+ // r: SyncReader[Byte] = zio.blocks.streams.io.Reader$InputStreamReader@795c948d
1027
1027
 
1028
1028
  def drainBytes(): Unit = {
1029
1029
  val b = r.readByte()
@@ -1074,9 +1074,9 @@ import java.io.ByteArrayInputStream
1074
1074
  val bytes = Array[Byte](72, 101, 108, 108, 111) // The word Hello
1075
1075
  // bytes: Array[Byte] = Array(72, 101, 108, 108, 111)
1076
1076
  val is = new ByteArrayInputStream(bytes)
1077
- // is: ByteArrayInputStream = java.io.ByteArrayInputStream@7b76b6d9
1077
+ // is: ByteArrayInputStream = java.io.ByteArrayInputStream@267e1357
1078
1078
  val r = Reader.fromInputStream(is)
1079
- // r: SyncReader[Byte] = zio.blocks.streams.io.Reader$InputStreamReader@43a74358
1079
+ // r: SyncReader[Byte] = zio.blocks.streams.io.Reader$InputStreamReader@13a2b7a2
1080
1080
 
1081
1081
  val buffer = new Array[Byte](3)
1082
1082
  // buffer: Array[Byte] = Array(108, 111, 108)
@@ -1156,7 +1156,7 @@ import zio.blocks.streams.io.Reader
1156
1156
  import zio.blocks.chunk.Chunk
1157
1157
 
1158
1158
  val r = Reader.fromChunk(Chunk(10, 20, 30))
1159
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@27eaf89c
1159
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@71f34e37
1160
1160
  val all = r.readAll()
1161
1161
  // all: Chunk[Int] = IndexedSeq(10, 20, 30)
1162
1162
  println(all) // Chunk(10,20,30)
@@ -1226,7 +1226,7 @@ import zio.blocks.streams.io.Reader
1226
1226
  import zio.blocks.chunk.Chunk
1227
1227
 
1228
1228
  val r = Reader.fromChunk(Chunk(1, 2))
1229
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@51d94e24
1229
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@289d0f41
1230
1230
  println(r.readable()) // true
1231
1231
  // true
1232
1232
  r.read(-1)
@@ -1395,11 +1395,11 @@ import zio.blocks.streams.io.Reader
1395
1395
  import zio.blocks.chunk.Chunk
1396
1396
 
1397
1397
  val r1 = Reader.fromChunk(Chunk(1, 2))
1398
- // r1: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@71d55ad4
1398
+ // r1: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@21bb3acc
1399
1399
  val r2 = Reader.fromChunk(Chunk(3, 4))
1400
- // r2: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@135b9e72
1400
+ // r2: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@883375
1401
1401
  val combined = r1 ++ r2
1402
- // combined: SyncReader[Int] = zio.blocks.streams.io.Reader$ConcatReader@4d6fb94b
1402
+ // combined: SyncReader[Int] = zio.blocks.streams.io.Reader$ConcatReader@10f054e8
1403
1403
 
1404
1404
  def drain(): Unit = {
1405
1405
  val v = combined.read(-1)
@@ -1463,7 +1463,7 @@ val r = Reader.fromChunk(Chunk(1, 2)).withRelease { () =>
1463
1463
  cleanupRef += "cleaned"
1464
1464
  println("Cleaned up")
1465
1465
  }
1466
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$SyncReader$$anon$3@219c510b
1466
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$SyncReader$$anon$3@a88df6f
1467
1467
 
1468
1468
  r.close()
1469
1469
  // Cleaned up
@@ -1494,7 +1494,7 @@ import zio.blocks.streams.io.Reader
1494
1494
  import zio.blocks.chunk.Chunk
1495
1495
 
1496
1496
  val r = Reader.fromChunk(Chunk(1, 2, 3, 4, 5))
1497
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@3a51e8e2
1497
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@1cff5dd5
1498
1498
  val handled = r.setSkip(2)
1499
1499
  // handled: Boolean = true
1500
1500
  println(s"Skip handled natively: $handled")
@@ -1537,7 +1537,7 @@ import zio.blocks.streams.io.Reader
1537
1537
  import zio.blocks.chunk.Chunk
1538
1538
 
1539
1539
  val r = Reader.fromChunk(Chunk(1, 2, 3, 4, 5))
1540
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@39b592b4
1540
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@305462a2
1541
1541
  val handled = r.setLimit(3)
1542
1542
  // handled: Boolean = true
1543
1543
  println(s"Limit handled natively: $handled")
@@ -1579,7 +1579,7 @@ Set repeat mode so a reader restarts instead of closing. Not every reader can do
1579
1579
  import zio.blocks.streams.io.Reader
1580
1580
 
1581
1581
  val r = Reader.single(1)
1582
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$SingletonPrim@1157068a
1582
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$SingletonPrim@6f7050db
1583
1583
  val handled = r.setRepeat()
1584
1584
  // handled: Boolean = true
1585
1585
  println(s"Repeat handled natively: $handled")
@@ -1626,7 +1626,7 @@ import zio.blocks.streams.io.Reader
1626
1626
  import zio.blocks.chunk.Chunk
1627
1627
 
1628
1628
  val r = Reader.fromChunk(Chunk(1, 2, 3))
1629
- // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@6fbde88a
1629
+ // r: SyncReader[Int] = zio.blocks.streams.io.Reader$FromChunkInt@43a3be3c
1630
1630
  println(r.read(-1)) // 1
1631
1631
  // 1
1632
1632
  r.reset()
@@ -63,7 +63,7 @@ val w = new Writer[Int] {
63
63
  override def fail(error: Throwable) = close()
64
64
  override def writeable() = !isClosed
65
65
  }
66
- // w: Writer[Int] = repl.MdocSession$MdocApp0$$anon$2@33edb4e
66
+ // w: Writer[Int] = repl.MdocSession$MdocApp0$$anon$2@6cb38411
67
67
 
68
68
  // Push elements, checking writeable() before each write
69
69
  def pushAll(elements: List[Int]): Unit = {
@@ -91,7 +91,7 @@ The fundamental protocol is: call `write(element)` to push an element. It return
91
91
  import zio.blocks.streams.io.Writer
92
92
 
93
93
  val w = Writer.single[Int]
94
- // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@4505afa6
94
+ // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@2086fd7a
95
95
  println(s"First write: ${w.write(42)}") // true (accepted)
96
96
  // First write: true
97
97
  println(s"Second write: ${w.write(99)}") // false (writer auto-closed after one element)
@@ -200,7 +200,7 @@ class ErrorStoringWriter extends Writer[Int] {
200
200
  }
201
201
 
202
202
  val w = new ErrorStoringWriter()
203
- // w: ErrorStoringWriter = repl.MdocSession$MdocApp9$ErrorStoringWriter@3c6ebbb9
203
+ // w: ErrorStoringWriter = repl.MdocSession$MdocApp9$ErrorStoringWriter@2cf0305a
204
204
  w.fail(new Exception("Stream error"))
205
205
  try {
206
206
  w.write(42) // throws the stored error
@@ -232,7 +232,7 @@ Create a pre-closed writer that rejects all writes:
232
232
  import zio.blocks.streams.io.Writer
233
233
 
234
234
  val w = Writer.closed
235
- // w: Writer[Any] = zio.blocks.streams.io.Writer$$anon$1@4596ff1b
235
+ // w: Writer[Any] = zio.blocks.streams.io.Writer$$anon$1@475df1d1
236
236
  println(w.write(42)) // false (closed)
237
237
  // false
238
238
  println(w.isClosed) // true
@@ -255,7 +255,7 @@ Create a writer that accepts exactly one element, then auto-closes:
255
255
  import zio.blocks.streams.io.Writer
256
256
 
257
257
  val w = Writer.single[Int]
258
- // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@2bcb877a
258
+ // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@1959620c
259
259
  println(w.write(42)) // true
260
260
  // true
261
261
  println(w.write(99)) // false (already accepted one element)
@@ -291,10 +291,10 @@ val inner = new Writer[Int] {
291
291
  def write(a: Int) = { collected += a; true }
292
292
  def close() = ()
293
293
  }
294
- // inner: Writer[Int] = repl.MdocSession$MdocApp19$$anon$23@5ac5be8b
294
+ // inner: Writer[Int] = repl.MdocSession$MdocApp19$$anon$23@31c126b0
295
295
 
296
296
  val limited = Writer.limited(inner, 2)
297
- // limited: Writer[Int] = zio.blocks.streams.io.Writer$LimitedWriter@4eafb19a
297
+ // limited: Writer[Int] = zio.blocks.streams.io.Writer$LimitedWriter@2c2c5703
298
298
  println(limited.write(1)) // true
299
299
  // true
300
300
  println(limited.write(2)) // true (space available)
@@ -345,7 +345,7 @@ Write elements and observe the return value indicating success or closure:
345
345
  import zio.blocks.streams.io.Writer
346
346
 
347
347
  val w = Writer.single[Int]
348
- // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@3e9febfe
348
+ // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@40fc0d5d
349
349
  val result1 = w.write(42)
350
350
  // result1: Boolean = true
351
351
  val result2 = w.write(99) // false, already closed
@@ -371,7 +371,7 @@ import zio.blocks.streams.io.Writer
371
371
  import zio.blocks.chunk.Chunk
372
372
 
373
373
  val w = Writer.single[Int]
374
- // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@51958c7
374
+ // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@3d1c8bf6
375
375
  val chunk = Chunk(1, 2, 3)
376
376
  // chunk: Chunk[Int] = IndexedSeq(1, 2, 3)
377
377
  val remaining = w.writeAll(chunk)
@@ -482,7 +482,7 @@ Check writer capacity before writing:
482
482
  import zio.blocks.streams.io.Writer
483
483
 
484
484
  val w = Writer.single[Int]
485
- // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@fda0482
485
+ // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@71a80be
486
486
  println(w.writeable()) // true
487
487
  // true
488
488
  w.write(42)
@@ -529,17 +529,17 @@ val w1 = new Writer[Int] {
529
529
  }
530
530
  def close() = ()
531
531
  }
532
- // w1: Writer[Int] = repl.MdocSession$MdocApp32$$anon$43@3790ae1
532
+ // w1: Writer[Int] = repl.MdocSession$MdocApp32$$anon$43@2b669ef3
533
533
 
534
534
  val w2 = new Writer[Int] {
535
535
  def isClosed = false
536
536
  def write(a: Int) = { collected += a * 10; true }
537
537
  def close() = ()
538
538
  }
539
- // w2: Writer[Int] = repl.MdocSession$MdocApp32$$anon$45@15d5ddc2
539
+ // w2: Writer[Int] = repl.MdocSession$MdocApp32$$anon$45@30a331ff
540
540
 
541
541
  val combined = w1 ++ w2
542
- // combined: Writer[Int] = zio.blocks.streams.io.Writer$ConcatWith@48fab02c
542
+ // combined: Writer[Int] = zio.blocks.streams.io.Writer$ConcatWith@21dd14f1
543
543
  combined.write(5)
544
544
  // res33: Boolean = true
545
545
  combined.write(20) // first writer rejects, switches to second
@@ -568,10 +568,10 @@ val stringWriter = new Writer[String] {
568
568
  def write(a: String) = { println(s"Writing: $a"); true }
569
569
  def close() = ()
570
570
  }
571
- // stringWriter: Writer[String] = repl.MdocSession$MdocApp36$$anon$51@18c962ec
571
+ // stringWriter: Writer[String] = repl.MdocSession$MdocApp36$$anon$51@31113f62
572
572
 
573
573
  val intWriter = stringWriter.contramap[Int](_.toString)
574
- // intWriter: Writer[Int] = zio.blocks.streams.io.Writer$Contramapped@285a433
574
+ // intWriter: Writer[Int] = zio.blocks.streams.io.Writer$Contramapped@6a721b4f
575
575
  intWriter.write(42) // Prints: Writing: 42
576
576
  // Writing: 42
577
577
  // res37: Boolean = true
@@ -607,7 +607,7 @@ Close a writer with an error:
607
607
  import zio.blocks.streams.io.Writer
608
608
 
609
609
  val w = Writer.single[Int]
610
- // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@2d919436
610
+ // w: Writer[Int] = zio.blocks.streams.io.Writer$SingleWriter@11dd645a
611
611
  w.write(42)
612
612
  // res39: Boolean = true
613
613
  w.fail(new RuntimeException("Error"))
@@ -630,11 +630,11 @@ val numberWriter = new Writer[Number] {
630
630
  def write(a: Number) = { println(s"Number: $a"); true }
631
631
  def close() = ()
632
632
  }
633
- // numberWriter: Writer[Number] = repl.MdocSession$MdocApp42$$anon$59@5cb55db1
633
+ // numberWriter: Writer[Number] = repl.MdocSession$MdocApp42$$anon$59@4a564d3b
634
634
 
635
635
  // numberWriter is also a Writer[IntNum] due to contravariance
636
636
  val intNumWriter: Writer[IntNum] = numberWriter
637
- // intNumWriter: Writer[IntNum] = repl.MdocSession$MdocApp42$$anon$59@5cb55db1
637
+ // intNumWriter: Writer[IntNum] = repl.MdocSession$MdocApp42$$anon$59@4a564d3b
638
638
  intNumWriter.write(IntNum(42))
639
639
  // Number: IntNum(42)
640
640
  // res43: Boolean = true
@@ -43,16 +43,16 @@ Modern services produce three distinct kinds of observability data. Traces captu
43
43
 
44
44
  ```scala
45
45
  // Core: logging, tracing, metrics
46
- libraryDependencies += "dev.zio" %% "zio-blocks-telemetry" % "0.0.55"
46
+ libraryDependencies += "dev.zio" %% "zio-blocks-telemetry" % "0.0.56"
47
47
 
48
48
  // Optional: OTLP JSON export over HTTP (JVM only)
49
- libraryDependencies += "dev.zio" %% "zio-blocks-telemetry-otel" % "0.0.55"
49
+ libraryDependencies += "dev.zio" %% "zio-blocks-telemetry-otel" % "0.0.56"
50
50
  ```
51
51
 
52
52
  For Scala.js (telemetry core only):
53
53
 
54
54
  ```scala
55
- libraryDependencies += "dev.zio" %%% "zio-blocks-telemetry" % "0.0.55"
55
+ libraryDependencies += "dev.zio" %%% "zio-blocks-telemetry" % "0.0.56"
56
56
  ```
57
57
 
58
58
  Supports Scala 2.13.x and 3.x.
@@ -18,7 +18,7 @@ It also carries trace context *between* processes. A trace that stops at your se
18
18
  Add the module to your build file:
19
19
 
20
20
  ```scala
21
- libraryDependencies += "dev.zio" %% "zio-blocks-telemetry-otel" % "0.0.55"
21
+ libraryDependencies += "dev.zio" %% "zio-blocks-telemetry-otel" % "0.0.56"
22
22
  ```
23
23
 
24
24
  ## Configuring the Endpoint and Batching