Skip to content

Commit c12cb6c

Browse files
author
runner
committed
updated site
1 parent 179f3c1 commit c12cb6c

File tree

8 files changed

+96
-96
lines changed

8 files changed

+96
-96
lines changed

latest/snapshot/distage/advanced-features.html

Lines changed: 35 additions & 35 deletions
Large diffs are not rendered by default.

latest/snapshot/distage/basics.html

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ <h3><a href="#hello-world-example" name="hello-world-example" class="anchor"><sp
341341
<pre class="prettyprint"><code class="language-scala">import distage.{Activation, Injector, Roots}
342342

343343
val injector = Injector[Task]()
344-
// injector: Injector[Task] = izumi.distage.InjectorDefaultImpl@34e0f059
344+
// injector: Injector[Task] = izumi.distage.InjectorDefaultImpl@5bd9d9db
345345

346346
val plan = injector.plan(HelloByeModule, Roots.target[HelloByeApp], Activation.empty).getOrThrow()
347347
// plan: izumi.distage.model.plan.Plan = 1: {type.MdocSession::MdocApp1::Greeter} BindingOrigin((basics.md:84)) := call(π:Constructor(): MdocSession::MdocApp1::PrintGreeter) {}
@@ -359,7 +359,7 @@ <h3><a href="#hello-world-example" name="hello-world-example" class="anchor"><sp
359359
// Interpret into a Lifecycle value
360360

361361
val resource = injector.produce(plan)
362-
// resource: izumi.distage.model.definition.package.Lifecycle[Task, izumi.distage.model.Locator] = izumi.functional.lifecycle.LifecycleMethodImpls$$anon$2@14010e23
362+
// resource: izumi.distage.model.definition.package.Lifecycle[Task, izumi.distage.model.Locator] = izumi.functional.lifecycle.LifecycleMethodImpls$$anon$2@5ac9efc0
363363

364364
// Use the object graph:
365365
// After `.use` exits, all objects will be deallocated,
@@ -369,12 +369,12 @@ <h3><a href="#hello-world-example" name="hello-world-example" class="anchor"><sp
369369
objects =&gt;
370370
objects.get[HelloByeApp].run
371371
}
372-
// effect: Task[Unit] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff676a94b0@4cee1c8f)
372+
// effect: Task[Unit] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff685112b0@6b4052e4)
373373

374374
// Run the resulting program
375375

376376
val runner = UnsafeRun2.createZIO()
377-
// runner: UnsafeRun2.ZIORunner[Any] = izumi.functional.bio.UnsafeRun2$ZIORunner@193e10c
377+
// runner: UnsafeRun2.ZIORunner[Any] = izumi.functional.bio.UnsafeRun2$ZIORunner@ce4edd5
378378

379379
runner.unsafeRun(effect)
380380
// What&#39;s your name?
@@ -639,14 +639,14 @@ <h2><a href="#resource-bindings-lifecycle" name="resource-bindings-lifecycle" cl
639639
println(&quot;Connecting to DB!&quot;)
640640
new DBConnection
641641
})(release = _ =&gt; IO(println(&quot;Disconnecting DB&quot;)))
642-
// dbResource: Resource[IO, DBConnection] = Allocate(cats.effect.kernel.Resource$$$Lambda/0x00007fff68612018@6a8bf726)
642+
// dbResource: Resource[IO, DBConnection] = Allocate(cats.effect.kernel.Resource$$$Lambda/0x00007fff68624328@71871753)
643643

644644
val mqResource = Resource.make(
645645
acquire = IO {
646646
println(&quot;Connecting to Message Queue!&quot;)
647647
new MessageQueueConnection
648648
})(release = _ =&gt; IO(println(&quot;Disconnecting Message Queue&quot;)))
649-
// mqResource: Resource[IO, MessageQueueConnection] = Allocate(cats.effect.kernel.Resource$$$Lambda/0x00007fff68612018@14502f50)
649+
// mqResource: Resource[IO, MessageQueueConnection] = Allocate(cats.effect.kernel.Resource$$$Lambda/0x00007fff68624328@4de960a2)
650650

651651
class MyApp(
652652
db: DBConnection,
@@ -670,7 +670,7 @@ <h2><a href="#resource-bindings-lifecycle" name="resource-bindings-lifecycle" cl
670670
Injector[IO]()
671671
.produce(module, Roots.target[MyApp])
672672
}
673-
// objectGraphResource: izumi.distage.model.definition.package.Lifecycle[IO, izumi.distage.model.Locator] = izumi.functional.lifecycle.LifecycleMethodImpls$$anon$2@7dd89465
673+
// objectGraphResource: izumi.distage.model.definition.package.Lifecycle[IO, izumi.distage.model.Locator] = izumi.functional.lifecycle.LifecycleMethodImpls$$anon$2@27801f1b
674674

675675
objectGraphResource
676676
.use(_.get[MyApp].run)
@@ -711,7 +711,7 @@ <h2><a href="#resource-bindings-lifecycle" name="resource-bindings-lifecycle" cl
711711
init
712712
}
713713
// true
714-
// closedInit: Init = repl.MdocSession$MdocApp21$Init@5f2c3f4c
714+
// closedInit: Init = repl.MdocSession$MdocApp21$Init@6e39f0de
715715

716716
println(closedInit.initialized)
717717
// false
@@ -815,7 +815,7 @@ <h2><a href="#out-of-the-box-typeclass-instances" name="out-of-the-box-typeclass
815815
//val monixHello = polymorphicHelloWorld[monix.eval.Task]
816816

817817
val zioHello = polymorphicHelloWorld[zio.IO[Throwable, _]]
818-
// zioHello: zio.ZIO[Any, Throwable, Unit] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff676a94b0@621eff30)
818+
// zioHello: zio.ZIO[Any, Throwable, Unit] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff685112b0@652f6caa)
819819

820820
//val monixBioHello = polymorphicHelloWorld[monix.bio.IO[Throwable, _]]
821821
</code></pre>
@@ -891,7 +891,7 @@ <h2><a href="#set-bindings" name="set-bindings" class="anchor"><span class="anch
891891
// wire the graph and get the app
892892

893893
val app = Injector().produceGet[App](AppModule).unsafeGet()
894-
// app: App = repl.MdocSession$MdocApp26$App$Impl@1b89ef0c
894+
// app: App = repl.MdocSession$MdocApp26$App$Impl@75e39e26
895895

896896
// check how it works
897897

@@ -1041,12 +1041,12 @@ <h2><a href="#effect-bindings" name="effect-bindings" class="anchor"><span class
10411041
res2 &lt;- kv.get(&quot;apple&quot;)
10421042
} yield res1 + res2
10431043
}
1044-
// io: Task[String] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff676a94b0@209e4226)
1044+
// io: Task[String] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff685112b0@70821f34)
10451045

10461046
import izumi.functional.bio.UnsafeRun2
10471047

10481048
val runtime = UnsafeRun2.createZIO()
1049-
// runtime: UnsafeRun2.ZIORunner[Any] = izumi.functional.bio.UnsafeRun2$ZIORunner@69a123
1049+
// runtime: UnsafeRun2.ZIORunner[Any] = izumi.functional.bio.UnsafeRun2$ZIORunner@678ee355
10501050

10511051
runtime.unsafeRun(io)
10521052
// res38: String = pieipad
@@ -1115,10 +1115,10 @@ <h2><a href="#zio-environment-bindings" name="zio-environment-bindings" class="a
11151115
// using service functions from everywhere
11161116

11171117
val hello: URIO[Hello, String] = ZIO.serviceWithZIO(_.hello)
1118-
// hello: URIO[Hello, String] = Stateful(repl.MdocSession.MdocApp39.hello(basics.md:921),zio.FiberRef$unsafe$PatchFiber$$Lambda/0x00007fff675e78a8@307d305d)
1118+
// hello: URIO[Hello, String] = Stateful(repl.MdocSession.MdocApp39.hello(basics.md:921),zio.FiberRef$unsafe$PatchFiber$$Lambda/0x00007fff685c8f68@6b3279b7)
11191119

11201120
val world: URIO[World, String] = ZIO.serviceWithZIO(_.world)
1121-
// world: URIO[World, String] = Stateful(repl.MdocSession.MdocApp39.world(basics.md:924),zio.FiberRef$unsafe$PatchFiber$$Lambda/0x00007fff675e78a8@32de09f5)
1121+
// world: URIO[World, String] = Stateful(repl.MdocSession.MdocApp39.world(basics.md:924),zio.FiberRef$unsafe$PatchFiber$$Lambda/0x00007fff685c8f68@2cd40b20)
11221122

11231123
// service implementations
11241124

@@ -1131,7 +1131,7 @@ <h2><a href="#zio-environment-bindings" name="zio-environment-bindings" class="a
11311131
val hello = ZIO.succeed(&quot;Hello&quot;)
11321132
}
11331133
}
1134-
// makeHello: ZIO[Any with Any with zio.Scope, java.io.IOException, AnyRef with Hello{val hello: zio.ZIO[Any,Nothing,String]}] = FlatMap(repl.MdocSession.MdocApp39.makeHello(basics.md:929),DynamicNoBox(repl.MdocSession.MdocApp39.makeHello(basics.md:931),1,zio.ZIO$$Lambda/0x00007fff6866fa38@37e3c4d4),zio.ZIO$$Lambda/0x00007fff67449f00@227a0cef)
1134+
// makeHello: ZIO[Any with Any with zio.Scope, java.io.IOException, AnyRef with Hello{val hello: zio.ZIO[Any,Nothing,String]}] = FlatMap(repl.MdocSession.MdocApp39.makeHello(basics.md:929),DynamicNoBox(repl.MdocSession.MdocApp39.makeHello(basics.md:931),1,zio.ZIO$$Lambda/0x00007fff68686158@2f0ecc5e),zio.ZIO$$Lambda/0x00007fff6743c680@44281f3c)
11351135

11361136
val makeWorld = {
11371137
for {
@@ -1140,7 +1140,7 @@ <h2><a href="#zio-environment-bindings" name="zio-environment-bindings" class="a
11401140
val world = counter.get.map(c =&gt; if (c &lt; 1) &quot;World&quot; else &quot;THE World&quot;)
11411141
}
11421142
}
1143-
// makeWorld: ZIO[Any, Nothing, AnyRef with World{val world: zio.ZIO[Any,Nothing,String]}] = FlatMap(repl.MdocSession.MdocApp39.makeWorld(basics.md:940),Sync(repl.MdocSession.MdocApp39.makeWorld(basics.md:940),zio.Ref$$$Lambda/0x00007fff6866ca80@5dc96abe),zio.ZIO$$Lambda/0x00007fff67449f00@2f26089c)
1143+
// makeWorld: ZIO[Any, Nothing, AnyRef with World{val world: zio.ZIO[Any,Nothing,String]}] = FlatMap(repl.MdocSession.MdocApp39.makeWorld(basics.md:940),Sync(repl.MdocSession.MdocApp39.makeWorld(basics.md:940),zio.Ref$$$Lambda/0x00007fff6867f038@23a9471e),zio.ZIO$$Lambda/0x00007fff6743c680@27fc6da8)
11441144

11451145
// the main function
11461146

@@ -1151,7 +1151,7 @@ <h2><a href="#zio-environment-bindings" name="zio-environment-bindings" class="a
11511151
_ &lt;- Console.print(s&quot;$hello $world&quot;)
11521152
} yield ()
11531153
}
1154-
// turboFunctionalHelloWorld: RIO[Hello with World, Unit] = FlatMap(repl.MdocSession.MdocApp39.turboFunctionalHelloWorld(basics.md:949),Stateful(repl.MdocSession.MdocApp39.hello(basics.md:921),zio.FiberRef$unsafe$PatchFiber$$Lambda/0x00007fff675e78a8@307d305d),&lt;function1&gt;)
1154+
// turboFunctionalHelloWorld: RIO[Hello with World, Unit] = FlatMap(repl.MdocSession.MdocApp39.turboFunctionalHelloWorld(basics.md:949),Stateful(repl.MdocSession.MdocApp39.hello(basics.md:921),zio.FiberRef$unsafe$PatchFiber$$Lambda/0x00007fff685c8f68@6b3279b7),&lt;function1&gt;)
11551155

11561156
def module = new ModuleDef {
11571157
make[Hello].fromZIOEnv(makeHello)
@@ -1161,12 +1161,12 @@ <h2><a href="#zio-environment-bindings" name="zio-environment-bindings" class="a
11611161

11621162
val main = Injector[Task]()
11631163
.produceRun[Unit](module)((_: Unit) =&gt; ZIO.unit)
1164-
// main: Task[Unit] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff676a94b0@5ca0bb93)
1164+
// main: Task[Unit] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff685112b0@45b84a3c)
11651165

11661166
import izumi.functional.bio.UnsafeRun2
11671167

11681168
val runtime = UnsafeRun2.createZIO()
1169-
// runtime: UnsafeRun2.ZIORunner[Any] = izumi.functional.bio.UnsafeRun2$ZIORunner@5337bce1
1169+
// runtime: UnsafeRun2.ZIORunner[Any] = izumi.functional.bio.UnsafeRun2$ZIORunner@5d615c9c
11701170

11711171
runtime.unsafeRun(main)
11721172
// Creating Enterprise Hellower...
@@ -1585,7 +1585,7 @@ <h2><a href="#subcontexts" name="subcontexts" class="anchor"><span class="anchor
15851585
import izumi.functional.bio.UnsafeRun2
15861586

15871587
val runner = UnsafeRun2.createZIO()
1588-
// runner: UnsafeRun2.ZIORunner[Any] = izumi.functional.bio.UnsafeRun2$ZIORunner@60a2ce94
1588+
// runner: UnsafeRun2.ZIORunner[Any] = izumi.functional.bio.UnsafeRun2$ZIORunner@7cfdf0fa
15891589

15901590
val result = runner.unsafeRun {
15911591
Injector[zio.Task]()
@@ -1594,14 +1594,14 @@ <h2><a href="#subcontexts" name="subcontexts" class="anchor"><span class="anchor
15941594
petStoreAPI.buyPetAPI(Pets.arnoldId, 100)
15951595
}
15961596
}
1597-
// I 2025-12-12T21:44:47.189 (basics.md:1433) ….PetStoreRepository.findPet [617:Thread-188] requestId=RequestId(0e514321-dbac-434a-ab8f-c6a958057ab3)
1598-
// Looking up pet_id=PetId(ea9c6bcb-3e73-4fa8-a2b2-bf9cb9be5a9b)
1599-
// I 2025-12-12T21:44:47.201 (basics.md:1435) …P.I.1.1.P.findPet.1433.1434 [617:Thread-188] requestId=RequestId(0e514321-dbac-434a-ab8f-c6a958057ab3)
1597+
// I 2025-12-15T19:15:06.945 (basics.md:1433) ….PetStoreRepository.findPet [617:Thread-189] requestId=RequestId(bbd5caea-a27f-4dc7-ae6e-efe603bc3b80)
1598+
// Looking up pet_id=PetId(0b2b6efa-d372-442e-8e94-8aa1d721afdb)
1599+
// I 2025-12-15T19:15:06.960 (basics.md:1435) …P.I.1.1.P.findPet.1433.1434 [617:Thread-189] requestId=RequestId(bbd5caea-a27f-4dc7-ae6e-efe603bc3b80)
16001600
// Got maybe_pet=Some(Pet(Arnold,Dog,99))
1601-
// I 2025-12-12T21:44:47.209 (basics.md:1442) …reRepository.removePet.1441 [617:Thread-188] requestId=RequestId(0e514321-dbac-434a-ab8f-c6a958057ab3)
1602-
// Tried to remove pet_id=PetId(ea9c6bcb-3e73-4fa8-a2b2-bf9cb9be5a9b), success=true
1603-
// I 2025-12-12T21:44:47.215 (basics.md:1408) r.M.M.P.b.1400.1406.1407 [617:Thread-188] requestId=RequestId(0e514321-dbac-434a-ab8f-c6a958057ab3)
1604-
// Successfully bought pet=Pet(Arnold,Dog,99) with pet_id=PetId(ea9c6bcb-3e73-4fa8-a2b2-bf9cb9be5a9b) for payment=100! overpaid=1
1601+
// I 2025-12-15T19:15:06.969 (basics.md:1442) …reRepository.removePet.1441 [617:Thread-189] requestId=RequestId(bbd5caea-a27f-4dc7-ae6e-efe603bc3b80)
1602+
// Tried to remove pet_id=PetId(0b2b6efa-d372-442e-8e94-8aa1d721afdb), success=true
1603+
// I 2025-12-15T19:15:06.977 (basics.md:1408) r.M.M.P.b.1400.1406.1407 [617:Thread-189] requestId=RequestId(bbd5caea-a27f-4dc7-ae6e-efe603bc3b80)
1604+
// Successfully bought pet=Pet(Arnold,Dog,99) with pet_id=PetId(0b2b6efa-d372-442e-8e94-8aa1d721afdb) for payment=100! overpaid=1
16051605
// result: Either[TransactionFailure, Pet] = Right(
16061606
// value = Pet(name = &quot;Arnold&quot;, species = &quot;Dog&quot;, price = 99)
16071607
// )
@@ -1687,7 +1687,7 @@ <h2><a href="#tagless-final-style" name="tagless-final-style" class="anchor"><sp
16871687
val objectsLifecycle: Lifecycle[IO, Locator] = {
16881688
Injector[IO]().produce(SyncProgram[IO], Roots.target[TaglessProgram[IO]])
16891689
}
1690-
// objectsLifecycle: Lifecycle[IO, Locator] = izumi.functional.lifecycle.LifecycleMethodImpls$$anon$2@54c5a075
1690+
// objectsLifecycle: Lifecycle[IO, Locator] = izumi.functional.lifecycle.LifecycleMethodImpls$$anon$2@46e4e17d
16911691

16921692
// run
16931693

@@ -1735,10 +1735,10 @@ <h3><a href="#effect-type-polymorphism" name="effect-type-polymorphism" class="a
17351735
import izumi.functional.bio.UnsafeRun2
17361736

17371737
val runner: UnsafeRun2[zio.IO] = UnsafeRun2.createZIO()
1738-
// runner: UnsafeRun2[zio.package.IO] = izumi.functional.bio.UnsafeRun2$ZIORunner@6f520d0f
1738+
// runner: UnsafeRun2[zio.package.IO] = izumi.functional.bio.UnsafeRun2$ZIORunner@67b68aae
17391739

17401740
val zioEffect: Task[Unit] = chooseInterpreters(isDummy = true).use(_.run)
1741-
// zioEffect: Task[Unit] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff676a94b0@3e0a255f)
1741+
// zioEffect: Task[Unit] = DynamicNoBox(izumi.functional.quasi.QuasiPrimitivesFromBIO.bracket(QuasiIO.scala:368),1,zio.ZIO$Release$$Lambda/0x00007fff685112b0@e935827)
17421742

17431743
runner.unsafeRun(zioEffect)
17441744
// awesomesauce!

latest/snapshot/distage/debugging.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,15 +261,15 @@ <h3><a href="#testing-plans" name="testing-plans" class="anchor"><span class="an
261261
<h3><a href="#pretty-printing-plans" name="pretty-printing-plans" class="anchor"><span class="anchor-link"></span></a>Pretty-printing plans</h3>
262262
<p>You can print the output of <code>plan.render()</code> to get detailed info on what will happen during instantiation. The printout includes source and line numbers so your IDE can show you where the binding was defined!</p>
263263
<pre class="prettyprint"><code class="language-scala">val plan = Injector().plan(goodModule, Roots.target[A]).getOrThrow()
264-
// plan: izumi.distage.model.plan.Plan = 1: {effect.{type.MdocSession::MdocApp0::B}} BindingOrigin((debugging.md:41)) := value cats.effect.IO$Delay#-630692830
264+
// plan: izumi.distage.model.plan.Plan = 1: {effect.{type.MdocSession::MdocApp0::B}} BindingOrigin((debugging.md:41)) := value cats.effect.IO$Delay#-1126002338
265265
// 2: {type.MdocSession::MdocApp0::B} BindingOrigin((debugging.md:41)) := effect[λ %0 → cats.effect.IO[+0]]{effect.{type.MdocSession::MdocApp0::B}}
266266
// 3: {type.MdocSession::MdocApp0::A} BindingOrigin((debugging.md:40)) :=
267267
// 4: call(π:Constructor(MdocSession::MdocApp0::B): MdocSession::MdocApp0::A) {
268268
// 5: arg b: MdocSession::MdocApp0::B &lt;- {type.MdocSession::MdocApp0::B}
269269
// 6: }
270270

271271
println(plan.render())
272-
// 1: {effect.{type.MdocSession::MdocApp0::B}} BindingOrigin((debugging.md:41)) := value cats.effect.IO$Delay#-630692830
272+
// 1: {effect.{type.MdocSession::MdocApp0::B}} BindingOrigin((debugging.md:41)) := value cats.effect.IO$Delay#-1126002338
273273
// 2: {type.MdocSession::MdocApp0::B} BindingOrigin((debugging.md:41)) := effect[λ %0 → cats.effect.IO[+0]]{effect.{type.MdocSession::MdocApp0::B}}
274274
// 3: {type.MdocSession::MdocApp0::A} BindingOrigin((debugging.md:40)) :=
275275
// 4: call(π:Constructor(MdocSession::MdocApp0::B): MdocSession::MdocApp0::A) {
@@ -308,7 +308,7 @@ <h3><a href="#graphviz-rendering" name="graphviz-rendering" class="anchor"><span
308308
<pre class="prettyprint"><code class="language-scala">import distage.{GraphDumpBootstrapModule, Injector}
309309

310310
Injector(GraphDumpBootstrapModule)
311-
// res6: Injector[[A]izumi.fundamentals.platform.functional.package.Identity[A]] = izumi.distage.InjectorDefaultImpl@dcb81da
311+
// res6: Injector[[A]izumi.fundamentals.platform.functional.package.Identity[A]] = izumi.distage.InjectorDefaultImpl@347f2cd7
312312
</code></pre>
313313
<p>You&rsquo;ll need a <code>GraphViz</code> installation to render these files into a viewable PNG images:</p>
314314
<pre class="prettyprint"><code class="language-bash">dot -Tpng target/plan-last-nogc.gv -o out.png

latest/snapshot/distage/distage-framework-docker.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ <h4><a href="#3-include-the-dockersupportmodule" name="3-include-the-dockersuppo
355355
}
356356

357357
minimalExample.unsafeRunSync()(cats.effect.unsafe.IORuntime.global)
358-
// postgres is available on port AvailablePort(172.17.0.2,5432)
358+
// postgres is available on port AvailablePort(10.1.0.80,42367)
359359
</code></pre>
360360
<p>If the <code>DockerSupportModule</code> is not included in an application then a get of a Docker container dependent resource will fail with a <code>izumi.distage.model.exceptions.runtime.ProvisioningException</code>.</p>
361361
<h3><a href="#config-api" name="config-api" class="anchor"><span class="anchor-link"></span></a>Config API</h3>

0 commit comments

Comments
 (0)