@zio.dev/zio-blocks 0.0.33 → 0.0.51

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 (150) hide show
  1. package/guides/compile-time-resource-safety-with-scope.md +16 -17
  2. package/guides/getting-started-with-mux.md +1507 -0
  3. package/guides/query-dsl-extending.md +161 -102
  4. package/guides/query-dsl-fluent-builder.md +217 -157
  5. package/guides/query-dsl-reified-optics.md +12 -10
  6. package/guides/query-dsl-sql.md +246 -165
  7. package/guides/telemetry-guide.md +1069 -0
  8. package/guides/zio-schema-migration.md +29 -22
  9. package/index.md +292 -50
  10. package/package.json +1 -1
  11. package/plans/config-follow-up-prs.md +188 -0
  12. package/plans/config-pr-assessment-roadmap.md +310 -0
  13. package/reference/MuxDataFlow.jsx +250 -0
  14. package/reference/async.md +651 -0
  15. package/reference/chunk.md +3533 -308
  16. package/reference/codegen/case-class.md +436 -0
  17. package/reference/codegen/emitter-config.md +383 -0
  18. package/reference/codegen/examples.md +664 -0
  19. package/reference/codegen/field.md +316 -0
  20. package/reference/codegen/index.md +317 -0
  21. package/reference/codegen/scala-emitter.md +392 -0
  22. package/reference/codegen/scala-file.md +276 -0
  23. package/reference/codegen/sealed-trait.md +408 -0
  24. package/reference/codegen/type-definition.md +340 -0
  25. package/reference/codegen/type-ref.md +201 -0
  26. package/reference/combinators.md +347 -117
  27. package/reference/config.md +158 -0
  28. package/reference/context.md +4 -4
  29. package/reference/datastar.md +346 -0
  30. package/reference/docs.md +1461 -345
  31. package/reference/endpoint/auth-type.md +146 -0
  32. package/reference/endpoint/endpoint.md +297 -0
  33. package/reference/endpoint/http-codec.md +249 -0
  34. package/reference/endpoint/index.md +825 -0
  35. package/reference/endpoint/path-codec.md +237 -0
  36. package/reference/endpoint/route-pattern.md +196 -0
  37. package/reference/endpoint/route-tree.md +111 -0
  38. package/reference/endpoint/segment-codec.md +212 -0
  39. package/reference/html.md +1120 -0
  40. package/reference/htmx/attribute-values.md +359 -0
  41. package/reference/htmx/hx-encoding.md +111 -0
  42. package/reference/htmx/hx-params.md +204 -0
  43. package/reference/htmx/hx-swap.md +276 -0
  44. package/reference/htmx/hx-sync.md +251 -0
  45. package/reference/htmx/hx-target.md +314 -0
  46. package/reference/htmx/hx-trigger.md +457 -0
  47. package/reference/htmx/hx-url-update.md +239 -0
  48. package/reference/htmx/index.md +855 -0
  49. package/reference/http-model/index.md +47 -0
  50. package/reference/http-model/model.md +1481 -0
  51. package/reference/http-model/schema.md +747 -0
  52. package/reference/maybe.md +826 -0
  53. package/reference/media-type.md +2 -2
  54. package/reference/mux.mdx +823 -0
  55. package/reference/openapi.md +1351 -0
  56. package/reference/resource-management/defer-handle.md +1 -1
  57. package/reference/resource-management/resource.md +31 -2
  58. package/reference/resource-management/scope.md +28 -12
  59. package/reference/resource-management/wire.md +3 -7
  60. package/reference/ringbuffer/MpmcDiagram.jsx +717 -0
  61. package/reference/ringbuffer/MpscDiagram.jsx +618 -0
  62. package/reference/ringbuffer/SpmcDiagram.jsx +680 -0
  63. package/reference/ringbuffer/SpscDiagram.jsx +677 -0
  64. package/reference/ringbuffer/advanced.mdx +109 -0
  65. package/reference/ringbuffer/index.mdx +145 -0
  66. package/reference/ringbuffer/mpmc.mdx +151 -0
  67. package/reference/ringbuffer/mpsc.mdx +132 -0
  68. package/reference/ringbuffer/spmc.mdx +108 -0
  69. package/reference/ringbuffer/spsc.mdx +344 -0
  70. package/reference/{allows.md → schema/allows.md} +4 -4
  71. package/reference/{binding-resolver.md → schema/binding-resolver.md} +1 -1
  72. package/reference/{binding.md → schema/binding.md} +2 -3
  73. package/reference/schema/built-in-codecs/avro.md +451 -0
  74. package/reference/schema/built-in-codecs/bson.md +480 -0
  75. package/reference/schema/built-in-codecs/csv.md +564 -0
  76. package/reference/schema/built-in-codecs/index.md +77 -0
  77. package/reference/schema/built-in-codecs/json/index.md +295 -0
  78. package/reference/schema/built-in-codecs/json/json-config.md +217 -0
  79. package/reference/{json-patch.md → schema/built-in-codecs/json/json-patch.md} +5 -5
  80. package/reference/{json-schema.md → schema/built-in-codecs/json/json-schema.md} +14 -47
  81. package/reference/schema/built-in-codecs/json/json-selection.md +322 -0
  82. package/reference/{json.md → schema/built-in-codecs/json/json.md} +32 -64
  83. package/reference/schema/built-in-codecs/messagepack.md +508 -0
  84. package/reference/schema/built-in-codecs/thrift.md +433 -0
  85. package/reference/schema/built-in-codecs/toon.md +1078 -0
  86. package/reference/{xml.md → schema/built-in-codecs/xml.md} +13 -9
  87. package/reference/schema/built-in-codecs/yaml.md +552 -0
  88. package/reference/{codec.md → schema/codec.md} +10 -10
  89. package/reference/{dynamic-optic.md → schema/dynamic-optic.md} +151 -5
  90. package/reference/{dynamic-schema.md → schema/dynamic-schema.md} +8 -8
  91. package/reference/schema/format.md +92 -0
  92. package/reference/schema/index.md +50 -0
  93. package/reference/schema/migration.md +297 -0
  94. package/reference/{modifier.md → schema/modifier.md} +58 -7
  95. package/reference/{optics.md → schema/optics.md} +2 -2
  96. package/reference/{patch.md → schema/patch.md} +1 -1
  97. package/{path-interpolator.md → reference/schema/path-interpolator.md} +165 -72
  98. package/reference/{schema-evolution → schema/schema-evolution}/as.md +8 -8
  99. package/reference/{schema-evolution → schema/schema-evolution}/index.md +2 -2
  100. package/reference/{schema-evolution → schema/schema-evolution}/into.md +8 -8
  101. package/reference/{schema-expr.md → schema/schema-expr.md} +110 -175
  102. package/reference/{schema.md → schema/schema.md} +12 -0
  103. package/reference/{structural-types.md → schema/structural-types.md} +1 -1
  104. package/reference/{type-class-derivation.md → schema/type-class-derivation.md} +63 -1
  105. package/reference/smithy.md +533 -0
  106. package/reference/sql/db-codec-deriver.md +71 -0
  107. package/reference/sql/db-codec.md +687 -0
  108. package/reference/sql/db-con.md +271 -0
  109. package/reference/sql/db-connection.md +153 -0
  110. package/reference/sql/db-param-writer.md +77 -0
  111. package/reference/sql/db-param.md +66 -0
  112. package/reference/sql/db-result-reader.md +146 -0
  113. package/reference/sql/db-tx.md +82 -0
  114. package/reference/sql/db-value.md +41 -0
  115. package/reference/sql/ddl.md +85 -0
  116. package/reference/sql/frag.md +254 -0
  117. package/reference/sql/index.md +341 -0
  118. package/reference/sql/repo.md +600 -0
  119. package/reference/sql/sql-dialect.md +73 -0
  120. package/reference/sql/sql-logger.md +62 -0
  121. package/reference/sql/sql-name-mapper.md +70 -0
  122. package/reference/sql/table-metadata.md +134 -0
  123. package/reference/sql/table.md +448 -0
  124. package/reference/sql/transactor-zio.md +399 -0
  125. package/reference/sql/transactor.md +353 -0
  126. package/reference/sql-zio.md +112 -0
  127. package/reference/streams/concurrent-operators.md +106 -0
  128. package/reference/streams/index.md +653 -0
  129. package/reference/streams/pipeline.md +718 -0
  130. package/reference/streams/reader.md +1284 -0
  131. package/reference/streams/scala-2-compatibility.md +55 -0
  132. package/reference/streams/sink.md +1426 -0
  133. package/reference/streams/stream.md +2526 -0
  134. package/reference/streams/writer.md +1045 -0
  135. package/reference/streams/zero-boxing.md +275 -0
  136. package/reference/telemetry.md +693 -0
  137. package/reference/typeid.md +5 -19
  138. package/sidebars.js +238 -43
  139. package/reference/formats.md +0 -694
  140. package/reference/http-model.md +0 -1716
  141. package/reference/streams.md +0 -989
  142. package/ringbuffer.md +0 -249
  143. /package/reference/{json-differ.md → schema/built-in-codecs/json/json-differ.md} +0 -0
  144. /package/reference/{dynamic-value.md → schema/dynamic-value.md} +0 -0
  145. /package/reference/{lazy.md → schema/lazy.md} +0 -0
  146. /package/reference/{reflect.md → schema/reflect.md} +0 -0
  147. /package/reference/{registers.md → schema/registers.md} +0 -0
  148. /package/reference/{schema-error.md → schema/schema-error.md} +0 -0
  149. /package/reference/{syntax.md → schema/syntax.md} +0 -0
  150. /package/reference/{validation.md → schema/validation.md} +0 -0
@@ -229,7 +229,7 @@ val result = Scope.global.scoped { scope =>
229
229
 
230
230
  ## See Also
231
231
 
232
- - [`Scope#defer`](./scope.md#registering-finalizers) — the method that returns a `DeferHandle`
232
+ - [`Scope#defer`](./scope.md#finalizer) — the method that returns a `DeferHandle`
233
233
  - [`Finalizer`](./finalizer.md) — the trait defining `Finalizer#defer`
234
234
  - [`Finalization`](./finalization.md) — the result of running all finalizers
235
235
 
@@ -36,13 +36,13 @@ Without Resources, managing complex initialization and cleanup is tedious and er
36
36
  Add the ZIO Blocks Scope module to your `build.sbt`:
37
37
 
38
38
  ```scala
39
- libraryDependencies += "dev.zio" %% "zio-blocks-scope" % "0.0.33"
39
+ libraryDependencies += "dev.zio" %% "zio-blocks-scope" % "0.0.51"
40
40
  ```
41
41
 
42
42
  For cross-platform (Scala.js):
43
43
 
44
44
  ```scala
45
- libraryDependencies += "dev.zio" %%% "zio-blocks-scope" % "0.0.33"
45
+ libraryDependencies += "dev.zio" %%% "zio-blocks-scope" % "0.0.51"
46
46
  ```
47
47
 
48
48
  Supported Scala versions: 2.13.x and 3.x.
@@ -608,6 +608,35 @@ implicit class ResourceOps[A](private val r: Resource[A]) {
608
608
  }
609
609
  ```
610
610
 
611
+ ### `Resource#use` — Acquire, Use, and Finalize
612
+
613
+ For top-level application code, `use` provides a lighter API than spelling out
614
+ `Scope.global.scoped` and `allocate` directly:
615
+
616
+ ```scala
617
+ trait Resource[+A] {
618
+ def use[B](f: A => B)(implicit ev: Unscoped[B]): B
619
+ }
620
+ ```
621
+
622
+ Example:
623
+
624
+ ```scala
625
+ import zio.blocks.scope._
626
+
627
+ class HttpServer extends AutoCloseable {
628
+ def start(): Unit = println("server started")
629
+ def close(): Unit = println("server stopped")
630
+ }
631
+
632
+ val serverResource = Resource.fromAutoCloseable(new HttpServer)
633
+
634
+ serverResource.use(_.start())
635
+ ```
636
+
637
+ `use` still creates a global scope under the hood, acquires the resource,
638
+ runs the callback, and guarantees finalization when the callback returns.
639
+
611
640
  To allocate a resource and use its value inside a scope:
612
641
 
613
642
  ```scala
@@ -55,7 +55,7 @@ If you've used `try/finally`, `Using`, or ZIO's `Scope`, this is the same proble
55
55
  Add the following dependency to your `build.sbt`:
56
56
 
57
57
  ```scala
58
- libraryDependencies += "dev.zio" %% "zio-blocks-scope" % "0.0.33"
58
+ libraryDependencies += "dev.zio" %% "zio-blocks-scope" % "0.0.51"
59
59
  ```
60
60
 
61
61
  Supported Scala versions: **2.13.x** and **3.x**.
@@ -811,24 +811,40 @@ final class App(service: UserService) {
811
811
 
812
812
  // Wire describes the dependency graph: App -> UserService -> Database -> Config
813
813
  // Resource.from uses the Wire to automatically construct the entire graph
814
- Scope.global.scoped { scope =>
815
- import scope._
816
- val config = Config("jdbc:postgres://localhost/db")
817
- val app = allocate(Resource.from[App](
818
- Wire(config)
819
- ))
820
- $(app)(_.run())
821
- // All resources (Database, App) clean up automatically in reverse order
822
- }
814
+ val config = Config("jdbc:postgres://localhost/db")
815
+ val appResource = Resource.from[App](
816
+ Wire(config)
817
+ )
818
+
819
+ appResource.use(_.run())
820
+ // All resources (Database, App) clean up automatically in reverse order
823
821
  ```
824
822
 
825
823
  For more details on `Wire` sharing strategies, resource composition, and advanced DI patterns, see the [Wire reference](./wire.md) and [Resource reference](./resource.md).
826
824
 
827
825
  ## Best Practices
828
826
 
829
- ### Entry point pattern — use `Scope.global.scoped` at the top level
827
+ ### Entry point pattern — use `Resource#use` for app startup, `Scope.global.scoped` for manual scope control
828
+
829
+ For application entrypoints, prefer the lighter `Resource#use` API when you
830
+ have a root resource:
831
+
832
+ ```scala
833
+ import zio.blocks.scope._
834
+
835
+ class App {
836
+ def run(): Unit = println("running")
837
+ }
838
+
839
+ val appResource: Resource[App] = Resource(new App)
840
+
841
+ appResource.use(_.run())
842
+ ```
843
+
844
+ Reach for `Scope.global.scoped` directly when you need manual control over
845
+ multiple allocations, child scopes, lowering, or explicit `$` access.
830
846
 
831
- Wrap your entire application's resource acquisition in a single lexical scope:
847
+ That lower-level form still looks like this:
832
848
 
833
849
  ```scala
834
850
  import zio.blocks.scope._
@@ -92,13 +92,13 @@ Scope.global.scoped { scope =>
92
92
  Add the following dependency to your `build.sbt`:
93
93
 
94
94
  ```scala
95
- libraryDependencies += "dev.zio" %% "zio-blocks-scope" % "0.0.33"
95
+ libraryDependencies += "dev.zio" %% "zio-blocks-scope" % "0.0.51"
96
96
  ```
97
97
 
98
98
  For cross-platform (Scala.js):
99
99
 
100
100
  ```scala
101
- libraryDependencies += "dev.zio" %%% "zio-blocks-scope" % "0.0.33"
101
+ libraryDependencies += "dev.zio" %%% "zio-blocks-scope" % "0.0.51"
102
102
  ```
103
103
 
104
104
  Supported Scala versions: 2.13.x and 3.x.
@@ -496,11 +496,7 @@ val appResource: Resource[App] = Resource.from[App](
496
496
  Wire(AppConfig("jdbc:postgres://localhost/db"))
497
497
  )
498
498
 
499
- Scope.global.scoped { scope =>
500
- import scope._
501
- val app = allocate(appResource)
502
- $(app)(_.run())
503
- }
499
+ appResource.use(_.run())
504
500
  ```
505
501
 
506
502
  When `Resource.from` composes wires, it respects the sharing strategy: