effect 3.1.1 → 3.1.2
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/Array.js +10 -13
- package/dist/cjs/Array.js.map +1 -1
- package/dist/cjs/BigDecimal.js +14 -17
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/BigInt.js +41 -46
- package/dist/cjs/BigInt.js.map +1 -1
- package/dist/cjs/Boolean.js +13 -13
- package/dist/cjs/Brand.js +2 -2
- package/dist/cjs/Chunk.js +3 -3
- package/dist/cjs/Context.js +15 -20
- package/dist/cjs/Context.js.map +1 -1
- package/dist/cjs/Cron.js +3 -6
- package/dist/cjs/Cron.js.map +1 -1
- package/dist/cjs/Data.js +8 -13
- package/dist/cjs/Data.js.map +1 -1
- package/dist/cjs/Duration.js +1 -1
- package/dist/cjs/Effect.js +77 -9
- package/dist/cjs/Effect.js.map +1 -1
- package/dist/cjs/Either.js +117 -59
- package/dist/cjs/Either.js.map +1 -1
- package/dist/cjs/FiberHandle.js.map +1 -1
- package/dist/cjs/FiberMap.js.map +1 -1
- package/dist/cjs/FiberSet.js.map +1 -1
- package/dist/cjs/Function.js +2 -2
- package/dist/cjs/Function.js.map +1 -1
- package/dist/cjs/Iterable.js +10 -13
- package/dist/cjs/Iterable.js.map +1 -1
- package/dist/cjs/List.js +2 -2
- package/dist/cjs/Metric.js +5 -7
- package/dist/cjs/Metric.js.map +1 -1
- package/dist/cjs/Number.js +20 -21
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/Option.js +223 -164
- package/dist/cjs/Option.js.map +1 -1
- package/dist/cjs/Order.js +1 -2
- package/dist/cjs/Order.js.map +1 -1
- package/dist/cjs/Ordering.js +2 -2
- package/dist/cjs/Predicate.js +9 -12
- package/dist/cjs/Predicate.js.map +1 -1
- package/dist/cjs/Readable.js.map +1 -1
- package/dist/cjs/Record.js +35 -47
- package/dist/cjs/Record.js.map +1 -1
- package/dist/cjs/RegExp.js +1 -1
- package/dist/cjs/Request.js +2 -2
- package/dist/cjs/Request.js.map +1 -1
- package/dist/cjs/Stream.js +82 -4
- package/dist/cjs/Stream.js.map +1 -1
- package/dist/cjs/String.js +81 -111
- package/dist/cjs/String.js.map +1 -1
- package/dist/cjs/Struct.js +13 -19
- package/dist/cjs/Struct.js.map +1 -1
- package/dist/cjs/Subscribable.js.map +1 -1
- package/dist/cjs/Symbol.js +3 -3
- package/dist/cjs/TestAnnotation.js.map +1 -1
- package/dist/cjs/TestAnnotationMap.js.map +1 -1
- package/dist/cjs/TestAnnotations.js.map +1 -1
- package/dist/cjs/TestClock.js.map +1 -1
- package/dist/cjs/TestLive.js.map +1 -1
- package/dist/cjs/TestSized.js.map +1 -1
- package/dist/cjs/Trie.js +28 -44
- package/dist/cjs/Trie.js.map +1 -1
- package/dist/cjs/Utils.js.map +1 -1
- package/dist/cjs/internal/core-effect.js +4 -11
- package/dist/cjs/internal/core-effect.js.map +1 -1
- package/dist/cjs/internal/doNotation.js +23 -0
- package/dist/cjs/internal/doNotation.js.map +1 -0
- package/dist/cjs/internal/groupBy.js.map +1 -1
- package/dist/cjs/internal/stream.js +3 -7
- package/dist/cjs/internal/stream.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/Array.d.ts +10 -13
- package/dist/dts/Array.d.ts.map +1 -1
- package/dist/dts/BigDecimal.d.ts +14 -17
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/BigInt.d.ts +41 -46
- package/dist/dts/BigInt.d.ts.map +1 -1
- package/dist/dts/Boolean.d.ts +13 -13
- package/dist/dts/Brand.d.ts +3 -3
- package/dist/dts/Chunk.d.ts +3 -3
- package/dist/dts/Context.d.ts +15 -20
- package/dist/dts/Context.d.ts.map +1 -1
- package/dist/dts/Cron.d.ts +3 -6
- package/dist/dts/Cron.d.ts.map +1 -1
- package/dist/dts/Data.d.ts +10 -16
- package/dist/dts/Data.d.ts.map +1 -1
- package/dist/dts/Duration.d.ts +1 -1
- package/dist/dts/Effect.d.ts +120 -26
- package/dist/dts/Effect.d.ts.map +1 -1
- package/dist/dts/Either.d.ts +155 -64
- package/dist/dts/Either.d.ts.map +1 -1
- package/dist/dts/FiberHandle.d.ts.map +1 -1
- package/dist/dts/FiberMap.d.ts.map +1 -1
- package/dist/dts/FiberSet.d.ts.map +1 -1
- package/dist/dts/Function.d.ts +4 -2
- package/dist/dts/Function.d.ts.map +1 -1
- package/dist/dts/HashMap.d.ts +2 -2
- package/dist/dts/Iterable.d.ts +10 -13
- package/dist/dts/Iterable.d.ts.map +1 -1
- package/dist/dts/List.d.ts +2 -2
- package/dist/dts/Metric.d.ts +5 -7
- package/dist/dts/Metric.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +20 -21
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/Option.d.ts +245 -155
- package/dist/dts/Option.d.ts.map +1 -1
- package/dist/dts/Order.d.ts +1 -2
- package/dist/dts/Order.d.ts.map +1 -1
- package/dist/dts/Ordering.d.ts +2 -2
- package/dist/dts/Predicate.d.ts +9 -12
- package/dist/dts/Predicate.d.ts.map +1 -1
- package/dist/dts/Readable.d.ts.map +1 -1
- package/dist/dts/Record.d.ts +35 -47
- package/dist/dts/Record.d.ts.map +1 -1
- package/dist/dts/RegExp.d.ts +1 -1
- package/dist/dts/Request.d.ts +2 -2
- package/dist/dts/Request.d.ts.map +1 -1
- package/dist/dts/Stream.d.ts +136 -31
- package/dist/dts/Stream.d.ts.map +1 -1
- package/dist/dts/String.d.ts +81 -111
- package/dist/dts/String.d.ts.map +1 -1
- package/dist/dts/Struct.d.ts +13 -19
- package/dist/dts/Struct.d.ts.map +1 -1
- package/dist/dts/Subscribable.d.ts.map +1 -1
- package/dist/dts/Symbol.d.ts +3 -3
- package/dist/dts/TestAnnotation.d.ts.map +1 -1
- package/dist/dts/TestAnnotationMap.d.ts.map +1 -1
- package/dist/dts/TestAnnotations.d.ts.map +1 -1
- package/dist/dts/TestClock.d.ts +1 -5
- package/dist/dts/TestClock.d.ts.map +1 -1
- package/dist/dts/TestLive.d.ts.map +1 -1
- package/dist/dts/TestSized.d.ts.map +1 -1
- package/dist/dts/Trie.d.ts +28 -44
- package/dist/dts/Trie.d.ts.map +1 -1
- package/dist/dts/Types.d.ts +10 -10
- package/dist/dts/Utils.d.ts.map +1 -1
- package/dist/dts/internal/doNotation.d.ts +2 -0
- package/dist/dts/internal/doNotation.d.ts.map +1 -0
- package/dist/dts/internal/stream.d.ts.map +1 -1
- package/dist/esm/Array.js +10 -13
- package/dist/esm/Array.js.map +1 -1
- package/dist/esm/BigDecimal.js +14 -17
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/BigInt.js +41 -46
- package/dist/esm/BigInt.js.map +1 -1
- package/dist/esm/Boolean.js +13 -13
- package/dist/esm/Brand.js +2 -2
- package/dist/esm/Chunk.js +3 -3
- package/dist/esm/Context.js +15 -20
- package/dist/esm/Context.js.map +1 -1
- package/dist/esm/Cron.js +3 -6
- package/dist/esm/Cron.js.map +1 -1
- package/dist/esm/Data.js +9 -15
- package/dist/esm/Data.js.map +1 -1
- package/dist/esm/Duration.js +1 -1
- package/dist/esm/Effect.js +101 -11
- package/dist/esm/Effect.js.map +1 -1
- package/dist/esm/Either.js +141 -61
- package/dist/esm/Either.js.map +1 -1
- package/dist/esm/FiberHandle.js.map +1 -1
- package/dist/esm/FiberMap.js.map +1 -1
- package/dist/esm/FiberSet.js.map +1 -1
- package/dist/esm/Function.js +2 -2
- package/dist/esm/Function.js.map +1 -1
- package/dist/esm/Iterable.js +10 -13
- package/dist/esm/Iterable.js.map +1 -1
- package/dist/esm/List.js +2 -2
- package/dist/esm/Metric.js +5 -7
- package/dist/esm/Metric.js.map +1 -1
- package/dist/esm/Number.js +20 -21
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/Option.js +249 -164
- package/dist/esm/Option.js.map +1 -1
- package/dist/esm/Order.js +1 -2
- package/dist/esm/Order.js.map +1 -1
- package/dist/esm/Ordering.js +2 -2
- package/dist/esm/Predicate.js +9 -12
- package/dist/esm/Predicate.js.map +1 -1
- package/dist/esm/Readable.js.map +1 -1
- package/dist/esm/Record.js +35 -47
- package/dist/esm/Record.js.map +1 -1
- package/dist/esm/RegExp.js +1 -1
- package/dist/esm/Request.js +2 -2
- package/dist/esm/Request.js.map +1 -1
- package/dist/esm/Stream.js +107 -6
- package/dist/esm/Stream.js.map +1 -1
- package/dist/esm/String.js +81 -111
- package/dist/esm/String.js.map +1 -1
- package/dist/esm/Struct.js +13 -19
- package/dist/esm/Struct.js.map +1 -1
- package/dist/esm/Subscribable.js.map +1 -1
- package/dist/esm/Symbol.js +3 -3
- package/dist/esm/TestAnnotation.js.map +1 -1
- package/dist/esm/TestAnnotationMap.js.map +1 -1
- package/dist/esm/TestAnnotations.js.map +1 -1
- package/dist/esm/TestClock.js.map +1 -1
- package/dist/esm/TestLive.js.map +1 -1
- package/dist/esm/TestSized.js.map +1 -1
- package/dist/esm/Trie.js +28 -44
- package/dist/esm/Trie.js.map +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/internal/core-effect.js +4 -11
- package/dist/esm/internal/core-effect.js.map +1 -1
- package/dist/esm/internal/doNotation.js +14 -0
- package/dist/esm/internal/doNotation.js.map +1 -0
- package/dist/esm/internal/groupBy.js.map +1 -1
- package/dist/esm/internal/stream.js +3 -7
- package/dist/esm/internal/stream.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/Array.ts +10 -13
- package/src/BigDecimal.ts +14 -17
- package/src/BigInt.ts +41 -46
- package/src/Boolean.ts +13 -13
- package/src/Brand.ts +3 -3
- package/src/Chunk.ts +3 -3
- package/src/Context.ts +15 -20
- package/src/Cron.ts +3 -6
- package/src/Data.ts +10 -16
- package/src/Duration.ts +1 -1
- package/src/Effect.ts +122 -32
- package/src/Either.ts +161 -94
- package/src/FiberHandle.ts +1 -1
- package/src/FiberMap.ts +1 -1
- package/src/FiberSet.ts +1 -1
- package/src/Function.ts +4 -2
- package/src/HashMap.ts +2 -2
- package/src/Iterable.ts +10 -13
- package/src/List.ts +2 -2
- package/src/Metric.ts +5 -7
- package/src/Number.ts +20 -21
- package/src/Option.ts +250 -172
- package/src/Order.ts +1 -2
- package/src/Ordering.ts +2 -2
- package/src/Predicate.ts +9 -12
- package/src/Readable.ts +1 -1
- package/src/Record.ts +35 -47
- package/src/RegExp.ts +1 -1
- package/src/Request.ts +3 -3
- package/src/Stream.ts +137 -36
- package/src/String.ts +81 -111
- package/src/Struct.ts +13 -19
- package/src/Subscribable.ts +1 -1
- package/src/Symbol.ts +3 -3
- package/src/TestAnnotation.ts +1 -1
- package/src/TestAnnotationMap.ts +1 -1
- package/src/TestAnnotations.ts +1 -1
- package/src/TestClock.ts +1 -5
- package/src/TestLive.ts +1 -1
- package/src/TestSized.ts +1 -1
- package/src/Trie.ts +28 -44
- package/src/Types.ts +10 -10
- package/src/Utils.ts +2 -2
- package/src/internal/core-effect.ts +29 -45
- package/src/internal/doNotation.ts +77 -0
- package/src/internal/groupBy.ts +16 -16
- package/src/internal/stream.ts +34 -58
- package/src/internal/version.ts +1 -1
package/dist/dts/Stream.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ import type * as Emit from "./StreamEmit.js";
|
|
|
27
27
|
import type * as HaltStrategy from "./StreamHaltStrategy.js";
|
|
28
28
|
import type * as Take from "./Take.js";
|
|
29
29
|
import type * as Tracer from "./Tracer.js";
|
|
30
|
-
import type { Covariant,
|
|
30
|
+
import type { Covariant, NoInfer } from "./Types.js";
|
|
31
31
|
import type * as Unify from "./Unify.js";
|
|
32
32
|
/**
|
|
33
33
|
* @since 2.0.0
|
|
@@ -3495,72 +3495,177 @@ export declare const zipWithPreviousAndNext: <A, E, R>(self: Stream<A, E, R>) =>
|
|
|
3495
3495
|
*/
|
|
3496
3496
|
export declare const zipWithIndex: <A, E, R>(self: Stream<A, E, R>) => Stream<[A, number], E, R>;
|
|
3497
3497
|
/**
|
|
3498
|
-
*
|
|
3498
|
+
* The "do simulation" in allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
|
|
3499
|
+
*
|
|
3500
|
+
* Here's how the do simulation works:
|
|
3501
|
+
*
|
|
3502
|
+
* 1. Start the do simulation using the `Do` value
|
|
3503
|
+
* 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Stream` values
|
|
3504
|
+
* 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
|
|
3505
|
+
* 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
|
|
3506
|
+
*
|
|
3507
|
+
* @see {@link bindTo}
|
|
3508
|
+
* @see {@link bind}
|
|
3509
|
+
* @see {@link bindEffect}
|
|
3510
|
+
* @see {@link let_ let}
|
|
3511
|
+
*
|
|
3512
|
+
* @example
|
|
3513
|
+
* import { Chunk, Effect, pipe, Stream } from "effect"
|
|
3514
|
+
*
|
|
3515
|
+
* const result = pipe(
|
|
3516
|
+
* Stream.Do,
|
|
3517
|
+
* Stream.bind("x", () => Stream.succeed(2)),
|
|
3518
|
+
* Stream.bind("y", () => Stream.succeed(3)),
|
|
3519
|
+
* Stream.let("sum", ({ x, y }) => x + y)
|
|
3520
|
+
* )
|
|
3521
|
+
* assert.deepStrictEqual(Effect.runSync(Stream.runCollect(result)), Chunk.of({ x: 2, y: 3, sum: 5 }))
|
|
3522
|
+
*
|
|
3499
3523
|
* @category do notation
|
|
3524
|
+
* @since 2.0.0
|
|
3500
3525
|
*/
|
|
3501
3526
|
export declare const Do: Stream<{}>;
|
|
3502
3527
|
/**
|
|
3503
|
-
*
|
|
3528
|
+
* The "do simulation" in allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
|
|
3529
|
+
*
|
|
3530
|
+
* Here's how the do simulation works:
|
|
3531
|
+
*
|
|
3532
|
+
* 1. Start the do simulation using the `Do` value
|
|
3533
|
+
* 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Stream` values
|
|
3534
|
+
* 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
|
|
3535
|
+
* 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
|
|
3536
|
+
*
|
|
3537
|
+
* @see {@link Do}
|
|
3538
|
+
* @see {@link bindTo}
|
|
3539
|
+
* @see {@link bindEffect}
|
|
3540
|
+
* @see {@link let_ let}
|
|
3541
|
+
*
|
|
3542
|
+
* @example
|
|
3543
|
+
* import { Chunk, Effect, pipe, Stream } from "effect"
|
|
3544
|
+
*
|
|
3545
|
+
* const result = pipe(
|
|
3546
|
+
* Stream.Do,
|
|
3547
|
+
* Stream.bind("x", () => Stream.succeed(2)),
|
|
3548
|
+
* Stream.bind("y", () => Stream.succeed(3)),
|
|
3549
|
+
* Stream.let("sum", ({ x, y }) => x + y)
|
|
3550
|
+
* )
|
|
3551
|
+
* assert.deepStrictEqual(Effect.runSync(Stream.runCollect(result)), Chunk.of({ x: 2, y: 3, sum: 5 }))
|
|
3504
3552
|
*
|
|
3505
|
-
* @since 2.0.0
|
|
3506
3553
|
* @category do notation
|
|
3554
|
+
* @since 2.0.0
|
|
3507
3555
|
*/
|
|
3508
3556
|
export declare const bind: {
|
|
3509
|
-
<N extends string,
|
|
3557
|
+
<N extends string, A, B, E2, R2>(tag: Exclude<N, keyof A>, f: (_: A) => Stream<B, E2, R2>, options?: {
|
|
3510
3558
|
readonly concurrency?: number | "unbounded" | undefined;
|
|
3511
3559
|
readonly bufferSize?: number | undefined;
|
|
3512
|
-
} | undefined): <E, R>(self: Stream<
|
|
3513
|
-
[
|
|
3514
|
-
}
|
|
3515
|
-
<
|
|
3560
|
+
} | undefined): <E, R>(self: Stream<A, E, R>) => Stream<{
|
|
3561
|
+
[K in N | keyof A]: K extends keyof A ? A[K] : B;
|
|
3562
|
+
}, E2 | E, R2 | R>;
|
|
3563
|
+
<A, E, R, N extends string, B, E2, R2>(self: Stream<A, E, R>, tag: Exclude<N, keyof A>, f: (_: A) => Stream<B, E2, R2>, options?: {
|
|
3516
3564
|
readonly concurrency?: number | "unbounded" | undefined;
|
|
3517
3565
|
readonly bufferSize?: number | undefined;
|
|
3518
|
-
} | undefined): Stream<
|
|
3519
|
-
[
|
|
3520
|
-
}
|
|
3566
|
+
} | undefined): Stream<{
|
|
3567
|
+
[K in N | keyof A]: K extends keyof A ? A[K] : B;
|
|
3568
|
+
}, E | E2, R | R2>;
|
|
3521
3569
|
};
|
|
3522
3570
|
/**
|
|
3523
3571
|
* Binds an effectful value in a `do` scope
|
|
3524
3572
|
*
|
|
3573
|
+
* @see {@link Do}
|
|
3574
|
+
* @see {@link bindTo}
|
|
3575
|
+
* @see {@link bind}
|
|
3576
|
+
* @see {@link let_ let}
|
|
3577
|
+
*
|
|
3525
3578
|
* @since 2.0.0
|
|
3526
3579
|
* @category do notation
|
|
3527
3580
|
*/
|
|
3528
3581
|
export declare const bindEffect: {
|
|
3529
|
-
<N extends string,
|
|
3582
|
+
<N extends string, A, B, E2, R2>(tag: Exclude<N, keyof A>, f: (_: A) => Effect.Effect<B, E2, R2>, options?: {
|
|
3530
3583
|
readonly concurrency?: number | "unbounded" | undefined;
|
|
3531
3584
|
readonly bufferSize?: number | undefined;
|
|
3532
|
-
} | undefined): <E, R>(self: Stream<
|
|
3533
|
-
[
|
|
3534
|
-
}
|
|
3535
|
-
<
|
|
3585
|
+
} | undefined): <E, R>(self: Stream<A, E, R>) => Stream<{
|
|
3586
|
+
[K in N | keyof A]: K extends keyof A ? A[K] : B;
|
|
3587
|
+
}, E2 | E, R2 | R>;
|
|
3588
|
+
<A, E, R, N extends string, B, E2, R2>(self: Stream<A, E, R>, tag: Exclude<N, keyof A>, f: (_: A) => Effect.Effect<B, E2, R2>, options?: {
|
|
3536
3589
|
readonly concurrency?: number | "unbounded" | undefined;
|
|
3537
3590
|
readonly unordered?: boolean | undefined;
|
|
3538
|
-
} | undefined): Stream<
|
|
3539
|
-
[
|
|
3540
|
-
}
|
|
3591
|
+
} | undefined): Stream<{
|
|
3592
|
+
[K in N | keyof A]: K extends keyof A ? A[K] : B;
|
|
3593
|
+
}, E | E2, R | R2>;
|
|
3541
3594
|
};
|
|
3542
3595
|
/**
|
|
3543
|
-
*
|
|
3596
|
+
* The "do simulation" in allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
|
|
3597
|
+
*
|
|
3598
|
+
* Here's how the do simulation works:
|
|
3599
|
+
*
|
|
3600
|
+
* 1. Start the do simulation using the `Do` value
|
|
3601
|
+
* 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Stream` values
|
|
3602
|
+
* 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
|
|
3603
|
+
* 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
|
|
3604
|
+
*
|
|
3605
|
+
* @see {@link Do}
|
|
3606
|
+
* @see {@link bind}
|
|
3607
|
+
* @see {@link bindEffect}
|
|
3608
|
+
* @see {@link let_ let}
|
|
3609
|
+
*
|
|
3610
|
+
* @example
|
|
3611
|
+
* import { Chunk, Effect, pipe, Stream } from "effect"
|
|
3612
|
+
*
|
|
3613
|
+
* const result = pipe(
|
|
3614
|
+
* Stream.Do,
|
|
3615
|
+
* Stream.bind("x", () => Stream.succeed(2)),
|
|
3616
|
+
* Stream.bind("y", () => Stream.succeed(3)),
|
|
3617
|
+
* Stream.let("sum", ({ x, y }) => x + y)
|
|
3618
|
+
* )
|
|
3619
|
+
* assert.deepStrictEqual(Effect.runSync(Stream.runCollect(result)), Chunk.of({ x: 2, y: 3, sum: 5 }))
|
|
3620
|
+
*
|
|
3544
3621
|
* @category do notation
|
|
3622
|
+
* @since 2.0.0
|
|
3545
3623
|
*/
|
|
3546
3624
|
export declare const bindTo: {
|
|
3547
|
-
<N extends string>(
|
|
3548
|
-
|
|
3625
|
+
<N extends string>(name: N): <A, E, R>(self: Stream<A, E, R>) => Stream<{
|
|
3626
|
+
[K in N]: A;
|
|
3627
|
+
}, E, R>;
|
|
3628
|
+
<A, E, R, N extends string>(self: Stream<A, E, R>, name: N): Stream<{
|
|
3629
|
+
[K in N]: A;
|
|
3630
|
+
}, E, R>;
|
|
3549
3631
|
};
|
|
3550
3632
|
declare const let_: {
|
|
3551
|
-
<N extends string,
|
|
3552
|
-
[
|
|
3553
|
-
}
|
|
3554
|
-
<
|
|
3555
|
-
[
|
|
3556
|
-
}
|
|
3633
|
+
<N extends string, A extends object, B>(name: Exclude<N, keyof A>, f: (a: A) => B): <E, R>(self: Stream<A, E, R>) => Stream<{
|
|
3634
|
+
[K in N | keyof A]: K extends keyof A ? A[K] : B;
|
|
3635
|
+
}, E, R>;
|
|
3636
|
+
<A extends object, E, R, N extends string, B>(self: Stream<A, E, R>, name: Exclude<N, keyof A>, f: (a: A) => B): Stream<{
|
|
3637
|
+
[K in N | keyof A]: K extends keyof A ? A[K] : B;
|
|
3638
|
+
}, E, R>;
|
|
3557
3639
|
};
|
|
3558
3640
|
export {
|
|
3559
3641
|
/**
|
|
3560
|
-
*
|
|
3642
|
+
* The "do simulation" in allows you to write code in a more declarative style, similar to the "do notation" in other programming languages. It provides a way to define variables and perform operations on them using functions like `bind` and `let`.
|
|
3643
|
+
*
|
|
3644
|
+
* Here's how the do simulation works:
|
|
3645
|
+
*
|
|
3646
|
+
* 1. Start the do simulation using the `Do` value
|
|
3647
|
+
* 2. Within the do simulation scope, you can use the `bind` function to define variables and bind them to `Stream` values
|
|
3648
|
+
* 3. You can accumulate multiple `bind` statements to define multiple variables within the scope
|
|
3649
|
+
* 4. Inside the do simulation scope, you can also use the `let` function to define variables and bind them to simple values
|
|
3650
|
+
*
|
|
3651
|
+
* @see {@link Do}
|
|
3652
|
+
* @see {@link bindTo}
|
|
3653
|
+
* @see {@link bind}
|
|
3654
|
+
* @see {@link bindEffect}
|
|
3655
|
+
*
|
|
3656
|
+
* @example
|
|
3657
|
+
* import { Chunk, Effect, pipe, Stream } from "effect"
|
|
3658
|
+
*
|
|
3659
|
+
* const result = pipe(
|
|
3660
|
+
* Stream.Do,
|
|
3661
|
+
* Stream.bind("x", () => Stream.succeed(2)),
|
|
3662
|
+
* Stream.bind("y", () => Stream.succeed(3)),
|
|
3663
|
+
* Stream.let("sum", ({ x, y }) => x + y)
|
|
3664
|
+
* )
|
|
3665
|
+
* assert.deepStrictEqual(Effect.runSync(Stream.runCollect(result)), Chunk.of({ x: 2, y: 3, sum: 5 }))
|
|
3561
3666
|
*
|
|
3562
|
-
* @since 2.0.0
|
|
3563
3667
|
* @category do notation
|
|
3668
|
+
* @since 2.0.0
|
|
3564
3669
|
*/
|
|
3565
3670
|
let_ as let };
|
|
3566
3671
|
/**
|