effect 3.0.8 → 3.1.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 (91) hide show
  1. package/dist/cjs/Channel.js.map +1 -1
  2. package/dist/cjs/Data.js +15 -1
  3. package/dist/cjs/Data.js.map +1 -1
  4. package/dist/cjs/Effect.js +43 -6
  5. package/dist/cjs/Effect.js.map +1 -1
  6. package/dist/cjs/Layer.js.map +1 -1
  7. package/dist/cjs/SortedMap.js +24 -1
  8. package/dist/cjs/SortedMap.js.map +1 -1
  9. package/dist/cjs/Stream.js +8 -3
  10. package/dist/cjs/Stream.js.map +1 -1
  11. package/dist/cjs/Tracer.js.map +1 -1
  12. package/dist/cjs/internal/channel.js.map +1 -1
  13. package/dist/cjs/internal/core-effect.js +1 -1
  14. package/dist/cjs/internal/core-effect.js.map +1 -1
  15. package/dist/cjs/internal/core.js +1 -0
  16. package/dist/cjs/internal/core.js.map +1 -1
  17. package/dist/cjs/internal/effect/circular.js +7 -1
  18. package/dist/cjs/internal/effect/circular.js.map +1 -1
  19. package/dist/cjs/internal/fiberRuntime.js +15 -1
  20. package/dist/cjs/internal/fiberRuntime.js.map +1 -1
  21. package/dist/cjs/internal/layer/circular.js.map +1 -1
  22. package/dist/cjs/internal/layer.js.map +1 -1
  23. package/dist/cjs/internal/stream.js +23 -3
  24. package/dist/cjs/internal/stream.js.map +1 -1
  25. package/dist/cjs/internal/tracer.js +4 -2
  26. package/dist/cjs/internal/tracer.js.map +1 -1
  27. package/dist/cjs/internal/version.js +1 -1
  28. package/dist/dts/Channel.d.ts +2 -14
  29. package/dist/dts/Channel.d.ts.map +1 -1
  30. package/dist/dts/Data.d.ts +20 -5
  31. package/dist/dts/Data.d.ts.map +1 -1
  32. package/dist/dts/Effect.d.ts +53 -52
  33. package/dist/dts/Effect.d.ts.map +1 -1
  34. package/dist/dts/Layer.d.ts +3 -18
  35. package/dist/dts/Layer.d.ts.map +1 -1
  36. package/dist/dts/SortedMap.d.ts +13 -0
  37. package/dist/dts/SortedMap.d.ts.map +1 -1
  38. package/dist/dts/Stream.d.ts +7 -14
  39. package/dist/dts/Stream.d.ts.map +1 -1
  40. package/dist/dts/Tracer.d.ts +19 -1
  41. package/dist/dts/Tracer.d.ts.map +1 -1
  42. package/dist/dts/Types.d.ts +18 -0
  43. package/dist/dts/Types.d.ts.map +1 -1
  44. package/dist/dts/internal/fiberRuntime.d.ts +6 -1
  45. package/dist/dts/internal/fiberRuntime.d.ts.map +1 -1
  46. package/dist/esm/Channel.js.map +1 -1
  47. package/dist/esm/Data.js +14 -0
  48. package/dist/esm/Data.js.map +1 -1
  49. package/dist/esm/Effect.js +39 -2
  50. package/dist/esm/Effect.js.map +1 -1
  51. package/dist/esm/Layer.js.map +1 -1
  52. package/dist/esm/SortedMap.js +22 -0
  53. package/dist/esm/SortedMap.js.map +1 -1
  54. package/dist/esm/Stream.js +5 -0
  55. package/dist/esm/Stream.js.map +1 -1
  56. package/dist/esm/Tracer.js.map +1 -1
  57. package/dist/esm/internal/channel.js.map +1 -1
  58. package/dist/esm/internal/core-effect.js +1 -1
  59. package/dist/esm/internal/core-effect.js.map +1 -1
  60. package/dist/esm/internal/core.js +1 -0
  61. package/dist/esm/internal/core.js.map +1 -1
  62. package/dist/esm/internal/effect/circular.js +6 -0
  63. package/dist/esm/internal/effect/circular.js.map +1 -1
  64. package/dist/esm/internal/fiberRuntime.js +13 -0
  65. package/dist/esm/internal/fiberRuntime.js.map +1 -1
  66. package/dist/esm/internal/layer/circular.js.map +1 -1
  67. package/dist/esm/internal/layer.js.map +1 -1
  68. package/dist/esm/internal/stream.js +19 -0
  69. package/dist/esm/internal/stream.js.map +1 -1
  70. package/dist/esm/internal/tracer.js +4 -2
  71. package/dist/esm/internal/tracer.js.map +1 -1
  72. package/dist/esm/internal/version.js +1 -1
  73. package/package.json +1 -1
  74. package/src/Channel.ts +2 -14
  75. package/src/Data.ts +39 -3
  76. package/src/Effect.ts +55 -52
  77. package/src/Layer.ts +3 -18
  78. package/src/SortedMap.ts +35 -0
  79. package/src/Stream.ts +12 -14
  80. package/src/Tracer.ts +22 -1
  81. package/src/Types.ts +21 -0
  82. package/src/internal/channel.ts +2 -14
  83. package/src/internal/core-effect.ts +19 -43
  84. package/src/internal/core.ts +1 -0
  85. package/src/internal/effect/circular.ts +16 -0
  86. package/src/internal/fiberRuntime.ts +33 -21
  87. package/src/internal/layer/circular.ts +1 -6
  88. package/src/internal/layer.ts +17 -20
  89. package/src/internal/stream.ts +27 -14
  90. package/src/internal/tracer.ts +5 -3
  91. package/src/internal/version.ts +1 -1
@@ -2982,6 +2982,7 @@ const NoopSpanProto: Tracer.Span = {
2982
2982
  },
2983
2983
  attributes: new Map(),
2984
2984
  links: [],
2985
+ kind: "internal",
2985
2986
  attribute() {},
2986
2987
  event() {},
2987
2988
  end() {}
@@ -467,6 +467,22 @@ export const timeoutFailCause = dual<
467
467
  duration
468
468
  })))
469
469
 
470
+ /** @internal */
471
+ export const timeoutOption = dual<
472
+ (
473
+ duration: Duration.DurationInput
474
+ ) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E, R>,
475
+ <A, E, R>(
476
+ self: Effect.Effect<A, E, R>,
477
+ duration: Duration.DurationInput
478
+ ) => Effect.Effect<Option.Option<A>, E, R>
479
+ >(2, (self, duration) =>
480
+ timeoutTo(self, {
481
+ duration,
482
+ onSuccess: Option.some,
483
+ onTimeout: Option.none
484
+ }))
485
+
470
486
  /** @internal */
471
487
  export const timeoutTo = dual<
472
488
  <A, B, B1>(
@@ -1502,6 +1502,29 @@ export const batchedLogger = dual<
1502
1502
  )
1503
1503
  }))
1504
1504
 
1505
+ export const annotateLogsScoped: {
1506
+ (key: string, value: unknown): Effect.Effect<void, never, Scope.Scope>
1507
+ (values: Record<string, unknown>): Effect.Effect<void, never, Scope.Scope>
1508
+ } = function() {
1509
+ if (typeof arguments[0] === "string") {
1510
+ return fiberRefLocallyScopedWith(
1511
+ core.currentLogAnnotations,
1512
+ HashMap.set(arguments[0], arguments[1])
1513
+ )
1514
+ }
1515
+ const entries = Object.entries(arguments[0])
1516
+ return fiberRefLocallyScopedWith(
1517
+ core.currentLogAnnotations,
1518
+ HashMap.mutate((annotations) => {
1519
+ for (let i = 0; i < entries.length; i++) {
1520
+ const [key, value] = entries[i]
1521
+ HashMap.set(annotations, key, value)
1522
+ }
1523
+ return annotations
1524
+ })
1525
+ )
1526
+ }
1527
+
1505
1528
  // circular with Effect
1506
1529
 
1507
1530
  /* @internal */
@@ -3598,13 +3621,7 @@ export const interruptWhenPossible = dual<
3598
3621
  /** @internal */
3599
3622
  export const makeSpanScoped = (
3600
3623
  name: string,
3601
- options?: {
3602
- readonly attributes?: Record<string, unknown> | undefined
3603
- readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
3604
- readonly parent?: Tracer.AnySpan | undefined
3605
- readonly root?: boolean | undefined
3606
- readonly context?: Context.Context<never> | undefined
3607
- } | undefined
3624
+ options?: Tracer.SpanOptions | undefined
3608
3625
  ): Effect.Effect<Tracer.Span, never, Scope.Scope> =>
3609
3626
  core.uninterruptible(
3610
3627
  core.withFiberRuntime((fiber) => {
@@ -3631,20 +3648,15 @@ export const withTracerScoped = (value: Tracer.Tracer): Effect.Effect<void, neve
3631
3648
 
3632
3649
  /** @internal */
3633
3650
  export const withSpanScoped = dual<
3634
- (name: string, options?: {
3635
- readonly attributes?: Record<string, unknown> | undefined
3636
- readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
3637
- readonly parent?: Tracer.AnySpan | undefined
3638
- readonly root?: boolean | undefined
3639
- readonly context?: Context.Context<never> | undefined
3640
- }) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan> | Scope.Scope>,
3641
- <A, E, R>(self: Effect.Effect<A, E, R>, name: string, options?: {
3642
- readonly attributes?: Record<string, unknown> | undefined
3643
- readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
3644
- readonly parent?: Tracer.AnySpan | undefined
3645
- readonly root?: boolean | undefined
3646
- readonly context?: Context.Context<never> | undefined
3647
- }) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan> | Scope.Scope>
3651
+ (
3652
+ name: string,
3653
+ options?: Tracer.SpanOptions
3654
+ ) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan> | Scope.Scope>,
3655
+ <A, E, R>(
3656
+ self: Effect.Effect<A, E, R>,
3657
+ name: string,
3658
+ options?: Tracer.SpanOptions
3659
+ ) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan> | Scope.Scope>
3648
3660
  >(
3649
3661
  (args) => typeof args[0] !== "string",
3650
3662
  (self, name, options) =>
@@ -191,12 +191,7 @@ export const parentSpan = (span: Tracer.AnySpan): Layer.Layer<Tracer.ParentSpan>
191
191
  /** @internal */
192
192
  export const span = (
193
193
  name: string,
194
- options?: {
195
- readonly attributes?: Record<string, unknown> | undefined
196
- readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
197
- readonly parent?: Tracer.AnySpan | undefined
198
- readonly root?: boolean | undefined
199
- readonly context?: Context.Context<never> | undefined
194
+ options?: Tracer.SpanOptions & {
200
195
  readonly onEnd?:
201
196
  | ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
202
197
  | undefined
@@ -1114,26 +1114,23 @@ export const unwrapScoped = <A, E1, R1, E, R>(
1114
1114
 
1115
1115
  /** @internal */
1116
1116
  export const withSpan = dual<
1117
- (name: string, options?: {
1118
- readonly attributes?: Record<string, unknown> | undefined
1119
- readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
1120
- readonly parent?: Tracer.AnySpan | undefined
1121
- readonly root?: boolean | undefined
1122
- readonly context?: Context.Context<never> | undefined
1123
- readonly onEnd?:
1124
- | ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
1125
- | undefined
1126
- }) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>,
1127
- <A, E, R>(self: Layer.Layer<A, E, R>, name: string, options?: {
1128
- readonly attributes?: Record<string, unknown> | undefined
1129
- readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
1130
- readonly parent?: Tracer.AnySpan | undefined
1131
- readonly root?: boolean | undefined
1132
- readonly context?: Context.Context<never> | undefined
1133
- readonly onEnd?:
1134
- | ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
1135
- | undefined
1136
- }) => Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>
1117
+ (
1118
+ name: string,
1119
+ options?: Tracer.SpanOptions & {
1120
+ readonly onEnd?:
1121
+ | ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
1122
+ | undefined
1123
+ }
1124
+ ) => <A, E, R>(self: Layer.Layer<A, E, R>) => Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>,
1125
+ <A, E, R>(
1126
+ self: Layer.Layer<A, E, R>,
1127
+ name: string,
1128
+ options?: Tracer.SpanOptions & {
1129
+ readonly onEnd?:
1130
+ | ((span: Tracer.Span, exit: Exit.Exit<unknown, unknown>) => Effect.Effect<void>)
1131
+ | undefined
1132
+ }
1133
+ ) => Layer.Layer<A, E, Exclude<R, Tracer.ParentSpan>>
1137
1134
  >((args) => isLayer(args[0]), (self, name, options) =>
1138
1135
  unwrapScoped(
1139
1136
  core.map(
@@ -6803,24 +6803,12 @@ export const whenEffect = dual<
6803
6803
  export const withSpan = dual<
6804
6804
  (
6805
6805
  name: string,
6806
- options?: {
6807
- readonly attributes?: Record<string, unknown> | undefined
6808
- readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
6809
- readonly parent?: Tracer.AnySpan | undefined
6810
- readonly root?: boolean | undefined
6811
- readonly context?: Context.Context<never> | undefined
6812
- }
6806
+ options?: Tracer.SpanOptions
6813
6807
  ) => <A, E, R>(self: Stream.Stream<A, E, R>) => Stream.Stream<A, E, Exclude<R, Tracer.ParentSpan>>,
6814
6808
  <A, E, R>(
6815
6809
  self: Stream.Stream<A, E, R>,
6816
6810
  name: string,
6817
- options?: {
6818
- readonly attributes?: Record<string, unknown> | undefined
6819
- readonly links?: ReadonlyArray<Tracer.SpanLink> | undefined
6820
- readonly parent?: Tracer.AnySpan | undefined
6821
- readonly root?: boolean | undefined
6822
- readonly context?: Context.Context<never> | undefined
6823
- }
6811
+ options?: Tracer.SpanOptions
6824
6812
  ) => Stream.Stream<A, E, Exclude<R, Tracer.ParentSpan>>
6825
6813
  >(3, (self, name, options) => new StreamImpl(channel.withSpan(toChannel(self), name, options)))
6826
6814
 
@@ -8048,3 +8036,28 @@ export const encodeText = <E, R>(self: Stream.Stream<string, E, R>): Stream.Stre
8048
8036
  const encoder = new TextEncoder()
8049
8037
  return map(self, (s) => encoder.encode(s))
8050
8038
  })
8039
+
8040
+ /** @internal */
8041
+ export const fromEventListener = <A = Event>(
8042
+ target: EventTarget,
8043
+ type: string,
8044
+ options?: boolean | Omit<AddEventListenerOptions, "signal">
8045
+ ): Stream.Stream<A> =>
8046
+ _async<A>((emit) => {
8047
+ let batch: Array<A> = []
8048
+ let taskRunning = false
8049
+ function cb(e: A) {
8050
+ batch.push(e)
8051
+ if (!taskRunning) {
8052
+ taskRunning = true
8053
+ queueMicrotask(() => {
8054
+ const events = batch
8055
+ batch = []
8056
+ taskRunning = false
8057
+ emit.chunk(Chunk.unsafeFromArray(events))
8058
+ })
8059
+ }
8060
+ }
8061
+ target.addEventListener(type, cb as any, options)
8062
+ return Effect.sync(() => target.removeEventListener(type, cb as any, options))
8063
+ })
@@ -49,7 +49,8 @@ export class NativeSpan implements Tracer.Span {
49
49
  readonly parent: Option.Option<Tracer.AnySpan>,
50
50
  readonly context: Context.Context<never>,
51
51
  readonly links: ReadonlyArray<Tracer.SpanLink>,
52
- readonly startTime: bigint
52
+ readonly startTime: bigint,
53
+ readonly kind: Tracer.SpanKind
53
54
  ) {
54
55
  this.status = {
55
56
  _tag: "Started",
@@ -80,13 +81,14 @@ export class NativeSpan implements Tracer.Span {
80
81
 
81
82
  /** @internal */
82
83
  export const nativeTracer: Tracer.Tracer = make({
83
- span: (name, parent, context, links, startTime) =>
84
+ span: (name, parent, context, links, startTime, kind) =>
84
85
  new NativeSpan(
85
86
  name,
86
87
  parent,
87
88
  context,
88
89
  links,
89
- startTime
90
+ startTime,
91
+ kind
90
92
  ),
91
93
  context: (f) => f()
92
94
  })
@@ -1,4 +1,4 @@
1
- let moduleVersion = "3.0.8"
1
+ let moduleVersion = "3.1.0"
2
2
 
3
3
  export const getCurrentVersion = () => moduleVersion
4
4