effect 3.12.11 → 3.13.0
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.
- package/README.md +38 -49
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/DateTime.js +17 -1
- package/dist/cjs/DateTime.js.map +1 -1
- package/dist/cjs/Differ.js.map +1 -1
- package/dist/cjs/Duration.js +128 -1
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js +175 -37
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +2 -1
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/FiberHandle.js +54 -21
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberMap.js +51 -24
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberSet.js +50 -17
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/HashMap.js +19 -1
- package/dist/cjs/HashMap.js.map +1 -1
- package/dist/cjs/HashSet.js +9 -1
- package/dist/cjs/HashSet.js.map +1 -1
- package/dist/cjs/Layer.js +21 -1
- package/dist/cjs/Layer.js.map +1 -1
- package/dist/cjs/Match.js +659 -38
- package/dist/cjs/Match.js.map +1 -1
- package/dist/cjs/RcMap.js +11 -1
- package/dist/cjs/RcMap.js.map +1 -1
- package/dist/cjs/Reloadable.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schedule.js +1074 -309
- package/dist/cjs/Schedule.js.map +1 -1
- package/dist/cjs/Schema.js +73 -1
- package/dist/cjs/Schema.js.map +1 -1
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/core.js +27 -3
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/dateTime.js +4 -1
- package/dist/cjs/internal/dateTime.js.map +1 -1
- package/dist/cjs/internal/differ.js +4 -0
- package/dist/cjs/internal/differ.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +3 -2
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +21 -7
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/hashMap.js +10 -1
- package/dist/cjs/internal/hashMap.js.map +1 -1
- package/dist/cjs/internal/keyedPool.js +1 -1
- package/dist/cjs/internal/keyedPool.js.map +1 -1
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/rcMap.js +86 -56
- package/dist/cjs/internal/rcMap.js.map +1 -1
- package/dist/cjs/internal/reloadable.js.map +1 -1
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stm/stm.js.map +1 -1
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/cjs/internal/version.js.map +1 -1
- package/dist/dts/Channel.d.ts +4 -4
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/DateTime.d.ts +16 -0
- package/dist/dts/DateTime.d.ts.map +1 -1
- package/dist/dts/Differ.d.ts +2 -1
- package/dist/dts/Differ.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts +64 -0
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +402 -30
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +7 -0
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/FiberHandle.d.ts +26 -0
- package/dist/dts/FiberHandle.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts +26 -0
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts +25 -0
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/HashMap.d.ts +38 -0
- package/dist/dts/HashMap.d.ts.map +1 -1
- package/dist/dts/HashSet.d.ts +7 -0
- package/dist/dts/HashSet.d.ts.map +1 -1
- package/dist/dts/Layer.d.ts +32 -13
- package/dist/dts/Layer.d.ts.map +1 -1
- package/dist/dts/Match.d.ts +731 -48
- package/dist/dts/Match.d.ts.map +1 -1
- package/dist/dts/RcMap.d.ts +32 -0
- package/dist/dts/RcMap.d.ts.map +1 -1
- package/dist/dts/Reloadable.d.ts +13 -13
- package/dist/dts/Reloadable.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +4 -4
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schedule.d.ts +2294 -633
- package/dist/dts/Schedule.d.ts.map +1 -1
- package/dist/dts/Schema.d.ts +40 -4
- package/dist/dts/Schema.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +8 -8
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Trie.d.ts +7 -7
- package/dist/dts/Trie.d.ts.map +1 -1
- package/dist/dts/index.d.ts +25 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/stm/stm.d.ts +2 -2
- package/dist/dts/internal/stm/stm.d.ts.map +1 -1
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/DateTime.js +16 -0
- package/dist/esm/DateTime.js.map +1 -1
- package/dist/esm/Differ.js.map +1 -1
- package/dist/esm/Duration.js +124 -0
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Effect.js +170 -32
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +7 -0
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/FiberHandle.js +48 -18
- package/dist/esm/FiberHandle.js.map +1 -1
- package/dist/esm/FiberMap.js +46 -22
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberSet.js +45 -15
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/HashMap.js +17 -0
- package/dist/esm/HashMap.js.map +1 -1
- package/dist/esm/HashSet.js +7 -0
- package/dist/esm/HashSet.js.map +1 -1
- package/dist/esm/Layer.js +20 -0
- package/dist/esm/Layer.js.map +1 -1
- package/dist/esm/Match.js +665 -40
- package/dist/esm/Match.js.map +1 -1
- package/dist/esm/RcMap.js +10 -0
- package/dist/esm/RcMap.js.map +1 -1
- package/dist/esm/Reloadable.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schedule.js +1074 -309
- package/dist/esm/Schedule.js.map +1 -1
- package/dist/esm/Schema.js +71 -0
- package/dist/esm/Schema.js.map +1 -1
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/index.js +25 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/core.js +23 -0
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/dateTime.js +2 -0
- package/dist/esm/internal/dateTime.js.map +1 -1
- package/dist/esm/internal/differ.js +4 -0
- package/dist/esm/internal/differ.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +3 -2
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +18 -5
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/hashMap.js +9 -0
- package/dist/esm/internal/hashMap.js.map +1 -1
- package/dist/esm/internal/keyedPool.js +1 -1
- package/dist/esm/internal/keyedPool.js.map +1 -1
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/rcMap.js +85 -55
- package/dist/esm/internal/rcMap.js.map +1 -1
- package/dist/esm/internal/reloadable.js.map +1 -1
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stm/stm.js.map +1 -1
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/dist/esm/internal/version.js.map +1 -1
- package/package.json +2 -1
- package/src/Channel.ts +14 -17
- package/src/DateTime.ts +17 -8
- package/src/Differ.ts +2 -1
- package/src/Duration.ts +147 -0
- package/src/Effect.ts +528 -140
- package/src/Either.ts +9 -0
- package/src/FiberHandle.ts +95 -35
- package/src/FiberMap.ts +104 -39
- package/src/FiberSet.ts +93 -24
- package/src/HashMap.ts +40 -0
- package/src/HashSet.ts +8 -0
- package/src/Layer.ts +94 -40
- package/src/Match.ts +733 -49
- package/src/RcMap.ts +34 -0
- package/src/Reloadable.ts +17 -27
- package/src/STM.ts +10 -17
- package/src/Schedule.ts +2325 -653
- package/src/Schema.ts +81 -4
- package/src/Stream.ts +26 -33
- package/src/Trie.ts +7 -7
- package/src/index.ts +25 -0
- package/src/internal/channel.ts +37 -39
- package/src/internal/core-effect.ts +84 -84
- package/src/internal/core.ts +80 -0
- package/src/internal/dateTime.ts +3 -0
- package/src/internal/differ.ts +4 -0
- package/src/internal/effect/circular.ts +3 -2
- package/src/internal/fiberRuntime.ts +31 -6
- package/src/internal/hashMap.ts +16 -0
- package/src/internal/keyedPool.ts +1 -1
- package/src/internal/layer.ts +52 -52
- package/src/internal/rcMap.ts +131 -89
- package/src/internal/reloadable.ts +25 -28
- package/src/internal/schedule.ts +29 -23
- package/src/internal/sink.ts +16 -15
- package/src/internal/stm/stm.ts +54 -46
- package/src/internal/stream.ts +100 -100
- package/src/internal/version.ts +1 -1
|
@@ -26,7 +26,7 @@ import type * as Random from "../Random.js"
|
|
|
26
26
|
import * as Ref from "../Ref.js"
|
|
27
27
|
import type * as runtimeFlagsPatch from "../RuntimeFlagsPatch.js"
|
|
28
28
|
import * as Tracer from "../Tracer.js"
|
|
29
|
-
import type
|
|
29
|
+
import type * as Types from "../Types.js"
|
|
30
30
|
import type { Unify } from "../Unify.js"
|
|
31
31
|
import { internalCall } from "../Utils.js"
|
|
32
32
|
import * as internalCause from "./cause.js"
|
|
@@ -175,17 +175,17 @@ export const catchAllDefect = dual<
|
|
|
175
175
|
/* @internal */
|
|
176
176
|
export const catchSomeCause: {
|
|
177
177
|
<E, A2, E2, R2>(
|
|
178
|
-
f: (cause: Cause.Cause<NoInfer<E>>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
178
|
+
f: (cause: Cause.Cause<Types.NoInfer<E>>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
179
179
|
): <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A2 | A, E | E2, R2 | R>
|
|
180
180
|
<A, E, R, A2, E2, R2>(
|
|
181
181
|
self: Effect.Effect<A, E, R>,
|
|
182
|
-
f: (cause: Cause.Cause<NoInfer<E>>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
182
|
+
f: (cause: Cause.Cause<Types.NoInfer<E>>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
183
183
|
): Effect.Effect<A2 | A, E | E2, R2 | R>
|
|
184
184
|
} = dual(
|
|
185
185
|
2,
|
|
186
186
|
<A, E, R, A2, E2, R2>(
|
|
187
187
|
self: Effect.Effect<A, E, R>,
|
|
188
|
-
f: (cause: Cause.Cause<NoInfer<E>>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
188
|
+
f: (cause: Cause.Cause<Types.NoInfer<E>>) => Option.Option<Effect.Effect<A2, E2, R2>>
|
|
189
189
|
): Effect.Effect<A2 | A, E | E2, R2 | R> =>
|
|
190
190
|
core.matchCauseEffect(self, {
|
|
191
191
|
onFailure: (cause): Effect.Effect<A2, E | E2, R2> => {
|
|
@@ -376,14 +376,14 @@ export const Do: Effect.Effect<{}> = core.succeed({})
|
|
|
376
376
|
export const bind: {
|
|
377
377
|
<N extends string, A extends object, B, E2, R2>(
|
|
378
378
|
name: Exclude<N, keyof A>,
|
|
379
|
-
f: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>
|
|
379
|
+
f: (a: Types.NoInfer<A>) => Effect.Effect<B, E2, R2>
|
|
380
380
|
): <E1, R1>(
|
|
381
381
|
self: Effect.Effect<A, E1, R1>
|
|
382
382
|
) => Effect.Effect<{ [K in N | keyof A]: K extends keyof A ? A[K] : B }, E2 | E1, R2 | R1>
|
|
383
383
|
<A extends object, N extends string, E1, R1, B, E2, R2>(
|
|
384
384
|
self: Effect.Effect<A, E1, R1>,
|
|
385
385
|
name: Exclude<N, keyof A>,
|
|
386
|
-
f: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>
|
|
386
|
+
f: (a: Types.NoInfer<A>) => Effect.Effect<B, E2, R2>
|
|
387
387
|
): Effect.Effect<{ [K in N | keyof A]: K extends keyof A ? A[K] : B }, E1 | E2, R1 | R2>
|
|
388
388
|
} = doNotation.bind<Effect.EffectTypeLambda>(core.map, core.flatMap)
|
|
389
389
|
|
|
@@ -397,21 +397,21 @@ export const bindTo: {
|
|
|
397
397
|
export const let_: {
|
|
398
398
|
<N extends string, A extends object, B>(
|
|
399
399
|
name: Exclude<N, keyof A>,
|
|
400
|
-
f: (a: NoInfer<A>) => B
|
|
400
|
+
f: (a: Types.NoInfer<A>) => B
|
|
401
401
|
): <E, R>(
|
|
402
402
|
self: Effect.Effect<A, E, R>
|
|
403
403
|
) => Effect.Effect<{ [K in N | keyof A]: K extends keyof A ? A[K] : B }, E, R>
|
|
404
404
|
<A extends object, N extends string, E, R, B>(
|
|
405
405
|
self: Effect.Effect<A, E, R>,
|
|
406
406
|
name: Exclude<N, keyof A>,
|
|
407
|
-
f: (a: NoInfer<A>) => B
|
|
407
|
+
f: (a: Types.NoInfer<A>) => B
|
|
408
408
|
): Effect.Effect<{ [K in N | keyof A]: K extends keyof A ? A[K] : B }, E, R>
|
|
409
409
|
} = doNotation.let_<Effect.EffectTypeLambda>(core.map)
|
|
410
410
|
|
|
411
411
|
/* @internal */
|
|
412
412
|
export const dropUntil: {
|
|
413
413
|
<A, E, R>(
|
|
414
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
414
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
415
415
|
): (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>
|
|
416
416
|
<A, E, R>(
|
|
417
417
|
elements: Iterable<A>,
|
|
@@ -447,7 +447,7 @@ export const dropUntil: {
|
|
|
447
447
|
/* @internal */
|
|
448
448
|
export const dropWhile: {
|
|
449
449
|
<A, E, R>(
|
|
450
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
450
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
451
451
|
): (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>
|
|
452
452
|
<A, E, R>(
|
|
453
453
|
elements: Iterable<A>,
|
|
@@ -506,12 +506,12 @@ export const filterMap = dual<
|
|
|
506
506
|
/* @internal */
|
|
507
507
|
export const filterOrDie: {
|
|
508
508
|
<A, B extends A>(
|
|
509
|
-
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
510
|
-
orDieWith: (a: NoInfer<A>) => unknown
|
|
509
|
+
refinement: Predicate.Refinement<Types.NoInfer<A>, B>,
|
|
510
|
+
orDieWith: (a: Types.NoInfer<A>) => unknown
|
|
511
511
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E, R>
|
|
512
512
|
<A>(
|
|
513
|
-
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
514
|
-
orDieWith: (a: NoInfer<A>) => unknown
|
|
513
|
+
predicate: Predicate.Predicate<Types.NoInfer<A>>,
|
|
514
|
+
orDieWith: (a: Types.NoInfer<A>) => unknown
|
|
515
515
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
516
516
|
<A, E, R, B extends A>(
|
|
517
517
|
self: Effect.Effect<A, E, R>,
|
|
@@ -535,11 +535,11 @@ export const filterOrDie: {
|
|
|
535
535
|
/* @internal */
|
|
536
536
|
export const filterOrDieMessage: {
|
|
537
537
|
<A, B extends A>(
|
|
538
|
-
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
538
|
+
refinement: Predicate.Refinement<Types.NoInfer<A>, B>,
|
|
539
539
|
message: string
|
|
540
540
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E, R>
|
|
541
541
|
<A>(
|
|
542
|
-
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
542
|
+
predicate: Predicate.Predicate<Types.NoInfer<A>>,
|
|
543
543
|
message: string
|
|
544
544
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
545
545
|
<A, E, R, B extends A>(
|
|
@@ -557,12 +557,12 @@ export const filterOrDieMessage: {
|
|
|
557
557
|
/* @internal */
|
|
558
558
|
export const filterOrElse: {
|
|
559
559
|
<A, B extends A, C, E2, R2>(
|
|
560
|
-
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
561
|
-
orElse: (a: NoInfer<A>) => Effect.Effect<C, E2, R2>
|
|
560
|
+
refinement: Predicate.Refinement<Types.NoInfer<A>, B>,
|
|
561
|
+
orElse: (a: Types.NoInfer<A>) => Effect.Effect<C, E2, R2>
|
|
562
562
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B | C, E2 | E, R2 | R>
|
|
563
563
|
<A, B, E2, R2>(
|
|
564
|
-
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
565
|
-
orElse: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>
|
|
564
|
+
predicate: Predicate.Predicate<Types.NoInfer<A>>,
|
|
565
|
+
orElse: (a: Types.NoInfer<A>) => Effect.Effect<B, E2, R2>
|
|
566
566
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | B, E2 | E, R2 | R>
|
|
567
567
|
<A, E, R, B extends A, C, E2, R2>(
|
|
568
568
|
self: Effect.Effect<A, E, R>,
|
|
@@ -588,12 +588,12 @@ export const filterOrElse: {
|
|
|
588
588
|
export const liftPredicate = dual<
|
|
589
589
|
{
|
|
590
590
|
<A, B extends A, E>(
|
|
591
|
-
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
592
|
-
orFailWith: (a: NoInfer<A>) => E
|
|
591
|
+
refinement: Predicate.Refinement<Types.NoInfer<A>, B>,
|
|
592
|
+
orFailWith: (a: Types.NoInfer<A>) => E
|
|
593
593
|
): (a: A) => Effect.Effect<B, E>
|
|
594
594
|
<A, E>(
|
|
595
|
-
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
596
|
-
orFailWith: (a: NoInfer<A>) => E
|
|
595
|
+
predicate: Predicate.Predicate<Types.NoInfer<A>>,
|
|
596
|
+
orFailWith: (a: Types.NoInfer<A>) => E
|
|
597
597
|
): (a: A) => Effect.Effect<A, E>
|
|
598
598
|
},
|
|
599
599
|
{
|
|
@@ -604,34 +604,34 @@ export const liftPredicate = dual<
|
|
|
604
604
|
): Effect.Effect<B, E>
|
|
605
605
|
<A, E>(
|
|
606
606
|
self: A,
|
|
607
|
-
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
608
|
-
orFailWith: (a: NoInfer<A>) => E
|
|
607
|
+
predicate: Predicate.Predicate<Types.NoInfer<A>>,
|
|
608
|
+
orFailWith: (a: Types.NoInfer<A>) => E
|
|
609
609
|
): Effect.Effect<A, E>
|
|
610
610
|
}
|
|
611
611
|
>(
|
|
612
612
|
3,
|
|
613
613
|
<A, E>(
|
|
614
614
|
self: A,
|
|
615
|
-
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
616
|
-
orFailWith: (a: NoInfer<A>) => E
|
|
615
|
+
predicate: Predicate.Predicate<Types.NoInfer<A>>,
|
|
616
|
+
orFailWith: (a: Types.NoInfer<A>) => E
|
|
617
617
|
): Effect.Effect<A, E> => core.suspend(() => predicate(self) ? core.succeed(self) : core.fail(orFailWith(self)))
|
|
618
618
|
)
|
|
619
619
|
|
|
620
620
|
/* @internal */
|
|
621
621
|
export const filterOrFail: {
|
|
622
622
|
<A, B extends A, E2>(
|
|
623
|
-
refinement: Predicate.Refinement<NoInfer<A>, B>,
|
|
624
|
-
orFailWith: (a: NoInfer<A>) => E2
|
|
623
|
+
refinement: Predicate.Refinement<Types.NoInfer<A>, B>,
|
|
624
|
+
orFailWith: (a: Types.NoInfer<A>) => E2
|
|
625
625
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, E2 | E, R>
|
|
626
626
|
<A, E2>(
|
|
627
|
-
predicate: Predicate.Predicate<NoInfer<A>>,
|
|
628
|
-
orFailWith: (a: NoInfer<A>) => E2
|
|
627
|
+
predicate: Predicate.Predicate<Types.NoInfer<A>>,
|
|
628
|
+
orFailWith: (a: Types.NoInfer<A>) => E2
|
|
629
629
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E2 | E, R>
|
|
630
630
|
<A, B extends A>(
|
|
631
|
-
refinement: Predicate.Refinement<NoInfer<A>, B>
|
|
631
|
+
refinement: Predicate.Refinement<Types.NoInfer<A>, B>
|
|
632
632
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<B, Cause.NoSuchElementException | E, R>
|
|
633
633
|
<A>(
|
|
634
|
-
predicate: Predicate.Predicate<NoInfer<A>>
|
|
634
|
+
predicate: Predicate.Predicate<Types.NoInfer<A>>
|
|
635
635
|
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, Cause.NoSuchElementException | E, R>
|
|
636
636
|
<A, E, R, B extends A, E2>(
|
|
637
637
|
self: Effect.Effect<A, E, R>,
|
|
@@ -666,17 +666,17 @@ export const filterOrFail: {
|
|
|
666
666
|
/* @internal */
|
|
667
667
|
export const findFirst: {
|
|
668
668
|
<A, E, R>(
|
|
669
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
669
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
670
670
|
): (elements: Iterable<A>) => Effect.Effect<Option.Option<A>, E, R>
|
|
671
671
|
<A, E, R>(
|
|
672
672
|
elements: Iterable<A>,
|
|
673
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
673
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
674
674
|
): Effect.Effect<Option.Option<A>, E, R>
|
|
675
675
|
} = dual(
|
|
676
676
|
2,
|
|
677
677
|
<A, E, R>(
|
|
678
678
|
elements: Iterable<A>,
|
|
679
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
679
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
680
680
|
): Effect.Effect<Option.Option<A>, E, R> =>
|
|
681
681
|
core.suspend(() => {
|
|
682
682
|
const iterator = elements[Symbol.iterator]()
|
|
@@ -1195,25 +1195,25 @@ export const promise = <A>(evaluate: (signal: AbortSignal) => PromiseLike<A>): E
|
|
|
1195
1195
|
|
|
1196
1196
|
/* @internal */
|
|
1197
1197
|
export const provideService = dual<
|
|
1198
|
-
<
|
|
1199
|
-
tag:
|
|
1200
|
-
service:
|
|
1201
|
-
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R,
|
|
1202
|
-
<A, E, R,
|
|
1198
|
+
<I, S>(
|
|
1199
|
+
tag: Context.Tag<I, S>,
|
|
1200
|
+
service: Types.NoInfer<S>
|
|
1201
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, I>>,
|
|
1202
|
+
<A, E, R, I, S>(
|
|
1203
1203
|
self: Effect.Effect<A, E, R>,
|
|
1204
|
-
tag:
|
|
1205
|
-
service:
|
|
1206
|
-
) => Effect.Effect<A, E, Exclude<R,
|
|
1204
|
+
tag: Context.Tag<I, S>,
|
|
1205
|
+
service: Types.NoInfer<S>
|
|
1206
|
+
) => Effect.Effect<A, E, Exclude<R, I>>
|
|
1207
1207
|
>(
|
|
1208
1208
|
3,
|
|
1209
|
-
<A, E, R,
|
|
1209
|
+
<A, E, R, I, S>(
|
|
1210
1210
|
self: Effect.Effect<A, E, R>,
|
|
1211
|
-
tag:
|
|
1212
|
-
service:
|
|
1213
|
-
): Effect.Effect<A, E, Exclude<R,
|
|
1211
|
+
tag: Context.Tag<I, S>,
|
|
1212
|
+
service: Types.NoInfer<S>
|
|
1213
|
+
): Effect.Effect<A, E, Exclude<R, I>> =>
|
|
1214
1214
|
core.contextWithEffect((env) =>
|
|
1215
1215
|
core.provideContext(
|
|
1216
|
-
self as Effect.Effect<A, E,
|
|
1216
|
+
self as Effect.Effect<A, E, I | Exclude<R, I>>,
|
|
1217
1217
|
Context.add(env, tag, service)
|
|
1218
1218
|
)
|
|
1219
1219
|
)
|
|
@@ -1221,21 +1221,21 @@ export const provideService = dual<
|
|
|
1221
1221
|
|
|
1222
1222
|
/* @internal */
|
|
1223
1223
|
export const provideServiceEffect = dual<
|
|
1224
|
-
<
|
|
1225
|
-
tag:
|
|
1226
|
-
effect: Effect.Effect<
|
|
1227
|
-
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E1, R1 | Exclude<R,
|
|
1228
|
-
<A, E, R,
|
|
1224
|
+
<I, S, E1, R1>(
|
|
1225
|
+
tag: Context.Tag<I, S>,
|
|
1226
|
+
effect: Effect.Effect<Types.NoInfer<S>, E1, R1>
|
|
1227
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E1, R1 | Exclude<R, I>>,
|
|
1228
|
+
<A, E, R, I, S, E1, R1>(
|
|
1229
1229
|
self: Effect.Effect<A, E, R>,
|
|
1230
|
-
tag:
|
|
1231
|
-
effect: Effect.Effect<
|
|
1232
|
-
) => Effect.Effect<A, E | E1, R1 | Exclude<R,
|
|
1233
|
-
>(3, <A, E, R,
|
|
1230
|
+
tag: Context.Tag<I, S>,
|
|
1231
|
+
effect: Effect.Effect<Types.NoInfer<S>, E1, R1>
|
|
1232
|
+
) => Effect.Effect<A, E | E1, R1 | Exclude<R, I>>
|
|
1233
|
+
>(3, <A, E, R, I, S, E1, R1>(
|
|
1234
1234
|
self: Effect.Effect<A, E, R>,
|
|
1235
|
-
tag:
|
|
1236
|
-
effect: Effect.Effect<
|
|
1235
|
+
tag: Context.Tag<I, S>,
|
|
1236
|
+
effect: Effect.Effect<Types.NoInfer<S>, E1, R1>
|
|
1237
1237
|
) =>
|
|
1238
|
-
core.contextWithEffect((env: Context.Context<R1 | Exclude<R,
|
|
1238
|
+
core.contextWithEffect((env: Context.Context<R1 | Exclude<R, I>>) =>
|
|
1239
1239
|
core.flatMap(
|
|
1240
1240
|
effect,
|
|
1241
1241
|
(service) => core.provideContext(self, pipe(env, Context.add(tag, service)) as Context.Context<R | R1>)
|
|
@@ -1426,17 +1426,17 @@ export const labelMetrics = dual<
|
|
|
1426
1426
|
/* @internal */
|
|
1427
1427
|
export const takeUntil: {
|
|
1428
1428
|
<A, R, E>(
|
|
1429
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1429
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1430
1430
|
): (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>
|
|
1431
1431
|
<A, E, R>(
|
|
1432
1432
|
elements: Iterable<A>,
|
|
1433
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1433
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1434
1434
|
): Effect.Effect<Array<A>, E, R>
|
|
1435
1435
|
} = dual(
|
|
1436
1436
|
2,
|
|
1437
1437
|
<A, E, R>(
|
|
1438
1438
|
elements: Iterable<A>,
|
|
1439
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1439
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1440
1440
|
): Effect.Effect<Array<A>, E, R> =>
|
|
1441
1441
|
core.suspend(() => {
|
|
1442
1442
|
const iterator = elements[Symbol.iterator]()
|
|
@@ -1462,15 +1462,15 @@ export const takeUntil: {
|
|
|
1462
1462
|
/* @internal */
|
|
1463
1463
|
export const takeWhile = dual<
|
|
1464
1464
|
<A, E, R>(
|
|
1465
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1465
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1466
1466
|
) => (elements: Iterable<A>) => Effect.Effect<Array<A>, E, R>,
|
|
1467
1467
|
<A, E, R>(
|
|
1468
1468
|
elements: Iterable<A>,
|
|
1469
|
-
predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1469
|
+
predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>
|
|
1470
1470
|
) => Effect.Effect<Array<A>, E, R>
|
|
1471
1471
|
>(
|
|
1472
1472
|
2,
|
|
1473
|
-
<A, E, R>(elements: Iterable<A>, predicate: (a: NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>) =>
|
|
1473
|
+
<A, E, R>(elements: Iterable<A>, predicate: (a: Types.NoInfer<A>, i: number) => Effect.Effect<boolean, E, R>) =>
|
|
1474
1474
|
core.suspend(() => {
|
|
1475
1475
|
const iterator = elements[Symbol.iterator]()
|
|
1476
1476
|
const builder: Array<A> = []
|
|
@@ -1499,8 +1499,8 @@ export const takeWhile = dual<
|
|
|
1499
1499
|
export const tapBoth = dual<
|
|
1500
1500
|
<E, X, E2, R2, A, X1, E3, R3>(
|
|
1501
1501
|
options: {
|
|
1502
|
-
readonly onFailure: (e: NoInfer<E>) => Effect.Effect<X, E2, R2>
|
|
1503
|
-
readonly onSuccess: (a: NoInfer<A>) => Effect.Effect<X1, E3, R3>
|
|
1502
|
+
readonly onFailure: (e: Types.NoInfer<E>) => Effect.Effect<X, E2, R2>
|
|
1503
|
+
readonly onSuccess: (a: Types.NoInfer<A>) => Effect.Effect<X1, E3, R3>
|
|
1504
1504
|
}
|
|
1505
1505
|
) => <R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2 | E3, R | R2 | R3>,
|
|
1506
1506
|
<A, E, R, X, E2, R2, X1, E3, R3>(
|
|
@@ -1545,7 +1545,7 @@ export const tapDefect = dual<
|
|
|
1545
1545
|
/* @internal */
|
|
1546
1546
|
export const tapError = dual<
|
|
1547
1547
|
<E, X, E2, R2>(
|
|
1548
|
-
f: (e: NoInfer<E>) => Effect.Effect<X, E2, R2>
|
|
1548
|
+
f: (e: Types.NoInfer<E>) => Effect.Effect<X, E2, R2>
|
|
1549
1549
|
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>,
|
|
1550
1550
|
<A, E, R, X, E2, R2>(
|
|
1551
1551
|
self: Effect.Effect<A, E, R>,
|
|
@@ -1587,7 +1587,7 @@ export const tapErrorTag = dual<
|
|
|
1587
1587
|
/* @internal */
|
|
1588
1588
|
export const tapErrorCause = dual<
|
|
1589
1589
|
<E, X, E2, R2>(
|
|
1590
|
-
f: (cause: Cause.Cause<NoInfer<E>>) => Effect.Effect<X, E2, R2>
|
|
1590
|
+
f: (cause: Cause.Cause<Types.NoInfer<E>>) => Effect.Effect<X, E2, R2>
|
|
1591
1591
|
) => <A, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2, R | R2>,
|
|
1592
1592
|
<A, E, R, X, E2, R2>(
|
|
1593
1593
|
self: Effect.Effect<A, E, R>,
|
|
@@ -1768,26 +1768,26 @@ export const updateFiberRefs = (
|
|
|
1768
1768
|
|
|
1769
1769
|
/* @internal */
|
|
1770
1770
|
export const updateService = dual<
|
|
1771
|
-
<
|
|
1772
|
-
tag:
|
|
1773
|
-
f: (service:
|
|
1774
|
-
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R |
|
|
1775
|
-
<A, E, R,
|
|
1771
|
+
<I, S>(
|
|
1772
|
+
tag: Context.Tag<I, S>,
|
|
1773
|
+
f: (service: Types.NoInfer<S>) => Types.NoInfer<S>
|
|
1774
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | I>,
|
|
1775
|
+
<A, E, R, I, S>(
|
|
1776
1776
|
self: Effect.Effect<A, E, R>,
|
|
1777
|
-
tag:
|
|
1778
|
-
f: (service:
|
|
1779
|
-
) => Effect.Effect<A, E, R |
|
|
1780
|
-
>(3, <A, E, R,
|
|
1777
|
+
tag: Context.Tag<I, S>,
|
|
1778
|
+
f: (service: Types.NoInfer<S>) => Types.NoInfer<S>
|
|
1779
|
+
) => Effect.Effect<A, E, R | I>
|
|
1780
|
+
>(3, <A, E, R, I, S>(
|
|
1781
1781
|
self: Effect.Effect<A, E, R>,
|
|
1782
|
-
tag:
|
|
1783
|
-
f: (service:
|
|
1782
|
+
tag: Context.Tag<I, S>,
|
|
1783
|
+
f: (service: Types.NoInfer<S>) => Types.NoInfer<S>
|
|
1784
1784
|
) =>
|
|
1785
1785
|
core.mapInputContext(self, (context) =>
|
|
1786
1786
|
Context.add(
|
|
1787
1787
|
context,
|
|
1788
1788
|
tag,
|
|
1789
1789
|
f(Context.unsafeGet(context, tag))
|
|
1790
|
-
)) as Effect.Effect<A, E, R |
|
|
1790
|
+
)) as Effect.Effect<A, E, R | I>)
|
|
1791
1791
|
|
|
1792
1792
|
/* @internal */
|
|
1793
1793
|
export const when = dual<
|
package/src/internal/core.ts
CHANGED
|
@@ -1421,6 +1421,24 @@ export const gen: typeof Effect.gen = function() {
|
|
|
1421
1421
|
return fromIterator(() => f(pipe))
|
|
1422
1422
|
}
|
|
1423
1423
|
|
|
1424
|
+
/** @internal */
|
|
1425
|
+
export const fnUntraced: Effect.fn.Gen = (body: Function, ...pipeables: Array<any>) =>
|
|
1426
|
+
Object.defineProperty(
|
|
1427
|
+
pipeables.length === 0
|
|
1428
|
+
? function(this: any, ...args: Array<any>) {
|
|
1429
|
+
return fromIterator(() => body.apply(this, args))
|
|
1430
|
+
}
|
|
1431
|
+
: function(this: any, ...args: Array<any>) {
|
|
1432
|
+
let effect = fromIterator(() => body.apply(this, args))
|
|
1433
|
+
for (const x of pipeables) {
|
|
1434
|
+
effect = x(effect, ...args)
|
|
1435
|
+
}
|
|
1436
|
+
return effect
|
|
1437
|
+
},
|
|
1438
|
+
"length",
|
|
1439
|
+
{ value: body.length, configurable: true }
|
|
1440
|
+
)
|
|
1441
|
+
|
|
1424
1442
|
/* @internal */
|
|
1425
1443
|
export const withConcurrency = dual<
|
|
1426
1444
|
(concurrency: number | "unbounded") => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
@@ -3040,6 +3058,68 @@ export const mapInputContext = dual<
|
|
|
3040
3058
|
f: (context: Context.Context<R2>) => Context.Context<R>
|
|
3041
3059
|
) => contextWithEffect((context: Context.Context<R2>) => provideContext(self, f(context))))
|
|
3042
3060
|
|
|
3061
|
+
// -----------------------------------------------------------------------------
|
|
3062
|
+
// Filtering
|
|
3063
|
+
// -----------------------------------------------------------------------------
|
|
3064
|
+
|
|
3065
|
+
/** @internal */
|
|
3066
|
+
export const filterEffectOrElse: {
|
|
3067
|
+
<A, E2, R2, A2, E3, R3>(
|
|
3068
|
+
options: {
|
|
3069
|
+
readonly predicate: (a: NoInfer<A>) => Effect.Effect<boolean, E2, R2>
|
|
3070
|
+
readonly orElse: (a: NoInfer<A>) => Effect.Effect<A2, E3, R3>
|
|
3071
|
+
}
|
|
3072
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A | A2, E | E2 | E3, R | R2 | R3>
|
|
3073
|
+
<A, E, R, E2, R2, A2, E3, R3>(
|
|
3074
|
+
self: Effect.Effect<A, E, R>,
|
|
3075
|
+
options: {
|
|
3076
|
+
readonly predicate: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
3077
|
+
readonly orElse: (a: A) => Effect.Effect<A2, E3, R3>
|
|
3078
|
+
}
|
|
3079
|
+
): Effect.Effect<A | A2, E | E2 | E3, R | R2 | R3>
|
|
3080
|
+
} = dual(2, <A, E, R, E2, R2, A2, E3, R3>(
|
|
3081
|
+
self: Effect.Effect<A, E, R>,
|
|
3082
|
+
options: {
|
|
3083
|
+
readonly predicate: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
3084
|
+
readonly orElse: (a: A) => Effect.Effect<A2, E3, R3>
|
|
3085
|
+
}
|
|
3086
|
+
): Effect.Effect<A | A2, E | E2 | E3, R | R2 | R3> =>
|
|
3087
|
+
flatMap(
|
|
3088
|
+
self,
|
|
3089
|
+
(a) =>
|
|
3090
|
+
flatMap(
|
|
3091
|
+
options.predicate(a),
|
|
3092
|
+
(pass): Effect.Effect<A | A2, E3, R3> => pass ? succeed(a) : options.orElse(a)
|
|
3093
|
+
)
|
|
3094
|
+
))
|
|
3095
|
+
|
|
3096
|
+
/** @internal */
|
|
3097
|
+
export const filterEffectOrFail: {
|
|
3098
|
+
<A, E2, R2, E3>(
|
|
3099
|
+
options: {
|
|
3100
|
+
readonly predicate: (a: NoInfer<A>) => Effect.Effect<boolean, E2, R2>
|
|
3101
|
+
readonly orFailWith: (a: NoInfer<A>) => E3
|
|
3102
|
+
}
|
|
3103
|
+
): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E2 | E3, R | R2>
|
|
3104
|
+
<A, E, R, E2, R2, E3>(
|
|
3105
|
+
self: Effect.Effect<A, E, R>,
|
|
3106
|
+
options: {
|
|
3107
|
+
readonly predicate: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
3108
|
+
readonly orFailWith: (a: A) => E3
|
|
3109
|
+
}
|
|
3110
|
+
): Effect.Effect<A, E | E2 | E3, R | R2>
|
|
3111
|
+
} = dual(2, <A, E, R, E2, R2, E3>(
|
|
3112
|
+
self: Effect.Effect<A, E, R>,
|
|
3113
|
+
options: {
|
|
3114
|
+
readonly predicate: (a: A) => Effect.Effect<boolean, E2, R2>
|
|
3115
|
+
readonly orFailWith: (a: A) => E3
|
|
3116
|
+
}
|
|
3117
|
+
): Effect.Effect<A, E | E2 | E3, R | R2> =>
|
|
3118
|
+
filterEffectOrElse(self, {
|
|
3119
|
+
predicate: options.predicate,
|
|
3120
|
+
orElse: (a) => fail(options.orFailWith(a))
|
|
3121
|
+
}))
|
|
3122
|
+
|
|
3043
3123
|
// -----------------------------------------------------------------------------
|
|
3044
3124
|
// Tracing
|
|
3045
3125
|
// -----------------------------------------------------------------------------
|
package/src/internal/dateTime.ts
CHANGED
|
@@ -306,6 +306,9 @@ export const unsafeNow: LazyArg<DateTime.Utc> = () => makeUtc(Date.now())
|
|
|
306
306
|
// time zones
|
|
307
307
|
// =============================================================================
|
|
308
308
|
|
|
309
|
+
/** @internal */
|
|
310
|
+
export const toUtc = (self: DateTime.DateTime): DateTime.Utc => makeUtc(self.epochMillis)
|
|
311
|
+
|
|
309
312
|
/** @internal */
|
|
310
313
|
export const setZone: {
|
|
311
314
|
(zone: DateTime.TimeZone, options?: {
|
package/src/internal/differ.ts
CHANGED
|
@@ -7,6 +7,7 @@ import * as Dual from "../Function.js"
|
|
|
7
7
|
import { constant, identity } from "../Function.js"
|
|
8
8
|
import type { HashMap } from "../HashMap.js"
|
|
9
9
|
import type { HashSet } from "../HashSet.js"
|
|
10
|
+
import { pipeArguments } from "../Pipeable.js"
|
|
10
11
|
import * as ChunkPatch from "./differ/chunkPatch.js"
|
|
11
12
|
import * as ContextPatch from "./differ/contextPatch.js"
|
|
12
13
|
import * as HashMapPatch from "./differ/hashMapPatch.js"
|
|
@@ -22,6 +23,9 @@ export const DifferProto = {
|
|
|
22
23
|
[DifferTypeId]: {
|
|
23
24
|
_P: identity,
|
|
24
25
|
_V: identity
|
|
26
|
+
},
|
|
27
|
+
pipe() {
|
|
28
|
+
return pipeArguments(this, arguments)
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
|
|
@@ -371,10 +371,11 @@ export const forkIn = dual<
|
|
|
371
371
|
core.void :
|
|
372
372
|
core.asVoid(core.interruptFiber(fiber))
|
|
373
373
|
)
|
|
374
|
-
|
|
374
|
+
const key = {}
|
|
375
|
+
scopeImpl.state.finalizers.set(key, finalizer)
|
|
375
376
|
fiber.addObserver(() => {
|
|
376
377
|
if (scopeImpl.state._tag === "Closed") return
|
|
377
|
-
scopeImpl.state.finalizers.delete(
|
|
378
|
+
scopeImpl.state.finalizers.delete(key)
|
|
378
379
|
})
|
|
379
380
|
} else {
|
|
380
381
|
fiber.unsafeInterruptAsFork(parent.id())
|
|
@@ -1631,6 +1631,30 @@ export const annotateLogsScoped: {
|
|
|
1631
1631
|
)
|
|
1632
1632
|
}
|
|
1633
1633
|
|
|
1634
|
+
/** @internal */
|
|
1635
|
+
export const whenLogLevel = dual<
|
|
1636
|
+
(
|
|
1637
|
+
level: LogLevel.LogLevel | LogLevel.Literal
|
|
1638
|
+
) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E, R>,
|
|
1639
|
+
<A, E, R>(
|
|
1640
|
+
effect: Effect.Effect<A, E, R>,
|
|
1641
|
+
level: LogLevel.LogLevel | LogLevel.Literal
|
|
1642
|
+
) => Effect.Effect<Option.Option<A>, E, R>
|
|
1643
|
+
>(2, (effect, level) => {
|
|
1644
|
+
const requiredLogLevel = typeof level === "string" ? LogLevel.fromLiteral(level) : level
|
|
1645
|
+
|
|
1646
|
+
return core.withFiberRuntime((fiberState) => {
|
|
1647
|
+
const minimumLogLevel = fiberState.getFiberRef(currentMinimumLogLevel)
|
|
1648
|
+
|
|
1649
|
+
// Imitate the behaviour of `FiberRuntime.log`
|
|
1650
|
+
if (LogLevel.greaterThan(minimumLogLevel, requiredLogLevel)) {
|
|
1651
|
+
return core.succeed(Option.none())
|
|
1652
|
+
}
|
|
1653
|
+
|
|
1654
|
+
return core.map(effect, Option.some)
|
|
1655
|
+
})
|
|
1656
|
+
})
|
|
1657
|
+
|
|
1634
1658
|
// circular with Effect
|
|
1635
1659
|
|
|
1636
1660
|
/* @internal */
|
|
@@ -3211,7 +3235,7 @@ export const scope: Effect.Effect<Scope.Scope, never, Scope.Scope> = scopeTag
|
|
|
3211
3235
|
export interface ScopeImpl extends Scope.CloseableScope {
|
|
3212
3236
|
state: {
|
|
3213
3237
|
readonly _tag: "Open"
|
|
3214
|
-
readonly finalizers:
|
|
3238
|
+
readonly finalizers: Map<{}, Scope.Scope.Finalizer>
|
|
3215
3239
|
} | {
|
|
3216
3240
|
readonly _tag: "Closed"
|
|
3217
3241
|
readonly exit: Exit.Exit<unknown, unknown>
|
|
@@ -3220,7 +3244,7 @@ export interface ScopeImpl extends Scope.CloseableScope {
|
|
|
3220
3244
|
|
|
3221
3245
|
const scopeUnsafeAddFinalizer = (scope: ScopeImpl, fin: Scope.Scope.Finalizer): void => {
|
|
3222
3246
|
if (scope.state._tag === "Open") {
|
|
3223
|
-
scope.state.finalizers.
|
|
3247
|
+
scope.state.finalizers.set({}, fin)
|
|
3224
3248
|
}
|
|
3225
3249
|
}
|
|
3226
3250
|
|
|
@@ -3237,12 +3261,13 @@ const ScopeImplProto: Omit<ScopeImpl, "strategy" | "state"> = {
|
|
|
3237
3261
|
newScope.state = this.state
|
|
3238
3262
|
return newScope
|
|
3239
3263
|
}
|
|
3264
|
+
const key = {}
|
|
3240
3265
|
const fin = (exit: Exit.Exit<unknown, unknown>) => newScope.close(exit)
|
|
3241
|
-
this.state.finalizers.
|
|
3266
|
+
this.state.finalizers.set(key, fin)
|
|
3242
3267
|
scopeUnsafeAddFinalizer(newScope, (_) =>
|
|
3243
3268
|
core.sync(() => {
|
|
3244
3269
|
if (this.state._tag === "Open") {
|
|
3245
|
-
this.state.finalizers.delete(
|
|
3270
|
+
this.state.finalizers.delete(key)
|
|
3246
3271
|
}
|
|
3247
3272
|
}))
|
|
3248
3273
|
return newScope
|
|
@@ -3297,7 +3322,7 @@ const ScopeImplProto: Omit<ScopeImpl, "strategy" | "state"> = {
|
|
|
3297
3322
|
if (this.state._tag === "Closed") {
|
|
3298
3323
|
return fin(this.state.exit)
|
|
3299
3324
|
}
|
|
3300
|
-
this.state.finalizers.
|
|
3325
|
+
this.state.finalizers.set({}, fin)
|
|
3301
3326
|
return core.void
|
|
3302
3327
|
})
|
|
3303
3328
|
}
|
|
@@ -3308,7 +3333,7 @@ const scopeUnsafeMake = (
|
|
|
3308
3333
|
): ScopeImpl => {
|
|
3309
3334
|
const scope = Object.create(ScopeImplProto)
|
|
3310
3335
|
scope.strategy = strategy
|
|
3311
|
-
scope.state = { _tag: "Open", finalizers: new
|
|
3336
|
+
scope.state = { _tag: "Open", finalizers: new Map() }
|
|
3312
3337
|
return scope
|
|
3313
3338
|
}
|
|
3314
3339
|
|
package/src/internal/hashMap.ts
CHANGED
|
@@ -539,3 +539,19 @@ export const findFirst: {
|
|
|
539
539
|
return Option.none()
|
|
540
540
|
}
|
|
541
541
|
)
|
|
542
|
+
|
|
543
|
+
/** @internal */
|
|
544
|
+
export const some: {
|
|
545
|
+
<K, A>(predicate: (a: NoInfer<A>, k: K) => boolean): (self: HM.HashMap<K, A>) => boolean
|
|
546
|
+
<K, A>(self: HM.HashMap<K, A>, predicate: (a: A, k: K) => boolean): boolean
|
|
547
|
+
} = Dual.dual(
|
|
548
|
+
2,
|
|
549
|
+
<K, A>(self: HM.HashMap<K, A>, predicate: (a: A, k: K) => boolean): boolean => {
|
|
550
|
+
for (const ka of self) {
|
|
551
|
+
if (predicate(ka[1], ka[0])) {
|
|
552
|
+
return true
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
return false
|
|
556
|
+
}
|
|
557
|
+
)
|
|
@@ -174,7 +174,7 @@ const makeImpl = <K, A, E, R>(
|
|
|
174
174
|
}
|
|
175
175
|
})
|
|
176
176
|
const activePools: Effect.Effect<Array<Pool.Pool<A, E>>> = core.suspend(() =>
|
|
177
|
-
core.forEachSequential(
|
|
177
|
+
core.forEachSequential(HashMap.toValues(MutableRef.get(map)), (value) => {
|
|
178
178
|
switch (value._tag) {
|
|
179
179
|
case "Complete": {
|
|
180
180
|
return core.succeed(value.pool)
|