effect 3.7.3 → 3.8.1
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/Mailbox/package.json +6 -0
- package/dist/cjs/Deferred.js.map +1 -1
- package/dist/cjs/Duration.js +99 -35
- package/dist/cjs/Duration.js.map +1 -1
- package/dist/cjs/Effect.js +30 -3
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Fiber.js.map +1 -1
- package/dist/cjs/FiberRef.js.map +1 -1
- package/dist/cjs/Logger.js +29 -1
- package/dist/cjs/Logger.js.map +1 -1
- package/dist/cjs/Mailbox.js +95 -0
- package/dist/cjs/Mailbox.js.map +1 -0
- package/dist/cjs/MutableHashMap.js +13 -1
- package/dist/cjs/MutableHashMap.js.map +1 -1
- package/dist/cjs/Number.js +20 -1
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Queue.js.map +1 -1
- package/dist/cjs/RcMap.js +6 -1
- package/dist/cjs/RcMap.js.map +1 -1
- package/dist/cjs/RcRef.js.map +1 -1
- package/dist/cjs/Ref.js.map +1 -1
- package/dist/cjs/Stream.js +11 -2
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/SubscriptionRef.js.map +1 -1
- package/dist/cjs/SynchronizedRef.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/core.js +32 -25
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js +8 -5
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/effect/circular.js +81 -8
- package/dist/cjs/internal/effect/circular.js.map +1 -1
- package/dist/cjs/internal/encoding/base64.js +13 -9
- package/dist/cjs/internal/encoding/base64.js.map +1 -1
- package/dist/cjs/internal/encoding/base64Url.js +6 -5
- package/dist/cjs/internal/encoding/base64Url.js.map +1 -1
- package/dist/cjs/internal/fiber.js +51 -26
- package/dist/cjs/internal/fiber.js.map +1 -1
- package/dist/cjs/internal/fiberRefs.js.map +1 -1
- package/dist/cjs/internal/fiberRuntime.js +126 -96
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js +6 -1
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/layer.js +3 -3
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/logger.js +4 -1
- package/dist/cjs/internal/logger.js.map +1 -1
- package/dist/cjs/internal/mailbox.js +408 -0
- package/dist/cjs/internal/mailbox.js.map +1 -0
- package/dist/cjs/internal/managedRuntime.js +1 -1
- package/dist/cjs/internal/managedRuntime.js.map +1 -1
- package/dist/cjs/internal/pubsub.js +6 -1
- package/dist/cjs/internal/pubsub.js.map +1 -1
- package/dist/cjs/internal/queue.js +6 -1
- package/dist/cjs/internal/queue.js.map +1 -1
- package/dist/cjs/internal/rcMap.js +7 -1
- package/dist/cjs/internal/rcMap.js.map +1 -1
- package/dist/cjs/internal/rcRef.js +10 -6
- package/dist/cjs/internal/rcRef.js.map +1 -1
- package/dist/cjs/internal/ref.js +7 -7
- package/dist/cjs/internal/ref.js.map +1 -1
- package/dist/cjs/internal/runtime.js +1 -1
- package/dist/cjs/internal/runtime.js.map +1 -1
- package/dist/cjs/internal/schedule.js +6 -7
- package/dist/cjs/internal/schedule.js.map +1 -1
- package/dist/cjs/internal/stream.js +7 -2
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/subscriptionRef.js +7 -8
- package/dist/cjs/internal/subscriptionRef.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Deferred.d.ts +21 -2
- package/dist/dts/Deferred.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts +38 -1
- package/dist/dts/Duration.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +45 -0
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Fiber.d.ts +69 -2
- package/dist/dts/Fiber.d.ts.map +1 -1
- package/dist/dts/FiberRef.d.ts +21 -2
- package/dist/dts/FiberRef.d.ts.map +1 -1
- package/dist/dts/Logger.d.ts +28 -0
- package/dist/dts/Logger.d.ts.map +1 -1
- package/dist/dts/Mailbox.d.ts +220 -0
- package/dist/dts/Mailbox.d.ts.map +1 -0
- package/dist/dts/MutableHashMap.d.ts +5 -0
- package/dist/dts/MutableHashMap.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +19 -0
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Queue.d.ts +40 -1
- package/dist/dts/Queue.d.ts.map +1 -1
- package/dist/dts/RcMap.d.ts +5 -0
- package/dist/dts/RcMap.d.ts.map +1 -1
- package/dist/dts/RcRef.d.ts +22 -2
- package/dist/dts/RcRef.d.ts.map +1 -1
- package/dist/dts/Ref.d.ts +22 -2
- package/dist/dts/Ref.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +30 -0
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/SubscriptionRef.d.ts +20 -0
- package/dist/dts/SubscriptionRef.d.ts.map +1 -1
- package/dist/dts/SynchronizedRef.d.ts +20 -0
- package/dist/dts/SynchronizedRef.d.ts.map +1 -1
- package/dist/dts/index.d.ts +5 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/fiber.d.ts.map +1 -1
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/dts/internal/logger.d.ts.map +1 -1
- package/dist/dts/internal/mailbox.d.ts +2 -0
- package/dist/dts/internal/mailbox.d.ts.map +1 -0
- package/dist/dts/internal/stream.d.ts +22 -0
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Deferred.js.map +1 -1
- package/dist/esm/Duration.js +92 -33
- package/dist/esm/Duration.js.map +1 -1
- package/dist/esm/Effect.js +27 -0
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Fiber.js.map +1 -1
- package/dist/esm/FiberRef.js.map +1 -1
- package/dist/esm/Logger.js +28 -0
- package/dist/esm/Logger.js.map +1 -1
- package/dist/esm/Mailbox.js +85 -0
- package/dist/esm/Mailbox.js.map +1 -0
- package/dist/esm/MutableHashMap.js +11 -0
- package/dist/esm/MutableHashMap.js.map +1 -1
- package/dist/esm/Number.js +19 -0
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Queue.js.map +1 -1
- package/dist/esm/RcMap.js +5 -0
- package/dist/esm/RcMap.js.map +1 -1
- package/dist/esm/RcRef.js.map +1 -1
- package/dist/esm/Ref.js.map +1 -1
- package/dist/esm/Stream.js +9 -0
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/SubscriptionRef.js.map +1 -1
- package/dist/esm/SynchronizedRef.js.map +1 -1
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/core.js +33 -26
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/defaultServices.js +6 -4
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/effect/circular.js +77 -6
- package/dist/esm/internal/effect/circular.js.map +1 -1
- package/dist/esm/internal/encoding/base64.js +11 -8
- package/dist/esm/internal/encoding/base64.js.map +1 -1
- package/dist/esm/internal/encoding/base64Url.js +6 -5
- package/dist/esm/internal/encoding/base64Url.js.map +1 -1
- package/dist/esm/internal/fiber.js +51 -26
- package/dist/esm/internal/fiber.js.map +1 -1
- package/dist/esm/internal/fiberRefs.js.map +1 -1
- package/dist/esm/internal/fiberRuntime.js +124 -95
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js +6 -1
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/layer.js +3 -3
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/logger.js +3 -0
- package/dist/esm/internal/logger.js.map +1 -1
- package/dist/esm/internal/mailbox.js +395 -0
- package/dist/esm/internal/mailbox.js.map +1 -0
- package/dist/esm/internal/managedRuntime.js +1 -1
- package/dist/esm/internal/managedRuntime.js.map +1 -1
- package/dist/esm/internal/pubsub.js +6 -1
- package/dist/esm/internal/pubsub.js.map +1 -1
- package/dist/esm/internal/queue.js +6 -1
- package/dist/esm/internal/queue.js.map +1 -1
- package/dist/esm/internal/rcMap.js +5 -0
- package/dist/esm/internal/rcMap.js.map +1 -1
- package/dist/esm/internal/rcRef.js +10 -6
- package/dist/esm/internal/rcRef.js.map +1 -1
- package/dist/esm/internal/ref.js +7 -7
- package/dist/esm/internal/ref.js.map +1 -1
- package/dist/esm/internal/runtime.js +1 -1
- package/dist/esm/internal/runtime.js.map +1 -1
- package/dist/esm/internal/schedule.js +6 -7
- package/dist/esm/internal/schedule.js.map +1 -1
- package/dist/esm/internal/stream.js +5 -0
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/subscriptionRef.js +7 -8
- package/dist/esm/internal/subscriptionRef.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +9 -1
- package/src/Deferred.ts +21 -2
- package/src/Duration.ts +112 -35
- package/src/Effect.ts +52 -0
- package/src/Fiber.ts +78 -2
- package/src/FiberRef.ts +21 -2
- package/src/Logger.ts +30 -0
- package/src/Mailbox.ts +236 -0
- package/src/MutableHashMap.ts +12 -0
- package/src/Number.ts +23 -0
- package/src/Queue.ts +42 -1
- package/src/RcMap.ts +6 -0
- package/src/RcRef.ts +24 -2
- package/src/Ref.ts +22 -2
- package/src/Stream.ts +36 -0
- package/src/SubscriptionRef.ts +22 -0
- package/src/SynchronizedRef.ts +20 -0
- package/src/index.ts +6 -0
- package/src/internal/core.ts +31 -28
- package/src/internal/defaultServices.ts +9 -10
- package/src/internal/effect/circular.ts +83 -6
- package/src/internal/encoding/base64.ts +15 -11
- package/src/internal/encoding/base64Url.ts +6 -5
- package/src/internal/fiber.ts +56 -29
- package/src/internal/fiberRefs.ts +1 -2
- package/src/internal/fiberRuntime.ts +133 -102
- package/src/internal/groupBy.ts +7 -1
- package/src/internal/layer.ts +3 -3
- package/src/internal/logger.ts +4 -0
- package/src/internal/mailbox.ts +461 -0
- package/src/internal/managedRuntime.ts +1 -1
- package/src/internal/pubsub.ts +9 -2
- package/src/internal/queue.ts +7 -1
- package/src/internal/rcMap.ts +8 -0
- package/src/internal/rcRef.ts +10 -6
- package/src/internal/ref.ts +7 -7
- package/src/internal/runtime.ts +1 -1
- package/src/internal/schedule.ts +10 -7
- package/src/internal/stream.ts +53 -0
- package/src/internal/subscriptionRef.ts +7 -8
- package/src/internal/version.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Effect from "../Effect.js";
|
|
2
|
+
import * as Effectable from "../Effectable.js";
|
|
2
3
|
import { dual, pipe } from "../Function.js";
|
|
3
|
-
import { pipeArguments } from "../Pipeable.js";
|
|
4
4
|
import * as PubSub from "../PubSub.js";
|
|
5
5
|
import * as Readable from "../Readable.js";
|
|
6
6
|
import * as Ref from "../Ref.js";
|
|
@@ -18,25 +18,24 @@ const subscriptionRefVariance = {
|
|
|
18
18
|
_A: _ => _
|
|
19
19
|
};
|
|
20
20
|
/** @internal */
|
|
21
|
-
class SubscriptionRefImpl {
|
|
21
|
+
class SubscriptionRefImpl extends Effectable.Class {
|
|
22
22
|
ref;
|
|
23
23
|
pubsub;
|
|
24
24
|
semaphore;
|
|
25
|
-
[Readable.TypeId];
|
|
26
|
-
[Subscribable.TypeId];
|
|
25
|
+
[Readable.TypeId] = Readable.TypeId;
|
|
26
|
+
[Subscribable.TypeId] = Subscribable.TypeId;
|
|
27
27
|
[Ref.RefTypeId] = _ref.refVariance;
|
|
28
28
|
[Synchronized.SynchronizedRefTypeId] = _circular.synchronizedVariance;
|
|
29
29
|
[SubscriptionRefTypeId] = subscriptionRefVariance;
|
|
30
30
|
constructor(ref, pubsub, semaphore) {
|
|
31
|
+
super();
|
|
31
32
|
this.ref = ref;
|
|
32
33
|
this.pubsub = pubsub;
|
|
33
34
|
this.semaphore = semaphore;
|
|
34
|
-
this[Readable.TypeId] = Readable.TypeId;
|
|
35
|
-
this[Subscribable.TypeId] = Subscribable.TypeId;
|
|
36
35
|
this.get = Ref.get(this.ref);
|
|
37
36
|
}
|
|
38
|
-
|
|
39
|
-
return
|
|
37
|
+
commit() {
|
|
38
|
+
return this.get;
|
|
40
39
|
}
|
|
41
40
|
get;
|
|
42
41
|
get changes() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptionRef.js","names":["Effect","
|
|
1
|
+
{"version":3,"file":"subscriptionRef.js","names":["Effect","Effectable","dual","pipe","PubSub","Readable","Ref","Subscribable","Synchronized","_circular","_ref","stream","SubscriptionRefSymbolKey","SubscriptionRefTypeId","Symbol","for","subscriptionRefVariance","_A","_","SubscriptionRefImpl","Class","ref","pubsub","semaphore","TypeId","RefTypeId","refVariance","SynchronizedRefTypeId","synchronizedVariance","constructor","get","commit","changes","flatMap","a","map","fromPubSub","scoped","s","concat","make","withPermits","unwrapScoped","modify","f","modifyEffect","succeed","b","set","as","zipLeft","publish","self","value","all","unbounded","makeSemaphore"],"sources":["../../../src/internal/subscriptionRef.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,cAAc;AACtC,OAAO,KAAKC,UAAU,MAAM,kBAAkB;AAC9C,SAASC,IAAI,EAAEC,IAAI,QAAQ,gBAAgB;AAC3C,OAAO,KAAKC,MAAM,MAAM,cAAc;AACtC,OAAO,KAAKC,QAAQ,MAAM,gBAAgB;AAC1C,OAAO,KAAKC,GAAG,MAAM,WAAW;AAEhC,OAAO,KAAKC,YAAY,MAAM,oBAAoB;AAElD,OAAO,KAAKC,YAAY,MAAM,uBAAuB;AACrD,OAAO,KAAKC,SAAS,MAAM,sBAAsB;AACjD,OAAO,KAAKC,IAAI,MAAM,UAAU;AAChC,OAAO,KAAKC,MAAM,MAAM,aAAa;AAErC;AACA,MAAMC,wBAAwB,GAAG,wBAAwB;AAEzD;AACA,OAAO,MAAMC,qBAAqB,gBAA0CC,MAAM,CAACC,GAAG,CACpFH,wBAAwB,CACgB;AAE1C,MAAMI,uBAAuB,GAAG;EAC9B;EACAC,EAAE,EAAGC,CAAM,IAAKA;CACjB;AAED;AACA,MAAMC,mBAA8B,SAAQlB,UAAU,CAACmB,KAAQ;EAOlDC,GAAA;EACAC,MAAA;EACAC,SAAA;EARF,CAAClB,QAAQ,CAACmB,MAAM,IAAqBnB,QAAQ,CAACmB,MAAM;EACpD,CAACjB,YAAY,CAACiB,MAAM,IAAyBjB,YAAY,CAACiB,MAAM;EAChE,CAAClB,GAAG,CAACmB,SAAS,IAAIf,IAAI,CAACgB,WAAW;EAClC,CAAClB,YAAY,CAACmB,qBAAqB,IAAIlB,SAAS,CAACmB,oBAAoB;EACrE,CAACf,qBAAqB,IAAIG,uBAAuB;EAC1Da,YACWR,GAAe,EACfC,MAAwB,EACxBC,SAA2B;IAEpC,KAAK,EAAE;IAJE,KAAAF,GAAG,GAAHA,GAAG;IACH,KAAAC,MAAM,GAANA,MAAM;IACN,KAAAC,SAAS,GAATA,SAAS;IAGlB,IAAI,CAACO,GAAG,GAAGxB,GAAG,CAACwB,GAAG,CAAC,IAAI,CAACT,GAAG,CAAC;EAC9B;EACAU,MAAMA,CAAA;IACJ,OAAO,IAAI,CAACD,GAAG;EACjB;EACSA,GAAG;EACZ,IAAIE,OAAOA,CAAA;IACT,OAAO7B,IAAI,CACTG,GAAG,CAACwB,GAAG,CAAC,IAAI,CAACT,GAAG,CAAC,EACjBrB,MAAM,CAACiC,OAAO,CAAEC,CAAC,IACflC,MAAM,CAACmC,GAAG,CACRxB,MAAM,CAACyB,UAAU,CAAC,IAAI,CAACd,MAAM,EAAE;MAAEe,MAAM,EAAE;IAAI,CAAE,CAAC,EAC/CC,CAAC,IACA3B,MAAM,CAAC4B,MAAM,CACX5B,MAAM,CAAC6B,IAAI,CAACN,CAAC,CAAC,EACdI,CAAC,CACF,CACJ,CACF,EACD,IAAI,CAACf,SAAS,CAACkB,WAAW,CAAC,CAAC,CAAC,EAC7B9B,MAAM,CAAC+B,YAAY,CACpB;EACH;EACAC,MAAMA,CAAIC,CAA4B;IACpC,OAAO,IAAI,CAACC,YAAY,CAAEX,CAAC,IAAKlC,MAAM,CAAC8C,OAAO,CAACF,CAAC,CAACV,CAAC,CAAC,CAAC,CAAC;EACvD;EACAW,YAAYA,CAAUD,CAAiD;IACrE,OAAOzC,IAAI,CACTG,GAAG,CAACwB,GAAG,CAAC,IAAI,CAACT,GAAG,CAAC,EACjBrB,MAAM,CAACiC,OAAO,CAACW,CAAC,CAAC,EACjB5C,MAAM,CAACiC,OAAO,CAAC,CAAC,CAACc,CAAC,EAAEb,CAAC,CAAC,KACpB/B,IAAI,CACFG,GAAG,CAAC0C,GAAG,CAAC,IAAI,CAAC3B,GAAG,EAAEa,CAAC,CAAC,EACpBlC,MAAM,CAACiD,EAAE,CAACF,CAAC,CAAC,EACZ/C,MAAM,CAACkD,OAAO,CAAC9C,MAAM,CAAC+C,OAAO,CAAC,IAAI,CAAC7B,MAAM,EAAEY,CAAC,CAAC,CAAC,CAC/C,CACF,EACD,IAAI,CAACX,SAAS,CAACkB,WAAW,CAAC,CAAC,CAAC,CAC9B;EACH;;AAGF;AACA,OAAO,MAAMX,GAAG,GAAOsB,IAAwC,IAAuB9C,GAAG,CAACwB,GAAG,CAACsB,IAAI,CAAC/B,GAAG,CAAC;AAEvG;AACA,OAAO,MAAMmB,IAAI,GAAOa,KAAQ,IAC9BlD,IAAI,CACFH,MAAM,CAACsD,GAAG,CAAC,CACTlD,MAAM,CAACmD,SAAS,EAAK,EACrBjD,GAAG,CAACkC,IAAI,CAACa,KAAK,CAAC,EACfrD,MAAM,CAACwD,aAAa,CAAC,CAAC,CAAC,CACxB,CAAC,EACFxD,MAAM,CAACmC,GAAG,CAAC,CAAC,CAACb,MAAM,EAAED,GAAG,EAAEE,SAAS,CAAC,KAAK,IAAIJ,mBAAmB,CAACE,GAAG,EAAEC,MAAM,EAAEC,SAAS,CAAC,CAAC,CAC1F;AAEH;AACA,OAAO,MAAMoB,MAAM,gBAAGzC,IAAI,CAMxB,CAAC,EAAE,CACHkD,IAAwC,EACxCR,CAA4B,KACPQ,IAAI,CAACT,MAAM,CAACC,CAAC,CAAC,CAAC;AAEtC;AACA,OAAO,MAAMC,YAAY,gBAAG3C,IAAI,CAQ9B,CAAC,EAAE,CACHkD,IAAwC,EACxCR,CAAiD,KACtBQ,IAAI,CAACP,YAAY,CAACD,CAAC,CAAC,CAAC;AAElD;AACA,OAAO,MAAMI,GAAG,gBAAG9C,IAAI,CAMrB,CAAC,EAAE,CACHkD,IAAwC,EACxCC,KAAQ,KAERlD,IAAI,CACFG,GAAG,CAAC0C,GAAG,CAACI,IAAI,CAAC/B,GAAG,EAAEgC,KAAK,CAAC,EACxBrD,MAAM,CAACkD,OAAO,CAAC9C,MAAM,CAAC+C,OAAO,CAACC,IAAI,CAAC9B,MAAM,EAAE+B,KAAK,CAAC,CAAC,EAClDD,IAAI,CAAC7B,SAAS,CAACkB,WAAW,CAAC,CAAC,CAAC,CAC9B,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.1",
|
|
4
4
|
"description": "The missing standard library for TypeScript, for writing production-grade software.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -302,6 +302,11 @@
|
|
|
302
302
|
"import": "./dist/esm/Logger.js",
|
|
303
303
|
"default": "./dist/cjs/Logger.js"
|
|
304
304
|
},
|
|
305
|
+
"./Mailbox": {
|
|
306
|
+
"types": "./dist/dts/Mailbox.d.ts",
|
|
307
|
+
"import": "./dist/esm/Mailbox.js",
|
|
308
|
+
"default": "./dist/cjs/Mailbox.js"
|
|
309
|
+
},
|
|
305
310
|
"./ManagedRuntime": {
|
|
306
311
|
"types": "./dist/dts/ManagedRuntime.d.ts",
|
|
307
312
|
"import": "./dist/esm/ManagedRuntime.js",
|
|
@@ -998,6 +1003,9 @@
|
|
|
998
1003
|
"Logger": [
|
|
999
1004
|
"./dist/dts/Logger.d.ts"
|
|
1000
1005
|
],
|
|
1006
|
+
"Mailbox": [
|
|
1007
|
+
"./dist/dts/Mailbox.d.ts"
|
|
1008
|
+
],
|
|
1001
1009
|
"ManagedRuntime": [
|
|
1002
1010
|
"./dist/dts/ManagedRuntime.d.ts"
|
|
1003
1011
|
],
|
package/src/Deferred.ts
CHANGED
|
@@ -10,8 +10,8 @@ import * as core from "./internal/core.js"
|
|
|
10
10
|
import * as internal from "./internal/deferred.js"
|
|
11
11
|
import type * as MutableRef from "./MutableRef.js"
|
|
12
12
|
import type * as Option from "./Option.js"
|
|
13
|
-
import type { Pipeable } from "./Pipeable.js"
|
|
14
13
|
import type * as Types from "./Types.js"
|
|
14
|
+
import type * as Unify from "./Unify.js"
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* @since 2.0.0
|
|
@@ -37,11 +37,30 @@ export type DeferredTypeId = typeof DeferredTypeId
|
|
|
37
37
|
* @since 2.0.0
|
|
38
38
|
* @category models
|
|
39
39
|
*/
|
|
40
|
-
export interface Deferred<in out A, in out E = never> extends Deferred.Variance<A, E
|
|
40
|
+
export interface Deferred<in out A, in out E = never> extends Effect.Effect<A, E>, Deferred.Variance<A, E> {
|
|
41
41
|
/** @internal */
|
|
42
42
|
readonly state: MutableRef.MutableRef<internal.State<A, E>>
|
|
43
43
|
/** @internal */
|
|
44
44
|
readonly blockingOn: FiberId.FiberId
|
|
45
|
+
readonly [Unify.typeSymbol]?: unknown
|
|
46
|
+
readonly [Unify.unifySymbol]?: DeferredUnify<this>
|
|
47
|
+
readonly [Unify.ignoreSymbol]?: DeferredUnifyIgnore
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @category models
|
|
52
|
+
* @since 3.8.0
|
|
53
|
+
*/
|
|
54
|
+
export interface DeferredUnify<A extends { [Unify.typeSymbol]?: any }> extends Effect.EffectUnify<A> {
|
|
55
|
+
Deferred?: () => Extract<A[Unify.typeSymbol], Deferred<any>>
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @category models
|
|
60
|
+
* @since 3.8.0
|
|
61
|
+
*/
|
|
62
|
+
export interface DeferredUnifyIgnore extends Effect.EffectUnifyIgnore {
|
|
63
|
+
Effect?: true
|
|
45
64
|
}
|
|
46
65
|
|
|
47
66
|
/**
|
package/src/Duration.ts
CHANGED
|
@@ -282,23 +282,61 @@ export const weeks = (weeks: number): Duration => make(weeks * 604_800_000)
|
|
|
282
282
|
* @since 2.0.0
|
|
283
283
|
* @category getters
|
|
284
284
|
*/
|
|
285
|
-
export const toMillis = (self: DurationInput): number =>
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
case "Nanos":
|
|
291
|
-
return Number(_self.value.nanos) / 1_000_000
|
|
292
|
-
case "Millis":
|
|
293
|
-
return _self.value.millis
|
|
294
|
-
}
|
|
295
|
-
}
|
|
285
|
+
export const toMillis = (self: DurationInput): number =>
|
|
286
|
+
match(self, {
|
|
287
|
+
onMillis: (millis) => millis,
|
|
288
|
+
onNanos: (nanos) => Number(nanos) / 1_000_000
|
|
289
|
+
})
|
|
296
290
|
|
|
297
291
|
/**
|
|
298
292
|
* @since 2.0.0
|
|
299
293
|
* @category getters
|
|
300
294
|
*/
|
|
301
|
-
export const toSeconds = (self: DurationInput): number =>
|
|
295
|
+
export const toSeconds = (self: DurationInput): number =>
|
|
296
|
+
match(self, {
|
|
297
|
+
onMillis: (millis) => millis / 1_000,
|
|
298
|
+
onNanos: (nanos) => Number(nanos) / 1_000_000_000
|
|
299
|
+
})
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* @since 3.8.0
|
|
303
|
+
* @category getters
|
|
304
|
+
*/
|
|
305
|
+
export const toMinutes = (self: DurationInput): number =>
|
|
306
|
+
match(self, {
|
|
307
|
+
onMillis: (millis) => millis / 60_000,
|
|
308
|
+
onNanos: (nanos) => Number(nanos) / 60_000_000_000
|
|
309
|
+
})
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* @since 3.8.0
|
|
313
|
+
* @category getters
|
|
314
|
+
*/
|
|
315
|
+
export const toHours = (self: DurationInput): number =>
|
|
316
|
+
match(self, {
|
|
317
|
+
onMillis: (millis) => millis / 3_600_000,
|
|
318
|
+
onNanos: (nanos) => Number(nanos) / 3_600_000_000_000
|
|
319
|
+
})
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* @since 3.8.0
|
|
323
|
+
* @category getters
|
|
324
|
+
*/
|
|
325
|
+
export const toDays = (self: DurationInput): number =>
|
|
326
|
+
match(self, {
|
|
327
|
+
onMillis: (millis) => millis / 86_400_000,
|
|
328
|
+
onNanos: (nanos) => Number(nanos) / 86_400_000_000_000
|
|
329
|
+
})
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* @since 3.8.0
|
|
333
|
+
* @category getters
|
|
334
|
+
*/
|
|
335
|
+
export const toWeeks = (self: DurationInput): number =>
|
|
336
|
+
match(self, {
|
|
337
|
+
onMillis: (millis) => millis / 604_800_000,
|
|
338
|
+
onNanos: (nanos) => Number(nanos) / 604_800_000_000_000
|
|
339
|
+
})
|
|
302
340
|
|
|
303
341
|
/**
|
|
304
342
|
* Get the duration in nanoseconds as a bigint.
|
|
@@ -501,6 +539,7 @@ const _max = order.max(Order)
|
|
|
501
539
|
|
|
502
540
|
/**
|
|
503
541
|
* @since 2.0.0
|
|
542
|
+
* @category order
|
|
504
543
|
*/
|
|
505
544
|
export const max: {
|
|
506
545
|
(that: DurationInput): (self: DurationInput) => Duration
|
|
@@ -511,6 +550,7 @@ const _clamp = order.clamp(Order)
|
|
|
511
550
|
|
|
512
551
|
/**
|
|
513
552
|
* @since 2.0.0
|
|
553
|
+
* @category order
|
|
514
554
|
*/
|
|
515
555
|
export const clamp: {
|
|
516
556
|
(options: {
|
|
@@ -707,10 +747,54 @@ export const equals: {
|
|
|
707
747
|
(self: DurationInput, that: DurationInput): boolean
|
|
708
748
|
} = dual(2, (self: DurationInput, that: DurationInput): boolean => Equivalence(decode(self), decode(that)))
|
|
709
749
|
|
|
750
|
+
/**
|
|
751
|
+
* Converts a `Duration` to its parts.
|
|
752
|
+
*
|
|
753
|
+
* @since 3.8.0
|
|
754
|
+
* @category conversions
|
|
755
|
+
*/
|
|
756
|
+
export const parts = (self: DurationInput): {
|
|
757
|
+
days: number
|
|
758
|
+
hours: number
|
|
759
|
+
minutes: number
|
|
760
|
+
seconds: number
|
|
761
|
+
millis: number
|
|
762
|
+
nanos: number
|
|
763
|
+
} => {
|
|
764
|
+
const duration = decode(self)
|
|
765
|
+
if (duration.value._tag === "Infinity") {
|
|
766
|
+
return {
|
|
767
|
+
days: Infinity,
|
|
768
|
+
hours: Infinity,
|
|
769
|
+
minutes: Infinity,
|
|
770
|
+
seconds: Infinity,
|
|
771
|
+
millis: Infinity,
|
|
772
|
+
nanos: Infinity
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
const nanos = unsafeToNanos(duration)
|
|
777
|
+
const ms = nanos / bigint1e6
|
|
778
|
+
const sec = ms / bigint1e3
|
|
779
|
+
const min = sec / bigint60
|
|
780
|
+
const hr = min / bigint60
|
|
781
|
+
const days = hr / bigint24
|
|
782
|
+
|
|
783
|
+
return {
|
|
784
|
+
days: Number(days),
|
|
785
|
+
hours: Number(hr % bigint24),
|
|
786
|
+
minutes: Number(min % bigint60),
|
|
787
|
+
seconds: Number(sec % bigint60),
|
|
788
|
+
millis: Number(ms % bigint1e3),
|
|
789
|
+
nanos: Number(nanos % bigint1e6)
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
|
|
710
793
|
/**
|
|
711
794
|
* Converts a `Duration` to a human readable string.
|
|
712
|
-
* @since 2.0.0
|
|
713
795
|
*
|
|
796
|
+
* @since 2.0.0
|
|
797
|
+
* @category conversions
|
|
714
798
|
* @example
|
|
715
799
|
* import { Duration } from "effect"
|
|
716
800
|
*
|
|
@@ -719,42 +803,35 @@ export const equals: {
|
|
|
719
803
|
*/
|
|
720
804
|
export const format = (self: DurationInput): string => {
|
|
721
805
|
const duration = decode(self)
|
|
722
|
-
const parts = []
|
|
723
|
-
|
|
724
806
|
if (duration.value._tag === "Infinity") {
|
|
725
807
|
return "Infinity"
|
|
726
808
|
}
|
|
727
809
|
|
|
728
|
-
const
|
|
729
|
-
|
|
730
|
-
if (
|
|
731
|
-
|
|
810
|
+
const fragments = parts(duration)
|
|
811
|
+
const pieces = []
|
|
812
|
+
if (fragments.days !== 0) {
|
|
813
|
+
pieces.push(`${fragments.days}d`)
|
|
732
814
|
}
|
|
733
815
|
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
parts.push(`${ms % bigint1e3}ms`)
|
|
816
|
+
if (fragments.hours !== 0) {
|
|
817
|
+
pieces.push(`${fragments.hours}h`)
|
|
737
818
|
}
|
|
738
819
|
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
parts.push(`${sec % bigint60}s`)
|
|
820
|
+
if (fragments.minutes !== 0) {
|
|
821
|
+
pieces.push(`${fragments.minutes}m`)
|
|
742
822
|
}
|
|
743
823
|
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
parts.push(`${min % bigint60}m`)
|
|
824
|
+
if (fragments.seconds !== 0) {
|
|
825
|
+
pieces.push(`${fragments.seconds}s`)
|
|
747
826
|
}
|
|
748
827
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
parts.push(`${hr % bigint24}h`)
|
|
828
|
+
if (fragments.millis !== 0) {
|
|
829
|
+
pieces.push(`${fragments.millis}ms`)
|
|
752
830
|
}
|
|
753
831
|
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
parts.push(`${days}d`)
|
|
832
|
+
if (fragments.nanos !== 0) {
|
|
833
|
+
pieces.push(`${fragments.nanos}ns`)
|
|
757
834
|
}
|
|
758
835
|
|
|
759
|
-
return
|
|
836
|
+
return pieces.join(" ")
|
|
760
837
|
}
|
package/src/Effect.ts
CHANGED
|
@@ -5374,6 +5374,8 @@ export interface Permit {
|
|
|
5374
5374
|
export interface Semaphore {
|
|
5375
5375
|
/** when the given amount of permits are available, run the effect and release the permits when finished */
|
|
5376
5376
|
withPermits(permits: number): <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
|
|
5377
|
+
/** only if the given permits are available, run the effect and release the permits when finished */
|
|
5378
|
+
withPermitsIfAvailable(permits: number): <A, E, R>(self: Effect<A, E, R>) => Effect<Option.Option<A>, E, R>
|
|
5377
5379
|
/** take the given amount of permits, suspending if they are not yet available */
|
|
5378
5380
|
take(permits: number): Effect<number>
|
|
5379
5381
|
/** release the given amount of permits, and return the resulting available permits */
|
|
@@ -5398,6 +5400,56 @@ export const unsafeMakeSemaphore: (permits: number) => Semaphore = circular.unsa
|
|
|
5398
5400
|
*/
|
|
5399
5401
|
export const makeSemaphore: (permits: number) => Effect<Semaphore> = circular.makeSemaphore
|
|
5400
5402
|
|
|
5403
|
+
// -------------------------------------------------------------------------------------
|
|
5404
|
+
// latch
|
|
5405
|
+
// -------------------------------------------------------------------------------------
|
|
5406
|
+
|
|
5407
|
+
/**
|
|
5408
|
+
* @category latch
|
|
5409
|
+
* @since 3.8.0
|
|
5410
|
+
*/
|
|
5411
|
+
export interface Latch {
|
|
5412
|
+
/** open the latch, releasing all fibers waiting on it */
|
|
5413
|
+
readonly open: Effect<void>
|
|
5414
|
+
/** release all fibers waiting on the latch, without opening it */
|
|
5415
|
+
readonly release: Effect<void>
|
|
5416
|
+
/** wait for the latch to be opened */
|
|
5417
|
+
readonly await: Effect<void>
|
|
5418
|
+
/** close the latch */
|
|
5419
|
+
readonly close: Effect<void>
|
|
5420
|
+
/** only run the given effect when the latch is open */
|
|
5421
|
+
readonly whenOpen: <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, R>
|
|
5422
|
+
}
|
|
5423
|
+
|
|
5424
|
+
/**
|
|
5425
|
+
* @category latch
|
|
5426
|
+
* @since 3.8.0
|
|
5427
|
+
*/
|
|
5428
|
+
export const unsafeMakeLatch: (open?: boolean | undefined) => Latch = circular.unsafeMakeLatch
|
|
5429
|
+
|
|
5430
|
+
/**
|
|
5431
|
+
* @category latch
|
|
5432
|
+
* @since 3.8.0
|
|
5433
|
+
* @example
|
|
5434
|
+
* import { Effect } from "effect"
|
|
5435
|
+
*
|
|
5436
|
+
* Effect.gen(function*() {
|
|
5437
|
+
* // Create a latch, starting in the closed state
|
|
5438
|
+
* const latch = yield* Effect.makeLatch(false)
|
|
5439
|
+
*
|
|
5440
|
+
* // Fork a fiber that logs "open sesame" when the latch is opened
|
|
5441
|
+
* const fiber = yield* Effect.log("open sesame").pipe(
|
|
5442
|
+
* latch.whenOpen,
|
|
5443
|
+
* Effect.fork
|
|
5444
|
+
* )
|
|
5445
|
+
*
|
|
5446
|
+
* // Open the latch
|
|
5447
|
+
* yield* latch.open
|
|
5448
|
+
* yield* fiber.await
|
|
5449
|
+
* })
|
|
5450
|
+
*/
|
|
5451
|
+
export const makeLatch: (open?: boolean | undefined) => Effect<Latch, never, never> = circular.makeLatch
|
|
5452
|
+
|
|
5401
5453
|
// -------------------------------------------------------------------------------------
|
|
5402
5454
|
// execution
|
|
5403
5455
|
// -------------------------------------------------------------------------------------
|
package/src/Fiber.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* @since 2.0.0
|
|
3
3
|
*/
|
|
4
4
|
import type * as Cause from "./Cause.js"
|
|
5
|
+
import type { Context } from "./Context.js"
|
|
6
|
+
import type { DefaultServices } from "./DefaultServices.js"
|
|
5
7
|
import type * as Effect from "./Effect.js"
|
|
6
8
|
import type * as Either from "./Either.js"
|
|
7
9
|
import type * as Exit from "./Exit.js"
|
|
@@ -16,10 +18,13 @@ import * as internal from "./internal/fiber.js"
|
|
|
16
18
|
import * as fiberRuntime from "./internal/fiberRuntime.js"
|
|
17
19
|
import type * as Option from "./Option.js"
|
|
18
20
|
import type * as order from "./Order.js"
|
|
19
|
-
import type { Pipeable } from "./Pipeable.js"
|
|
20
21
|
import type * as RuntimeFlags from "./RuntimeFlags.js"
|
|
22
|
+
import type { Scheduler } from "./Scheduler.js"
|
|
21
23
|
import type * as Scope from "./Scope.js"
|
|
24
|
+
import type { Supervisor } from "./Supervisor.js"
|
|
25
|
+
import type { AnySpan, Tracer } from "./Tracer.js"
|
|
22
26
|
import type * as Types from "./Types.js"
|
|
27
|
+
import type * as Unify from "./Unify.js"
|
|
23
28
|
|
|
24
29
|
/**
|
|
25
30
|
* @since 2.0.0
|
|
@@ -57,7 +62,7 @@ export type RuntimeFiberTypeId = typeof RuntimeFiberTypeId
|
|
|
57
62
|
* @since 2.0.0
|
|
58
63
|
* @category models
|
|
59
64
|
*/
|
|
60
|
-
export interface Fiber<out A, out E = never> extends Fiber.Variance<A, E
|
|
65
|
+
export interface Fiber<out A, out E = never> extends Effect.Effect<A, E>, Fiber.Variance<A, E> {
|
|
61
66
|
/**
|
|
62
67
|
* The identity of the fiber.
|
|
63
68
|
*/
|
|
@@ -92,6 +97,26 @@ export interface Fiber<out A, out E = never> extends Fiber.Variance<A, E>, Pipea
|
|
|
92
97
|
* resume immediately. Otherwise, the effect will resume when the fiber exits.
|
|
93
98
|
*/
|
|
94
99
|
interruptAsFork(fiberId: FiberId.FiberId): Effect.Effect<void>
|
|
100
|
+
|
|
101
|
+
readonly [Unify.typeSymbol]?: unknown
|
|
102
|
+
readonly [Unify.unifySymbol]?: FiberUnify<this>
|
|
103
|
+
readonly [Unify.ignoreSymbol]?: FiberUnifyIgnore
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @category models
|
|
108
|
+
* @since 3.8.0
|
|
109
|
+
*/
|
|
110
|
+
export interface FiberUnify<A extends { [Unify.typeSymbol]?: any }> extends Effect.EffectUnify<A> {
|
|
111
|
+
Fiber?: () => A[Unify.typeSymbol] extends Fiber<infer A0, infer E0> | infer _ ? Fiber<A0, E0> : never
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @category models
|
|
116
|
+
* @since 3.8.0
|
|
117
|
+
*/
|
|
118
|
+
export interface FiberUnifyIgnore extends Effect.EffectUnifyIgnore {
|
|
119
|
+
Effect?: true
|
|
95
120
|
}
|
|
96
121
|
|
|
97
122
|
/**
|
|
@@ -155,6 +180,57 @@ export interface RuntimeFiber<out A, out E = never> extends Fiber<A, E>, Fiber.R
|
|
|
155
180
|
* resume immediately. Otherwise, the effect will resume when the fiber exits.
|
|
156
181
|
*/
|
|
157
182
|
unsafeInterruptAsFork(fiberId: FiberId.FiberId): void
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Gets the current context
|
|
186
|
+
*/
|
|
187
|
+
get currentContext(): Context<never>
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Gets the current context
|
|
191
|
+
*/
|
|
192
|
+
get currentDefaultServices(): Context<DefaultServices>
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Gets the current scheduler
|
|
196
|
+
*/
|
|
197
|
+
get currentScheduler(): Scheduler
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Gets the current tracer
|
|
201
|
+
*/
|
|
202
|
+
get currentTracer(): Tracer
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Gets the current span
|
|
206
|
+
*/
|
|
207
|
+
get currentSpan(): AnySpan | undefined
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Gets the current supervisor
|
|
211
|
+
*/
|
|
212
|
+
get currentSupervisor(): Supervisor<unknown>
|
|
213
|
+
|
|
214
|
+
readonly [Unify.typeSymbol]?: unknown
|
|
215
|
+
readonly [Unify.unifySymbol]?: RuntimeFiberUnify<this>
|
|
216
|
+
readonly [Unify.ignoreSymbol]?: RuntimeFiberUnifyIgnore
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* @category models
|
|
221
|
+
* @since 3.8.0
|
|
222
|
+
*/
|
|
223
|
+
export interface RuntimeFiberUnify<A extends { [Unify.typeSymbol]?: any }> extends FiberUnify<A> {
|
|
224
|
+
RuntimeFiber?: () => A[Unify.typeSymbol] extends RuntimeFiber<infer A0, infer E0> | infer _ ? RuntimeFiber<A0, E0>
|
|
225
|
+
: never
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* @category models
|
|
230
|
+
* @since 3.8.0
|
|
231
|
+
*/
|
|
232
|
+
export interface RuntimeFiberUnifyIgnore extends FiberUnifyIgnore {
|
|
233
|
+
Fiber?: true
|
|
158
234
|
}
|
|
159
235
|
|
|
160
236
|
/**
|
package/src/FiberRef.ts
CHANGED
|
@@ -18,7 +18,6 @@ import type * as LogLevel from "./LogLevel.js"
|
|
|
18
18
|
import type * as LogSpan from "./LogSpan.js"
|
|
19
19
|
import type * as MetricLabel from "./MetricLabel.js"
|
|
20
20
|
import type * as Option from "./Option.js"
|
|
21
|
-
import type { Pipeable } from "./Pipeable.js"
|
|
22
21
|
import type * as Request from "./Request.js"
|
|
23
22
|
import type * as RuntimeFlags from "./RuntimeFlags.js"
|
|
24
23
|
import * as Scheduler from "./Scheduler.js"
|
|
@@ -26,6 +25,7 @@ import type * as Scope from "./Scope.js"
|
|
|
26
25
|
import type * as Supervisor from "./Supervisor.js"
|
|
27
26
|
import type * as Tracer from "./Tracer.js"
|
|
28
27
|
import type * as Types from "./Types.js"
|
|
28
|
+
import type * as Unify from "./Unify.js"
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* @since 2.0.0
|
|
@@ -43,7 +43,7 @@ export type FiberRefTypeId = typeof FiberRefTypeId
|
|
|
43
43
|
* @since 2.0.0
|
|
44
44
|
* @category model
|
|
45
45
|
*/
|
|
46
|
-
export interface FiberRef<in out A> extends
|
|
46
|
+
export interface FiberRef<in out A> extends Effect.Effect<A>, Variance<A> {
|
|
47
47
|
/** @internal */
|
|
48
48
|
readonly initial: A
|
|
49
49
|
/** @internal */
|
|
@@ -56,6 +56,25 @@ export interface FiberRef<in out A> extends Variance<A>, Pipeable {
|
|
|
56
56
|
readonly fork: unknown
|
|
57
57
|
/** @internal */
|
|
58
58
|
join(oldValue: A, newValue: A): A
|
|
59
|
+
readonly [Unify.typeSymbol]?: unknown
|
|
60
|
+
readonly [Unify.unifySymbol]?: FiberRefUnify<this>
|
|
61
|
+
readonly [Unify.ignoreSymbol]?: FiberRefUnifyIgnore
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @category models
|
|
66
|
+
* @since 3.8.0
|
|
67
|
+
*/
|
|
68
|
+
export interface FiberRefUnify<A extends { [Unify.typeSymbol]?: any }> extends Effect.EffectUnify<A> {
|
|
69
|
+
FiberRef?: () => Extract<A[Unify.typeSymbol], FiberRef<any>>
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @category models
|
|
74
|
+
* @since 3.8.0
|
|
75
|
+
*/
|
|
76
|
+
export interface FiberRefUnifyIgnore extends Effect.EffectUnifyIgnore {
|
|
77
|
+
Effect?: true
|
|
59
78
|
}
|
|
60
79
|
|
|
61
80
|
/**
|
package/src/Logger.ts
CHANGED
|
@@ -238,6 +238,28 @@ export const batched: {
|
|
|
238
238
|
*/
|
|
239
239
|
export const withConsoleLog: <M, O>(self: Logger<M, O>) => Logger<M, void> = fiberRuntime.loggerWithConsoleLog
|
|
240
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Takes a `Logger<M, O>` and returns a logger that calls the respective `Console` method
|
|
243
|
+
* based on the log level.
|
|
244
|
+
*
|
|
245
|
+
* @example
|
|
246
|
+
* import { Logger, Effect } from "effect"
|
|
247
|
+
*
|
|
248
|
+
* const loggerLayer = Logger.replace(
|
|
249
|
+
* Logger.defaultLogger,
|
|
250
|
+
* Logger.withLeveledConsole(Logger.stringLogger),
|
|
251
|
+
* )
|
|
252
|
+
*
|
|
253
|
+
* Effect.gen(function* () {
|
|
254
|
+
* yield* Effect.logError("an error")
|
|
255
|
+
* yield* Effect.logInfo("an info")
|
|
256
|
+
* }).pipe(Effect.provide(loggerLayer))
|
|
257
|
+
*
|
|
258
|
+
* @since 3.8.0
|
|
259
|
+
* @category console
|
|
260
|
+
*/
|
|
261
|
+
export const withLeveledConsole: <M, O>(self: Logger<M, O>) => Logger<M, void> = fiberRuntime.loggerWithLeveledLog
|
|
262
|
+
|
|
241
263
|
/**
|
|
242
264
|
* @since 2.0.0
|
|
243
265
|
* @category console
|
|
@@ -475,6 +497,14 @@ export const prettyLogger: (
|
|
|
475
497
|
}
|
|
476
498
|
) => Logger<unknown, void> = internal.prettyLogger
|
|
477
499
|
|
|
500
|
+
/**
|
|
501
|
+
* A default version of the pretty logger.
|
|
502
|
+
*
|
|
503
|
+
* @since 3.8.0
|
|
504
|
+
* @category constructors
|
|
505
|
+
*/
|
|
506
|
+
export const prettyLoggerDefault: Logger<unknown, void> = internal.prettyLoggerDefault
|
|
507
|
+
|
|
478
508
|
/**
|
|
479
509
|
* The structured logger provides detailed log outputs, structured in a way that
|
|
480
510
|
* retains comprehensive traceability of the events, suitable for deeper
|