effect 3.10.19 → 3.11.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/dist/cjs/BigDecimal.js +125 -24
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/Channel.js +44 -4
- package/dist/cjs/Channel.js.map +1 -1
- package/dist/cjs/Config.js +8 -1
- package/dist/cjs/Config.js.map +1 -1
- package/dist/cjs/Context.js +26 -1
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Cron.js +75 -67
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/DateTime.js +114 -664
- package/dist/cjs/DateTime.js.map +1 -1
- package/dist/cjs/Effect.js +82 -4
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Inspectable.js +8 -4
- package/dist/cjs/Inspectable.js.map +1 -1
- package/dist/cjs/JSONSchema.js.map +1 -1
- package/dist/cjs/Micro.js +1099 -1072
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/STM.js.map +1 -1
- package/dist/cjs/Schema.js +57 -8
- package/dist/cjs/Schema.js.map +1 -1
- package/dist/cjs/Sink.js +9 -1
- package/dist/cjs/Sink.js.map +1 -1
- package/dist/cjs/Stream.js +25 -7
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/Utils.js +7 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/internal/channel/channelExecutor.js +5 -9
- package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
- package/dist/cjs/internal/channel.js +156 -130
- package/dist/cjs/internal/channel.js.map +1 -1
- package/dist/cjs/internal/config.js +13 -4
- package/dist/cjs/internal/config.js.map +1 -1
- package/dist/cjs/internal/context.js +46 -3
- package/dist/cjs/internal/context.js.map +1 -1
- package/dist/cjs/internal/dateTime.js +747 -0
- package/dist/cjs/internal/dateTime.js.map +1 -0
- package/dist/cjs/internal/fiberRuntime.js +34 -11
- package/dist/cjs/internal/fiberRuntime.js.map +1 -1
- package/dist/cjs/internal/groupBy.js +9 -3
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/layer.js +1 -1
- package/dist/cjs/internal/layer.js.map +1 -1
- package/dist/cjs/internal/mailbox.js +1 -1
- package/dist/cjs/internal/mailbox.js.map +1 -1
- package/dist/cjs/internal/sink.js +25 -21
- package/dist/cjs/internal/sink.js.map +1 -1
- package/dist/cjs/internal/stream.js +70 -71
- 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/BigDecimal.d.ts +56 -1
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/Channel.d.ts +66 -5
- package/dist/dts/Channel.d.ts.map +1 -1
- package/dist/dts/Config.d.ts +23 -1
- package/dist/dts/Config.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +111 -0
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +15 -6
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/DateTime.d.ts +40 -49
- package/dist/dts/DateTime.d.ts.map +1 -1
- package/dist/dts/Effect.d.ts +88 -1
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Inspectable.d.ts.map +1 -1
- package/dist/dts/JSONSchema.d.ts +1 -0
- package/dist/dts/JSONSchema.d.ts.map +1 -1
- package/dist/dts/Micro.d.ts +875 -872
- package/dist/dts/Micro.d.ts.map +1 -1
- package/dist/dts/STM.d.ts +2 -0
- package/dist/dts/STM.d.ts.map +1 -1
- package/dist/dts/Schema.d.ts +32 -0
- package/dist/dts/Schema.d.ts.map +1 -1
- package/dist/dts/Sink.d.ts +8 -0
- package/dist/dts/Sink.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +50 -32
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/Utils.d.ts +4 -0
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/internal/context.d.ts +1 -1
- package/dist/dts/internal/context.d.ts.map +1 -1
- package/dist/dts/internal/dateTime.d.ts +2 -0
- package/dist/dts/internal/dateTime.d.ts.map +1 -0
- package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/BigDecimal.js +119 -20
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/Channel.js +42 -2
- package/dist/esm/Channel.js.map +1 -1
- package/dist/esm/Config.js +7 -0
- package/dist/esm/Config.js.map +1 -1
- package/dist/esm/Context.js +25 -0
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Cron.js +75 -67
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/DateTime.js +112 -627
- package/dist/esm/DateTime.js.map +1 -1
- package/dist/esm/Effect.js +77 -0
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Inspectable.js +8 -4
- package/dist/esm/Inspectable.js.map +1 -1
- package/dist/esm/JSONSchema.js.map +1 -1
- package/dist/esm/Micro.js +1077 -1047
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/STM.js.map +1 -1
- package/dist/esm/Schema.js +54 -0
- package/dist/esm/Schema.js.map +1 -1
- package/dist/esm/Sink.js +8 -0
- package/dist/esm/Sink.js.map +1 -1
- package/dist/esm/Stream.js +23 -5
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/Utils.js +5 -0
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/internal/channel/channelExecutor.js +5 -7
- package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
- package/dist/esm/internal/channel.js +152 -129
- package/dist/esm/internal/channel.js.map +1 -1
- package/dist/esm/internal/config.js +11 -3
- package/dist/esm/internal/config.js.map +1 -1
- package/dist/esm/internal/context.js +42 -2
- package/dist/esm/internal/context.js.map +1 -1
- package/dist/esm/internal/dateTime.js +704 -0
- package/dist/esm/internal/dateTime.js.map +1 -0
- package/dist/esm/internal/fiberRuntime.js +31 -9
- package/dist/esm/internal/fiberRuntime.js.map +1 -1
- package/dist/esm/internal/groupBy.js +9 -3
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/layer.js +1 -1
- package/dist/esm/internal/layer.js.map +1 -1
- package/dist/esm/internal/mailbox.js +1 -1
- package/dist/esm/internal/mailbox.js.map +1 -1
- package/dist/esm/internal/sink.js +23 -20
- package/dist/esm/internal/sink.js.map +1 -1
- package/dist/esm/internal/stream.js +66 -69
- 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 +1 -1
- package/src/BigDecimal.ts +131 -21
- package/src/Channel.ts +81 -5
- package/src/Config.ts +24 -1
- package/src/Context.ts +119 -0
- package/src/Cron.ts +85 -68
- package/src/DateTime.ts +155 -757
- package/src/Effect.ts +340 -1
- package/src/Inspectable.ts +11 -7
- package/src/JSONSchema.ts +1 -0
- package/src/Micro.ts +2005 -1757
- package/src/STM.ts +2 -0
- package/src/Schema.ts +60 -0
- package/src/Sink.ts +11 -0
- package/src/Stream.ts +55 -44
- package/src/Utils.ts +8 -0
- package/src/internal/channel/channelExecutor.ts +37 -33
- package/src/internal/channel.ts +504 -467
- package/src/internal/config.ts +18 -6
- package/src/internal/context.ts +56 -4
- package/src/internal/dateTime.ts +1126 -0
- package/src/internal/fiberRuntime.ts +35 -16
- package/src/internal/groupBy.ts +13 -22
- package/src/internal/layer.ts +5 -8
- package/src/internal/mailbox.ts +6 -4
- package/src/internal/sink.ts +55 -35
- package/src/internal/stream.ts +299 -299
- package/src/internal/version.ts +1 -1
package/src/Effect.ts
CHANGED
|
@@ -25,6 +25,7 @@ import { dual } from "./Function.js"
|
|
|
25
25
|
import type * as HashMap from "./HashMap.js"
|
|
26
26
|
import type * as HashSet from "./HashSet.js"
|
|
27
27
|
import type { TypeLambda } from "./HKT.js"
|
|
28
|
+
import * as internalCause from "./internal/cause.js"
|
|
28
29
|
import * as _console from "./internal/console.js"
|
|
29
30
|
import { TagProto } from "./internal/context.js"
|
|
30
31
|
import * as effect from "./internal/core-effect.js"
|
|
@@ -59,7 +60,7 @@ import type * as Supervisor from "./Supervisor.js"
|
|
|
59
60
|
import type * as Tracer from "./Tracer.js"
|
|
60
61
|
import type { Concurrency, Contravariant, Covariant, NoExcessProperties, NoInfer, NotFunction } from "./Types.js"
|
|
61
62
|
import type * as Unify from "./Unify.js"
|
|
62
|
-
import type
|
|
63
|
+
import { internalCall, isGeneratorFunction, type YieldWrap } from "./Utils.js"
|
|
63
64
|
|
|
64
65
|
/**
|
|
65
66
|
* @since 2.0.0
|
|
@@ -151,6 +152,9 @@ declare module "./Context.js" {
|
|
|
151
152
|
interface Tag<Id, Value> extends Effect<Value, never, Id> {
|
|
152
153
|
[Symbol.iterator](): EffectGenerator<Tag<Id, Value>>
|
|
153
154
|
}
|
|
155
|
+
interface Reference<Id, Value> extends Effect<Value> {
|
|
156
|
+
[Symbol.iterator](): EffectGenerator<Reference<Id, Value>>
|
|
157
|
+
}
|
|
154
158
|
interface TagUnifyIgnore {
|
|
155
159
|
Effect?: true
|
|
156
160
|
Either?: true
|
|
@@ -7588,6 +7592,17 @@ export const scope: Effect<Scope.Scope, never, Scope.Scope> = fiberRuntime.scope
|
|
|
7588
7592
|
export const scopeWith: <A, E, R>(f: (scope: Scope.Scope) => Effect<A, E, R>) => Effect<A, E, R | Scope.Scope> =
|
|
7589
7593
|
fiberRuntime.scopeWith
|
|
7590
7594
|
|
|
7595
|
+
/**
|
|
7596
|
+
* Creates a `Scope`, passes it to the specified effectful function, and then
|
|
7597
|
+
* closes the scope as soon as the effect is complete (whether through success,
|
|
7598
|
+
* failure, or interruption).
|
|
7599
|
+
*
|
|
7600
|
+
* @since 3.11.0
|
|
7601
|
+
* @category scoping, resources & finalization
|
|
7602
|
+
*/
|
|
7603
|
+
export const scopedWith: <A, E, R>(f: (scope: Scope.Scope) => Effect<A, E, R>) => Effect<A, E, R> =
|
|
7604
|
+
fiberRuntime.scopedWith
|
|
7605
|
+
|
|
7591
7606
|
/**
|
|
7592
7607
|
* Scopes all resources used in this workflow to the lifetime of the workflow,
|
|
7593
7608
|
* ensuring that their finalizers are run as soon as this workflow completes
|
|
@@ -18795,3 +18810,327 @@ export declare namespace Service {
|
|
|
18795
18810
|
export type MakeAccessors<Make> = Make extends { readonly accessors: true } ? true
|
|
18796
18811
|
: false
|
|
18797
18812
|
}
|
|
18813
|
+
|
|
18814
|
+
/**
|
|
18815
|
+
* @since 3.11.0
|
|
18816
|
+
* @category models
|
|
18817
|
+
*/
|
|
18818
|
+
export namespace fn {
|
|
18819
|
+
/**
|
|
18820
|
+
* @since 3.11.0
|
|
18821
|
+
* @category models
|
|
18822
|
+
*/
|
|
18823
|
+
export type FnEffect<AEff, Eff extends YieldWrap<Effect<any, any, any>>> = Effect<
|
|
18824
|
+
AEff,
|
|
18825
|
+
[Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer E, infer _R>>] ? E : never,
|
|
18826
|
+
[Eff] extends [never] ? never : [Eff] extends [YieldWrap<Effect<infer _A, infer _E, infer R>>] ? R : never
|
|
18827
|
+
>
|
|
18828
|
+
|
|
18829
|
+
/**
|
|
18830
|
+
* @since 3.11.0
|
|
18831
|
+
* @category models
|
|
18832
|
+
*/
|
|
18833
|
+
export type Gen = {
|
|
18834
|
+
<Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>>(
|
|
18835
|
+
body: (...args: Args) => Generator<Eff, AEff, never>
|
|
18836
|
+
): (...args: Args) => fn.FnEffect<AEff, Eff>
|
|
18837
|
+
<Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A extends Effect<any, any, any>>(
|
|
18838
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
18839
|
+
a: (_: fn.FnEffect<AEff, Eff>) => A
|
|
18840
|
+
): (...args: Args) => A
|
|
18841
|
+
<Eff extends YieldWrap<Effect<any, any, any>>, AEff, Args extends Array<any>, A, B extends Effect<any, any, any>>(
|
|
18842
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
18843
|
+
a: (_: fn.FnEffect<AEff, Eff>) => A,
|
|
18844
|
+
b: (_: A) => B
|
|
18845
|
+
): (...args: Args) => B
|
|
18846
|
+
<
|
|
18847
|
+
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
18848
|
+
AEff,
|
|
18849
|
+
Args extends Array<any>,
|
|
18850
|
+
A,
|
|
18851
|
+
B,
|
|
18852
|
+
C extends Effect<any, any, any>
|
|
18853
|
+
>(
|
|
18854
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
18855
|
+
a: (_: fn.FnEffect<AEff, Eff>) => A,
|
|
18856
|
+
b: (_: A) => B,
|
|
18857
|
+
c: (_: B) => C
|
|
18858
|
+
): (...args: Args) => C
|
|
18859
|
+
<
|
|
18860
|
+
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
18861
|
+
AEff,
|
|
18862
|
+
Args extends Array<any>,
|
|
18863
|
+
A,
|
|
18864
|
+
B,
|
|
18865
|
+
C,
|
|
18866
|
+
D extends Effect<any, any, any>
|
|
18867
|
+
>(
|
|
18868
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
18869
|
+
a: (_: fn.FnEffect<AEff, Eff>) => A,
|
|
18870
|
+
b: (_: A) => B,
|
|
18871
|
+
c: (_: B) => C,
|
|
18872
|
+
d: (_: C) => D
|
|
18873
|
+
): (...args: Args) => D
|
|
18874
|
+
<
|
|
18875
|
+
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
18876
|
+
AEff,
|
|
18877
|
+
Args extends Array<any>,
|
|
18878
|
+
A,
|
|
18879
|
+
B,
|
|
18880
|
+
C,
|
|
18881
|
+
D,
|
|
18882
|
+
E extends Effect<any, any, any>
|
|
18883
|
+
>(
|
|
18884
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
18885
|
+
a: (_: fn.FnEffect<AEff, Eff>) => A,
|
|
18886
|
+
b: (_: A) => B,
|
|
18887
|
+
c: (_: B) => C,
|
|
18888
|
+
d: (_: C) => D,
|
|
18889
|
+
e: (_: D) => E
|
|
18890
|
+
): (...args: Args) => E
|
|
18891
|
+
<
|
|
18892
|
+
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
18893
|
+
AEff,
|
|
18894
|
+
Args extends Array<any>,
|
|
18895
|
+
A,
|
|
18896
|
+
B,
|
|
18897
|
+
C,
|
|
18898
|
+
D,
|
|
18899
|
+
E,
|
|
18900
|
+
F extends Effect<any, any, any>
|
|
18901
|
+
>(
|
|
18902
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
18903
|
+
a: (_: fn.FnEffect<AEff, Eff>) => A,
|
|
18904
|
+
b: (_: A) => B,
|
|
18905
|
+
c: (_: B) => C,
|
|
18906
|
+
d: (_: C) => D,
|
|
18907
|
+
e: (_: D) => E,
|
|
18908
|
+
f: (_: E) => F
|
|
18909
|
+
): (...args: Args) => F
|
|
18910
|
+
<
|
|
18911
|
+
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
18912
|
+
AEff,
|
|
18913
|
+
Args extends Array<any>,
|
|
18914
|
+
A,
|
|
18915
|
+
B,
|
|
18916
|
+
C,
|
|
18917
|
+
D,
|
|
18918
|
+
E,
|
|
18919
|
+
F,
|
|
18920
|
+
G extends Effect<any, any, any>
|
|
18921
|
+
>(
|
|
18922
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
18923
|
+
a: (_: fn.FnEffect<AEff, Eff>) => A,
|
|
18924
|
+
b: (_: A) => B,
|
|
18925
|
+
c: (_: B) => C,
|
|
18926
|
+
d: (_: C) => D,
|
|
18927
|
+
e: (_: D) => E,
|
|
18928
|
+
f: (_: E) => F,
|
|
18929
|
+
g: (_: F) => G
|
|
18930
|
+
): (...args: Args) => G
|
|
18931
|
+
<
|
|
18932
|
+
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
18933
|
+
AEff,
|
|
18934
|
+
Args extends Array<any>,
|
|
18935
|
+
A,
|
|
18936
|
+
B,
|
|
18937
|
+
C,
|
|
18938
|
+
D,
|
|
18939
|
+
E,
|
|
18940
|
+
F,
|
|
18941
|
+
G,
|
|
18942
|
+
H extends Effect<any, any, any>
|
|
18943
|
+
>(
|
|
18944
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
18945
|
+
a: (_: fn.FnEffect<AEff, Eff>) => A,
|
|
18946
|
+
b: (_: A) => B,
|
|
18947
|
+
c: (_: B) => C,
|
|
18948
|
+
d: (_: C) => D,
|
|
18949
|
+
e: (_: D) => E,
|
|
18950
|
+
f: (_: E) => F,
|
|
18951
|
+
g: (_: F) => G,
|
|
18952
|
+
h: (_: G) => H
|
|
18953
|
+
): (...args: Args) => H
|
|
18954
|
+
<
|
|
18955
|
+
Eff extends YieldWrap<Effect<any, any, any>>,
|
|
18956
|
+
AEff,
|
|
18957
|
+
Args extends Array<any>,
|
|
18958
|
+
A,
|
|
18959
|
+
B,
|
|
18960
|
+
C,
|
|
18961
|
+
D,
|
|
18962
|
+
E,
|
|
18963
|
+
F,
|
|
18964
|
+
G,
|
|
18965
|
+
H,
|
|
18966
|
+
I extends Effect<any, any, any>
|
|
18967
|
+
>(
|
|
18968
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
18969
|
+
a: (_: fn.FnEffect<AEff, Eff>) => A,
|
|
18970
|
+
b: (_: A) => B,
|
|
18971
|
+
c: (_: B) => C,
|
|
18972
|
+
d: (_: C) => D,
|
|
18973
|
+
e: (_: D) => E,
|
|
18974
|
+
f: (_: E) => F,
|
|
18975
|
+
g: (_: F) => G,
|
|
18976
|
+
h: (_: G) => H,
|
|
18977
|
+
i: (_: H) => I
|
|
18978
|
+
): (...args: Args) => I
|
|
18979
|
+
}
|
|
18980
|
+
|
|
18981
|
+
/**
|
|
18982
|
+
* @since 3.11.0
|
|
18983
|
+
* @category models
|
|
18984
|
+
*/
|
|
18985
|
+
export type NonGen = {
|
|
18986
|
+
<Eff extends Effect<any, any, any>, Args extends Array<any>>(
|
|
18987
|
+
body: (...args: Args) => Eff
|
|
18988
|
+
): (...args: Args) => Eff
|
|
18989
|
+
<Eff extends Effect<any, any, any>, A, Args extends Array<any>>(
|
|
18990
|
+
body: (...args: Args) => A,
|
|
18991
|
+
a: (_: A) => Eff
|
|
18992
|
+
): (...args: Args) => Eff
|
|
18993
|
+
<Eff extends Effect<any, any, any>, A, B, Args extends Array<any>>(
|
|
18994
|
+
body: (...args: Args) => A,
|
|
18995
|
+
a: (_: A) => B,
|
|
18996
|
+
b: (_: B) => Eff
|
|
18997
|
+
): (...args: Args) => Eff
|
|
18998
|
+
<Eff extends Effect<any, any, any>, A, B, C, Args extends Array<any>>(
|
|
18999
|
+
body: (...args: Args) => A,
|
|
19000
|
+
a: (_: A) => B,
|
|
19001
|
+
b: (_: B) => C,
|
|
19002
|
+
c: (_: C) => Eff
|
|
19003
|
+
): (...args: Args) => Eff
|
|
19004
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, Args extends Array<any>>(
|
|
19005
|
+
body: (...args: Args) => A,
|
|
19006
|
+
a: (_: A) => B,
|
|
19007
|
+
b: (_: B) => C,
|
|
19008
|
+
c: (_: C) => D,
|
|
19009
|
+
d: (_: D) => Eff
|
|
19010
|
+
): (...args: Args) => Eff
|
|
19011
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, Args extends Array<any>>(
|
|
19012
|
+
body: (...args: Args) => A,
|
|
19013
|
+
a: (_: A) => B,
|
|
19014
|
+
b: (_: B) => C,
|
|
19015
|
+
c: (_: C) => D,
|
|
19016
|
+
d: (_: D) => E,
|
|
19017
|
+
e: (_: E) => Eff
|
|
19018
|
+
): (...args: Args) => Eff
|
|
19019
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, F, Args extends Array<any>>(
|
|
19020
|
+
body: (...args: Args) => A,
|
|
19021
|
+
a: (_: A) => B,
|
|
19022
|
+
b: (_: B) => C,
|
|
19023
|
+
c: (_: C) => D,
|
|
19024
|
+
d: (_: D) => E,
|
|
19025
|
+
e: (_: E) => F,
|
|
19026
|
+
f: (_: E) => Eff
|
|
19027
|
+
): (...args: Args) => Eff
|
|
19028
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, Args extends Array<any>>(
|
|
19029
|
+
body: (...args: Args) => A,
|
|
19030
|
+
a: (_: A) => B,
|
|
19031
|
+
b: (_: B) => C,
|
|
19032
|
+
c: (_: C) => D,
|
|
19033
|
+
d: (_: D) => E,
|
|
19034
|
+
e: (_: E) => F,
|
|
19035
|
+
f: (_: E) => G,
|
|
19036
|
+
g: (_: G) => Eff
|
|
19037
|
+
): (...args: Args) => Eff
|
|
19038
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, H, Args extends Array<any>>(
|
|
19039
|
+
body: (...args: Args) => A,
|
|
19040
|
+
a: (_: A) => B,
|
|
19041
|
+
b: (_: B) => C,
|
|
19042
|
+
c: (_: C) => D,
|
|
19043
|
+
d: (_: D) => E,
|
|
19044
|
+
e: (_: E) => F,
|
|
19045
|
+
f: (_: E) => G,
|
|
19046
|
+
g: (_: G) => H,
|
|
19047
|
+
h: (_: H) => Eff
|
|
19048
|
+
): (...args: Args) => Eff
|
|
19049
|
+
<Eff extends Effect<any, any, any>, A, B, C, D, E, F, G, H, I, Args extends Array<any>>(
|
|
19050
|
+
body: (...args: Args) => A,
|
|
19051
|
+
a: (_: A) => B,
|
|
19052
|
+
b: (_: B) => C,
|
|
19053
|
+
c: (_: C) => D,
|
|
19054
|
+
d: (_: D) => E,
|
|
19055
|
+
e: (_: E) => F,
|
|
19056
|
+
f: (_: E) => G,
|
|
19057
|
+
g: (_: G) => H,
|
|
19058
|
+
h: (_: H) => I,
|
|
19059
|
+
i: (_: H) => Eff
|
|
19060
|
+
): (...args: Args) => Eff
|
|
19061
|
+
}
|
|
19062
|
+
}
|
|
19063
|
+
|
|
19064
|
+
/**
|
|
19065
|
+
* Creates a function that returns an Effect which is automatically traced with a span pointing to the call site.
|
|
19066
|
+
*
|
|
19067
|
+
* The function can be created both using a generator function that can yield effects or using a normal function.
|
|
19068
|
+
*
|
|
19069
|
+
* @since 3.11.0
|
|
19070
|
+
* @category function
|
|
19071
|
+
*
|
|
19072
|
+
* @example
|
|
19073
|
+
* import { Effect } from "effect"
|
|
19074
|
+
*
|
|
19075
|
+
* const logExample = Effect.fn("logExample")(
|
|
19076
|
+
* function*<N extends number>(n: N) {
|
|
19077
|
+
* yield* Effect.annotateCurrentSpan("n", n)
|
|
19078
|
+
* yield* Effect.logInfo(`got: ${n}`)
|
|
19079
|
+
* yield* Effect.fail(new Error())
|
|
19080
|
+
* },
|
|
19081
|
+
* Effect.delay("1 second")
|
|
19082
|
+
* )
|
|
19083
|
+
*
|
|
19084
|
+
* Effect.runFork(
|
|
19085
|
+
* // this location is printed on the stack trace of the following `Effect.logError`
|
|
19086
|
+
* logExample(100).pipe(
|
|
19087
|
+
* Effect.catchAllCause(Effect.logError)
|
|
19088
|
+
* )
|
|
19089
|
+
* )
|
|
19090
|
+
*/
|
|
19091
|
+
export const fn: (
|
|
19092
|
+
name: string,
|
|
19093
|
+
options?: Tracer.SpanOptions
|
|
19094
|
+
) => fn.Gen & fn.NonGen = (name, options) => (body: Function, ...pipeables: Array<any>) => {
|
|
19095
|
+
return function(this: any, ...args: Array<any>) {
|
|
19096
|
+
const limit = Error.stackTraceLimit
|
|
19097
|
+
Error.stackTraceLimit = 2
|
|
19098
|
+
const error = new Error()
|
|
19099
|
+
Error.stackTraceLimit = limit
|
|
19100
|
+
let cache: false | string = false
|
|
19101
|
+
const captureStackTrace = () => {
|
|
19102
|
+
if (cache !== false) {
|
|
19103
|
+
return cache
|
|
19104
|
+
}
|
|
19105
|
+
if (error.stack) {
|
|
19106
|
+
const stack = error.stack.trim().split("\n")
|
|
19107
|
+
cache = stack.slice(2).join("\n").trim()
|
|
19108
|
+
return cache
|
|
19109
|
+
}
|
|
19110
|
+
}
|
|
19111
|
+
let effect: Effect<any, any, any>
|
|
19112
|
+
let fnError: any = undefined
|
|
19113
|
+
try {
|
|
19114
|
+
effect = isGeneratorFunction(body)
|
|
19115
|
+
? gen(() => internalCall(() => body.apply(this, args)))
|
|
19116
|
+
: body.apply(this, args)
|
|
19117
|
+
} catch (error) {
|
|
19118
|
+
fnError = error
|
|
19119
|
+
effect = die(error)
|
|
19120
|
+
}
|
|
19121
|
+
try {
|
|
19122
|
+
for (const x of pipeables) {
|
|
19123
|
+
effect = x(effect)
|
|
19124
|
+
}
|
|
19125
|
+
} catch (error) {
|
|
19126
|
+
effect = fnError
|
|
19127
|
+
? failCause(internalCause.sequential(
|
|
19128
|
+
internalCause.die(fnError),
|
|
19129
|
+
internalCause.die(error)
|
|
19130
|
+
))
|
|
19131
|
+
: die(error)
|
|
19132
|
+
}
|
|
19133
|
+
const opts: any = (options && "captureStackTrace" in options) ? options : { captureStackTrace, ...options }
|
|
19134
|
+
return withSpan(effect, name, opts)
|
|
19135
|
+
}
|
|
19136
|
+
}
|
package/src/Inspectable.ts
CHANGED
|
@@ -32,13 +32,17 @@ export interface Inspectable {
|
|
|
32
32
|
* @since 2.0.0
|
|
33
33
|
*/
|
|
34
34
|
export const toJSON = (x: unknown): unknown => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
try {
|
|
36
|
+
if (
|
|
37
|
+
hasProperty(x, "toJSON") && isFunction(x["toJSON"]) &&
|
|
38
|
+
x["toJSON"].length === 0
|
|
39
|
+
) {
|
|
40
|
+
return x.toJSON()
|
|
41
|
+
} else if (Array.isArray(x)) {
|
|
42
|
+
return x.map(toJSON)
|
|
43
|
+
}
|
|
44
|
+
} catch (_) {
|
|
45
|
+
return {}
|
|
42
46
|
}
|
|
43
47
|
return redact(x)
|
|
44
48
|
}
|