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.
Files changed (167) hide show
  1. package/dist/cjs/BigDecimal.js +125 -24
  2. package/dist/cjs/BigDecimal.js.map +1 -1
  3. package/dist/cjs/Channel.js +44 -4
  4. package/dist/cjs/Channel.js.map +1 -1
  5. package/dist/cjs/Config.js +8 -1
  6. package/dist/cjs/Config.js.map +1 -1
  7. package/dist/cjs/Context.js +26 -1
  8. package/dist/cjs/Context.js.map +1 -1
  9. package/dist/cjs/Cron.js +75 -67
  10. package/dist/cjs/Cron.js.map +1 -1
  11. package/dist/cjs/DateTime.js +114 -664
  12. package/dist/cjs/DateTime.js.map +1 -1
  13. package/dist/cjs/Effect.js +82 -4
  14. package/dist/cjs/Effect.js.map +1 -1
  15. package/dist/cjs/Inspectable.js +8 -4
  16. package/dist/cjs/Inspectable.js.map +1 -1
  17. package/dist/cjs/JSONSchema.js.map +1 -1
  18. package/dist/cjs/Micro.js +1099 -1072
  19. package/dist/cjs/Micro.js.map +1 -1
  20. package/dist/cjs/STM.js.map +1 -1
  21. package/dist/cjs/Schema.js +57 -8
  22. package/dist/cjs/Schema.js.map +1 -1
  23. package/dist/cjs/Sink.js +9 -1
  24. package/dist/cjs/Sink.js.map +1 -1
  25. package/dist/cjs/Stream.js +25 -7
  26. package/dist/cjs/Stream.js.map +1 -1
  27. package/dist/cjs/Utils.js +7 -1
  28. package/dist/cjs/Utils.js.map +1 -1
  29. package/dist/cjs/internal/channel/channelExecutor.js +5 -9
  30. package/dist/cjs/internal/channel/channelExecutor.js.map +1 -1
  31. package/dist/cjs/internal/channel.js +156 -130
  32. package/dist/cjs/internal/channel.js.map +1 -1
  33. package/dist/cjs/internal/config.js +13 -4
  34. package/dist/cjs/internal/config.js.map +1 -1
  35. package/dist/cjs/internal/context.js +46 -3
  36. package/dist/cjs/internal/context.js.map +1 -1
  37. package/dist/cjs/internal/dateTime.js +747 -0
  38. package/dist/cjs/internal/dateTime.js.map +1 -0
  39. package/dist/cjs/internal/fiberRuntime.js +34 -11
  40. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  41. package/dist/cjs/internal/groupBy.js +9 -3
  42. package/dist/cjs/internal/groupBy.js.map +1 -1
  43. package/dist/cjs/internal/layer.js +1 -1
  44. package/dist/cjs/internal/layer.js.map +1 -1
  45. package/dist/cjs/internal/mailbox.js +1 -1
  46. package/dist/cjs/internal/mailbox.js.map +1 -1
  47. package/dist/cjs/internal/sink.js +25 -21
  48. package/dist/cjs/internal/sink.js.map +1 -1
  49. package/dist/cjs/internal/stream.js +70 -71
  50. package/dist/cjs/internal/stream.js.map +1 -1
  51. package/dist/cjs/internal/version.js +1 -1
  52. package/dist/cjs/internal/version.js.map +1 -1
  53. package/dist/dts/BigDecimal.d.ts +56 -1
  54. package/dist/dts/BigDecimal.d.ts.map +1 -1
  55. package/dist/dts/Channel.d.ts +66 -5
  56. package/dist/dts/Channel.d.ts.map +1 -1
  57. package/dist/dts/Config.d.ts +23 -1
  58. package/dist/dts/Config.d.ts.map +1 -1
  59. package/dist/dts/Context.d.ts +111 -0
  60. package/dist/dts/Context.d.ts.map +1 -1
  61. package/dist/dts/Cron.d.ts +15 -6
  62. package/dist/dts/Cron.d.ts.map +1 -1
  63. package/dist/dts/DateTime.d.ts +40 -49
  64. package/dist/dts/DateTime.d.ts.map +1 -1
  65. package/dist/dts/Effect.d.ts +88 -1
  66. package/dist/dts/Effect.d.ts.map +1 -1
  67. package/dist/dts/Inspectable.d.ts.map +1 -1
  68. package/dist/dts/JSONSchema.d.ts +1 -0
  69. package/dist/dts/JSONSchema.d.ts.map +1 -1
  70. package/dist/dts/Micro.d.ts +875 -872
  71. package/dist/dts/Micro.d.ts.map +1 -1
  72. package/dist/dts/STM.d.ts +2 -0
  73. package/dist/dts/STM.d.ts.map +1 -1
  74. package/dist/dts/Schema.d.ts +32 -0
  75. package/dist/dts/Schema.d.ts.map +1 -1
  76. package/dist/dts/Sink.d.ts +8 -0
  77. package/dist/dts/Sink.d.ts.map +1 -1
  78. package/dist/dts/Stream.d.ts +50 -32
  79. package/dist/dts/Stream.d.ts.map +1 -1
  80. package/dist/dts/Utils.d.ts +4 -0
  81. package/dist/dts/Utils.d.ts.map +1 -1
  82. package/dist/dts/internal/context.d.ts +1 -1
  83. package/dist/dts/internal/context.d.ts.map +1 -1
  84. package/dist/dts/internal/dateTime.d.ts +2 -0
  85. package/dist/dts/internal/dateTime.d.ts.map +1 -0
  86. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  87. package/dist/dts/internal/stream.d.ts.map +1 -1
  88. package/dist/esm/BigDecimal.js +119 -20
  89. package/dist/esm/BigDecimal.js.map +1 -1
  90. package/dist/esm/Channel.js +42 -2
  91. package/dist/esm/Channel.js.map +1 -1
  92. package/dist/esm/Config.js +7 -0
  93. package/dist/esm/Config.js.map +1 -1
  94. package/dist/esm/Context.js +25 -0
  95. package/dist/esm/Context.js.map +1 -1
  96. package/dist/esm/Cron.js +75 -67
  97. package/dist/esm/Cron.js.map +1 -1
  98. package/dist/esm/DateTime.js +112 -627
  99. package/dist/esm/DateTime.js.map +1 -1
  100. package/dist/esm/Effect.js +77 -0
  101. package/dist/esm/Effect.js.map +1 -1
  102. package/dist/esm/Inspectable.js +8 -4
  103. package/dist/esm/Inspectable.js.map +1 -1
  104. package/dist/esm/JSONSchema.js.map +1 -1
  105. package/dist/esm/Micro.js +1077 -1047
  106. package/dist/esm/Micro.js.map +1 -1
  107. package/dist/esm/STM.js.map +1 -1
  108. package/dist/esm/Schema.js +54 -0
  109. package/dist/esm/Schema.js.map +1 -1
  110. package/dist/esm/Sink.js +8 -0
  111. package/dist/esm/Sink.js.map +1 -1
  112. package/dist/esm/Stream.js +23 -5
  113. package/dist/esm/Stream.js.map +1 -1
  114. package/dist/esm/Utils.js +5 -0
  115. package/dist/esm/Utils.js.map +1 -1
  116. package/dist/esm/internal/channel/channelExecutor.js +5 -7
  117. package/dist/esm/internal/channel/channelExecutor.js.map +1 -1
  118. package/dist/esm/internal/channel.js +152 -129
  119. package/dist/esm/internal/channel.js.map +1 -1
  120. package/dist/esm/internal/config.js +11 -3
  121. package/dist/esm/internal/config.js.map +1 -1
  122. package/dist/esm/internal/context.js +42 -2
  123. package/dist/esm/internal/context.js.map +1 -1
  124. package/dist/esm/internal/dateTime.js +704 -0
  125. package/dist/esm/internal/dateTime.js.map +1 -0
  126. package/dist/esm/internal/fiberRuntime.js +31 -9
  127. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  128. package/dist/esm/internal/groupBy.js +9 -3
  129. package/dist/esm/internal/groupBy.js.map +1 -1
  130. package/dist/esm/internal/layer.js +1 -1
  131. package/dist/esm/internal/layer.js.map +1 -1
  132. package/dist/esm/internal/mailbox.js +1 -1
  133. package/dist/esm/internal/mailbox.js.map +1 -1
  134. package/dist/esm/internal/sink.js +23 -20
  135. package/dist/esm/internal/sink.js.map +1 -1
  136. package/dist/esm/internal/stream.js +66 -69
  137. package/dist/esm/internal/stream.js.map +1 -1
  138. package/dist/esm/internal/version.js +1 -1
  139. package/dist/esm/internal/version.js.map +1 -1
  140. package/package.json +1 -1
  141. package/src/BigDecimal.ts +131 -21
  142. package/src/Channel.ts +81 -5
  143. package/src/Config.ts +24 -1
  144. package/src/Context.ts +119 -0
  145. package/src/Cron.ts +85 -68
  146. package/src/DateTime.ts +155 -757
  147. package/src/Effect.ts +340 -1
  148. package/src/Inspectable.ts +11 -7
  149. package/src/JSONSchema.ts +1 -0
  150. package/src/Micro.ts +2005 -1757
  151. package/src/STM.ts +2 -0
  152. package/src/Schema.ts +60 -0
  153. package/src/Sink.ts +11 -0
  154. package/src/Stream.ts +55 -44
  155. package/src/Utils.ts +8 -0
  156. package/src/internal/channel/channelExecutor.ts +37 -33
  157. package/src/internal/channel.ts +504 -467
  158. package/src/internal/config.ts +18 -6
  159. package/src/internal/context.ts +56 -4
  160. package/src/internal/dateTime.ts +1126 -0
  161. package/src/internal/fiberRuntime.ts +35 -16
  162. package/src/internal/groupBy.ts +13 -22
  163. package/src/internal/layer.ts +5 -8
  164. package/src/internal/mailbox.ts +6 -4
  165. package/src/internal/sink.ts +55 -35
  166. package/src/internal/stream.ts +299 -299
  167. 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 { YieldWrap } from "./Utils.js"
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
+ }
@@ -32,13 +32,17 @@ export interface Inspectable {
32
32
  * @since 2.0.0
33
33
  */
34
34
  export const toJSON = (x: unknown): unknown => {
35
- if (
36
- hasProperty(x, "toJSON") && isFunction(x["toJSON"]) &&
37
- x["toJSON"].length === 0
38
- ) {
39
- return x.toJSON()
40
- } else if (Array.isArray(x)) {
41
- return x.map(toJSON)
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
  }
package/src/JSONSchema.ts CHANGED
@@ -85,6 +85,7 @@ export interface JsonSchema7String extends JsonSchemaAnnotations {
85
85
  minLength?: number
86
86
  maxLength?: number
87
87
  pattern?: string
88
+ format?: string
88
89
  }
89
90
 
90
91
  /**