# delimit

Wraps an Fx with a start and end value.

## Signatures

```ts
export declare const delimit: {
    <B, C>(before: B, after: C): <A, E, R>(fx: Fx<A, E, R>) => Fx<A | B | C, E, R>;
    <A, E, R, B, C>(fx: Fx<A, E, R>, before: B, after: C): Fx<A | B | C, E, R>;
};
```

## Why

`delimit` composes {@link prepend} and {@link append} for protocols whose
normal run must be bracketed by values rather than resource finalizers.

## Ownership and lifetime

`before` is emitted once, followed by every source success or delivered source
failure, then `after` once when the source run Effect returns. Interruption or
a defect suppresses `after`; this is Sink sequencing, not `Effect.ensuring`.
No resource is acquired and source requirements are kept.

## Examples

```ts
import { Fx } from "@typed/fx"
import { Effect } from "effect"

const framed = Fx.delimit(Fx.fromIterable([1, 2]), "[", "]")
Effect.runPromise(Fx.collectAll(framed)).then(console.log)
// ["[", 1, 2, "]"]
```
