effect 3.5.8 → 3.6.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/DateTime/package.json +6 -0
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/DateTime.js +1514 -0
- package/dist/cjs/DateTime.js.map +1 -0
- package/dist/cjs/Effect.js +3 -3
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +3 -3
- package/dist/cjs/List.js.map +1 -1
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/Micro.js +93 -41
- package/dist/cjs/Micro.js.map +1 -1
- package/dist/cjs/Option.js +3 -3
- package/dist/cjs/Predicate.js +8 -0
- package/dist/cjs/Predicate.js.map +1 -1
- package/dist/cjs/Random.js +16 -1
- package/dist/cjs/Random.js.map +1 -1
- package/dist/cjs/Stream.js +86 -7
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/Struct.js +23 -1
- package/dist/cjs/Struct.js.map +1 -1
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/configProvider.js.map +1 -1
- package/dist/cjs/internal/core.js +1 -1
- package/dist/cjs/internal/core.js.map +1 -1
- package/dist/cjs/internal/defaultServices.js +9 -2
- package/dist/cjs/internal/defaultServices.js.map +1 -1
- package/dist/cjs/internal/metric.js.map +1 -1
- package/dist/cjs/internal/stream/emit.js +73 -1
- package/dist/cjs/internal/stream/emit.js.map +1 -1
- package/dist/cjs/internal/stream.js +30 -22
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/ConfigProvider.d.ts +2 -2
- package/dist/dts/ConfigProvider.d.ts.map +1 -1
- package/dist/dts/Context.d.ts +3 -1
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/DateTime.d.ts +1265 -0
- package/dist/dts/DateTime.d.ts.map +1 -0
- package/dist/dts/Effect.d.ts +18 -4
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +4 -4
- package/dist/dts/List.d.ts +2 -1
- package/dist/dts/List.d.ts.map +1 -1
- package/dist/dts/Metric.d.ts +1 -1
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/MetricRegistry.d.ts +1 -1
- package/dist/dts/MetricRegistry.d.ts.map +1 -1
- package/dist/dts/Micro.d.ts +60 -0
- package/dist/dts/Micro.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +4 -4
- package/dist/dts/Predicate.d.ts +63 -2
- package/dist/dts/Predicate.d.ts.map +1 -1
- package/dist/dts/Random.d.ts +18 -0
- package/dist/dts/Random.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +95 -4
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/StreamEmit.d.ts +44 -0
- package/dist/dts/StreamEmit.d.ts.map +1 -1
- package/dist/dts/Struct.d.ts +21 -0
- package/dist/dts/Struct.d.ts.map +1 -1
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/core.d.ts.map +1 -1
- package/dist/dts/internal/defaultServices.d.ts.map +1 -1
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/DateTime.js +1465 -0
- package/dist/esm/DateTime.js.map +1 -0
- package/dist/esm/Effect.js +4 -4
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +4 -4
- package/dist/esm/List.js.map +1 -1
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/Micro.js +88 -38
- package/dist/esm/Micro.js.map +1 -1
- package/dist/esm/Option.js +4 -4
- package/dist/esm/Predicate.js +8 -0
- package/dist/esm/Predicate.js.map +1 -1
- package/dist/esm/Random.js +15 -0
- package/dist/esm/Random.js.map +1 -1
- package/dist/esm/Stream.js +84 -5
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/Struct.js +21 -0
- package/dist/esm/Struct.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/configProvider.js.map +1 -1
- package/dist/esm/internal/core.js +1 -1
- package/dist/esm/internal/core.js.map +1 -1
- package/dist/esm/internal/defaultServices.js +6 -0
- package/dist/esm/internal/defaultServices.js.map +1 -1
- package/dist/esm/internal/metric.js.map +1 -1
- package/dist/esm/internal/stream/emit.js +71 -0
- package/dist/esm/internal/stream/emit.js.map +1 -1
- package/dist/esm/internal/stream.js +24 -18
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +9 -1
- package/src/ConfigProvider.ts +2 -2
- package/src/Context.ts +3 -1
- package/src/DateTime.ts +2104 -0
- package/src/Effect.ts +28 -4
- package/src/Either.ts +4 -4
- package/src/List.ts +3 -2
- package/src/Metric.ts +1 -1
- package/src/MetricRegistry.ts +1 -1
- package/src/Micro.ts +117 -45
- package/src/Option.ts +4 -4
- package/src/Predicate.ts +68 -8
- package/src/Random.ts +24 -0
- package/src/Stream.ts +110 -5
- package/src/StreamEmit.ts +53 -0
- package/src/Struct.ts +22 -0
- package/src/index.ts +5 -0
- package/src/internal/configProvider.ts +20 -20
- package/src/internal/core.ts +37 -12
- package/src/internal/defaultServices.ts +14 -0
- package/src/internal/metric/registry.ts +1 -1
- package/src/internal/metric.ts +2 -2
- package/src/internal/stream/emit.ts +77 -0
- package/src/internal/stream.ts +86 -18
- package/src/internal/version.ts +1 -1
package/src/internal/stream.ts
CHANGED
|
@@ -10,6 +10,7 @@ import * as Either from "../Either.js"
|
|
|
10
10
|
import * as Equal from "../Equal.js"
|
|
11
11
|
import * as Exit from "../Exit.js"
|
|
12
12
|
import * as Fiber from "../Fiber.js"
|
|
13
|
+
import * as FiberRef from "../FiberRef.js"
|
|
13
14
|
import type { LazyArg } from "../Function.js"
|
|
14
15
|
import { constTrue, dual, identity, pipe } from "../Function.js"
|
|
15
16
|
import * as Layer from "../Layer.js"
|
|
@@ -597,6 +598,51 @@ export const asyncEffect = <A, E = never, R = never>(
|
|
|
597
598
|
fromChannel
|
|
598
599
|
)
|
|
599
600
|
|
|
601
|
+
const queueFromBufferOptionsPush = <A, E>(
|
|
602
|
+
options?: { readonly bufferSize: "unbounded" } | {
|
|
603
|
+
readonly bufferSize?: number | undefined
|
|
604
|
+
readonly strategy?: "dropping" | "sliding" | undefined
|
|
605
|
+
} | undefined
|
|
606
|
+
): Effect.Effect<Queue.Queue<Array<A> | Exit.Exit<void, E>>> => {
|
|
607
|
+
if (options?.bufferSize === "unbounded" || (options?.bufferSize === undefined && options?.strategy === undefined)) {
|
|
608
|
+
return Queue.unbounded()
|
|
609
|
+
}
|
|
610
|
+
switch (options?.strategy) {
|
|
611
|
+
case "sliding":
|
|
612
|
+
return Queue.sliding(options.bufferSize ?? 16)
|
|
613
|
+
default:
|
|
614
|
+
return Queue.dropping(options?.bufferSize ?? 16)
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
/** @internal */
|
|
619
|
+
export const asyncPush = <A, E = never, R = never>(
|
|
620
|
+
register: (emit: Emit.EmitOpsPush<E, A>) => Effect.Effect<unknown, never, R | Scope.Scope>,
|
|
621
|
+
options?: {
|
|
622
|
+
readonly bufferSize: "unbounded"
|
|
623
|
+
} | {
|
|
624
|
+
readonly bufferSize?: number | undefined
|
|
625
|
+
readonly strategy?: "dropping" | "sliding" | undefined
|
|
626
|
+
} | undefined
|
|
627
|
+
): Stream.Stream<A, E, Exclude<R, Scope.Scope>> =>
|
|
628
|
+
Effect.acquireRelease(
|
|
629
|
+
queueFromBufferOptionsPush<A, E>(options),
|
|
630
|
+
Queue.shutdown
|
|
631
|
+
).pipe(
|
|
632
|
+
Effect.tap((queue) =>
|
|
633
|
+
FiberRef.getWith(FiberRef.currentScheduler, (scheduler) => register(emit.makePush(queue, scheduler)))
|
|
634
|
+
),
|
|
635
|
+
Effect.map((queue) => {
|
|
636
|
+
const loop: Channel.Channel<Chunk.Chunk<A>, unknown, E> = core.flatMap(Queue.take(queue), (item) =>
|
|
637
|
+
Exit.isExit(item)
|
|
638
|
+
? Exit.isSuccess(item) ? core.void : core.failCause(item.cause)
|
|
639
|
+
: channel.zipRight(core.write(Chunk.unsafeFromArray(item)), loop))
|
|
640
|
+
return loop
|
|
641
|
+
}),
|
|
642
|
+
channel.unwrapScoped,
|
|
643
|
+
fromChannel
|
|
644
|
+
)
|
|
645
|
+
|
|
600
646
|
/** @internal */
|
|
601
647
|
export const asyncScoped = <A, E = never, R = never>(
|
|
602
648
|
register: (emit: Emit.Emit<R, E, A, void>) => Effect.Effect<unknown, E, R | Scope.Scope>,
|
|
@@ -4116,6 +4162,23 @@ export const mkString = <E, R>(self: Stream.Stream<string, E, R>): Effect.Effect
|
|
|
4116
4162
|
/** @internal */
|
|
4117
4163
|
export const never: Stream.Stream<never> = fromEffect(Effect.never)
|
|
4118
4164
|
|
|
4165
|
+
/** @internal */
|
|
4166
|
+
export const onEnd: {
|
|
4167
|
+
<_, E2, R2>(
|
|
4168
|
+
effect: Effect.Effect<_, E2, R2>
|
|
4169
|
+
): <A, E, R>(self: Stream.Stream<A, E, R>) => Stream.Stream<A, E2 | E, R2 | R>
|
|
4170
|
+
<A, E, R, _, E2, R2>(
|
|
4171
|
+
self: Stream.Stream<A, E, R>,
|
|
4172
|
+
effect: Effect.Effect<_, E2, R2>
|
|
4173
|
+
): Stream.Stream<A, E | E2, R | R2>
|
|
4174
|
+
} = dual(
|
|
4175
|
+
2,
|
|
4176
|
+
<A, E, R, _, E2, R2>(
|
|
4177
|
+
self: Stream.Stream<A, E, R>,
|
|
4178
|
+
effect: Effect.Effect<_, E2, R2>
|
|
4179
|
+
): Stream.Stream<A, E | E2, R | R2> => concat(self, drain(fromEffect(effect)))
|
|
4180
|
+
)
|
|
4181
|
+
|
|
4119
4182
|
/** @internal */
|
|
4120
4183
|
export const onError = dual<
|
|
4121
4184
|
<E, X, R2>(
|
|
@@ -4154,6 +4217,23 @@ export const onDone = dual<
|
|
|
4154
4217
|
)
|
|
4155
4218
|
)
|
|
4156
4219
|
|
|
4220
|
+
/** @internal */
|
|
4221
|
+
export const onStart: {
|
|
4222
|
+
<_, E2, R2>(
|
|
4223
|
+
effect: Effect.Effect<_, E2, R2>
|
|
4224
|
+
): <A, E, R>(self: Stream.Stream<A, E, R>) => Stream.Stream<A, E2 | E, R2 | R>
|
|
4225
|
+
<A, E, R, _, E2, R2>(
|
|
4226
|
+
self: Stream.Stream<A, E, R>,
|
|
4227
|
+
effect: Effect.Effect<_, E2, R2>
|
|
4228
|
+
): Stream.Stream<A, E | E2, R | R2>
|
|
4229
|
+
} = dual(
|
|
4230
|
+
2,
|
|
4231
|
+
<A, E, R, _, E2, R2>(
|
|
4232
|
+
self: Stream.Stream<A, E, R>,
|
|
4233
|
+
effect: Effect.Effect<_, E2, R2>
|
|
4234
|
+
): Stream.Stream<A, E | E2, R | R2> => unwrap(Effect.as(effect, self))
|
|
4235
|
+
)
|
|
4236
|
+
|
|
4157
4237
|
/** @internal */
|
|
4158
4238
|
export const orDie = <A, E, R>(self: Stream.Stream<A, E, R>): Stream.Stream<A, never, R> =>
|
|
4159
4239
|
pipe(self, orDieWith(identity))
|
|
@@ -8324,23 +8404,11 @@ export const fromEventListener = <A = unknown>(
|
|
|
8324
8404
|
readonly capture?: boolean
|
|
8325
8405
|
readonly passive?: boolean
|
|
8326
8406
|
readonly once?: boolean
|
|
8407
|
+
readonly bufferSize?: number | "unbounded" | undefined
|
|
8327
8408
|
} | undefined
|
|
8328
8409
|
): Stream.Stream<A> =>
|
|
8329
|
-
|
|
8330
|
-
|
|
8331
|
-
|
|
8332
|
-
|
|
8333
|
-
|
|
8334
|
-
if (!taskRunning) {
|
|
8335
|
-
taskRunning = true
|
|
8336
|
-
queueMicrotask(() => {
|
|
8337
|
-
const events = batch
|
|
8338
|
-
batch = []
|
|
8339
|
-
taskRunning = false
|
|
8340
|
-
emit.chunk(Chunk.unsafeFromArray(events))
|
|
8341
|
-
})
|
|
8342
|
-
}
|
|
8343
|
-
}
|
|
8344
|
-
target.addEventListener(type, cb as any, options)
|
|
8345
|
-
return Effect.sync(() => target.removeEventListener(type, cb, options))
|
|
8346
|
-
}, "unbounded")
|
|
8410
|
+
asyncPush<A>((emit) =>
|
|
8411
|
+
Effect.acquireRelease(
|
|
8412
|
+
Effect.sync(() => target.addEventListener(type, emit.single as any, options)),
|
|
8413
|
+
() => Effect.sync(() => target.removeEventListener(type, emit.single, options))
|
|
8414
|
+
), { bufferSize: typeof options === "object" ? options.bufferSize : undefined })
|
package/src/internal/version.ts
CHANGED