0.2.0 #5

Merged
Thilawyn merged 59 commits from next into master 2026-05-30 06:10:54 +02:00
Showing only changes of commit 9ae5cba8a8 - Show all commits
+31 -31
View File
@@ -55,7 +55,7 @@ extends Pipeable.Class() implements Lens<A, ER, EW, RR, RW> {
abstract readonly changes: Stream.Stream<A, ER, RR> abstract readonly changes: Stream.Stream<A, ER, RR>
abstract readonly lock: Effect.Effect<LensImpl.Lock, EW, RW> abstract readonly lock: Effect.Effect<LensImpl.Lock, EW, RW>
get get() { return Effect.map(this.resolve, frame => frame.value) } get get() { return Effect.map(this.resolve, resolved => resolved.value) }
modifyEffect<B, E1 = never, R1 = never>( modifyEffect<B, E1 = never, R1 = never>(
f: (a: A) => Effect.Effect<readonly [B, A], E1, R1>, f: (a: A) => Effect.Effect<readonly [B, A], E1, R1>,
@@ -64,9 +64,9 @@ extends Pipeable.Class() implements Lens<A, ER, EW, RR, RW> {
this.lock, this.lock,
lock => lock(Effect.flatMap( lock => lock(Effect.flatMap(
this.resolve, this.resolve,
frame => Effect.flatMap( resolved => Effect.flatMap(
f(frame.value), f(resolved.value),
([c, next]) => Effect.as(frame.commit(Effect.succeed(next)), c), ([c, next]) => Effect.as(resolved.commit(Effect.succeed(next)), c),
), ),
)), )),
) )
@@ -133,9 +133,9 @@ extends LensImpl<A, ER | E1, EW | E1, RR | R1, RW | R1> {
get resolve(): Effect.Effect<LensImpl.Resolved<A, EW | E1, RW | R1>, ER | E1, RR | R1> { get resolve(): Effect.Effect<LensImpl.Resolved<A, EW | E1, RW | R1>, ER | E1, RR | R1> {
return Effect.map( return Effect.map(
Effect.flatMap(this.effect, l => asLensImpl(l).resolve), Effect.flatMap(this.effect, l => asLensImpl(l).resolve),
frame => ({ resolved => ({
value: frame.value, value: resolved.value,
commit: next => frame.commit(next), commit: next => resolved.commit(next),
}), }),
) )
} }
@@ -357,9 +357,9 @@ export const map: {
): Lens<B, ER, EW, RR, RW> => derive(self, { ): Lens<B, ER, EW, RR, RW> => derive(self, {
resolve: parent => Effect.map( resolve: parent => Effect.map(
parent, parent,
frame => ({ resolved => ({
value: get(frame.value), value: get(resolved.value),
commit: next => frame.commit(Effect.map(next, b => set(frame.value, b))), commit: next => resolved.commit(Effect.map(next, b => set(resolved.value, b))),
}), }),
), ),
mapStream: Stream.map(get), mapStream: Stream.map(get),
@@ -386,11 +386,11 @@ export const mapEffect: {
): Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet> => derive(self, { ): Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet> => derive(self, {
resolve: parent => Effect.flatMap( resolve: parent => Effect.flatMap(
parent, parent,
frame => Effect.map( resolved => Effect.map(
get(frame.value), get(resolved.value),
value => ({ value => ({
value, value,
commit: next => frame.commit(Effect.flatMap(next, b => set(frame.value, b))), commit: next => resolved.commit(Effect.flatMap(next, b => set(resolved.value, b))),
}), }),
), ),
), ),
@@ -525,11 +525,11 @@ export const mapErrorWrite: {
self: Lens<A, ER, EW, RR, RW>, self: Lens<A, ER, EW, RR, RW>,
f: (error: NoInfer<EW>) => E2, f: (error: NoInfer<EW>) => E2,
): Lens<A, ER, E2, RR, RW> => derive(self, { ): Lens<A, ER, E2, RR, RW> => derive(self, {
resolve: parent => Effect.map(parent, frame => ({ resolve: parent => Effect.map(parent, resolved => ({
value: frame.value, value: resolved.value,
commit: next => Effect.flatMap( commit: next => Effect.flatMap(
next, next,
value => Effect.mapError(frame.commit(Effect.succeed(value)), f), value => Effect.mapError(resolved.commit(Effect.succeed(value)), f),
), ),
})), })),
mapStream: identity, mapStream: identity,
@@ -556,11 +556,11 @@ export const mapError: {
): Lens<A, E2, E2, RR, RW> => derive(self, { ): Lens<A, E2, E2, RR, RW> => derive(self, {
resolve: parent => Effect.map( resolve: parent => Effect.map(
Effect.mapError(parent, f), Effect.mapError(parent, f),
frame => ({ resolved => ({
value: frame.value, value: resolved.value,
commit: next => Effect.flatMap( commit: next => Effect.flatMap(
next, next,
value => Effect.mapError(frame.commit(Effect.succeed(value)), f), value => Effect.mapError(resolved.commit(Effect.succeed(value)), f),
), ),
}), }),
), ),
@@ -608,11 +608,11 @@ export const tapErrorWrite: {
self: Lens<A, ER, EW, RR, RW>, self: Lens<A, ER, EW, RR, RW>,
f: (error: NoInfer<EW>) => Effect.Effect<unknown, E2, R2>, f: (error: NoInfer<EW>) => Effect.Effect<unknown, E2, R2>,
): Lens<A, ER, EW | E2, RR, RW | R2> => derive(self, { ): Lens<A, ER, EW | E2, RR, RW | R2> => derive(self, {
resolve: parent => Effect.map(parent, frame => ({ resolve: parent => Effect.map(parent, resolved => ({
value: frame.value, value: resolved.value,
commit: next => Effect.flatMap( commit: next => Effect.flatMap(
next, next,
value => Effect.tapError(frame.commit(Effect.succeed(value)), f), value => Effect.tapError(resolved.commit(Effect.succeed(value)), f),
), ),
})), })),
mapStream: identity, mapStream: identity,
@@ -639,11 +639,11 @@ export const tapError: {
): Lens<A, ER | E2, EW | E2, RR | R2, RW | R2> => derive(self, { ): Lens<A, ER | E2, EW | E2, RR | R2, RW | R2> => derive(self, {
resolve: parent => Effect.map( resolve: parent => Effect.map(
Effect.tapError(parent, f), Effect.tapError(parent, f),
frame => ({ resolved => ({
value: frame.value, value: resolved.value,
commit: next => Effect.flatMap( commit: next => Effect.flatMap(
next, next,
value => Effect.tapError(frame.commit(Effect.succeed(value)), f), value => Effect.tapError(resolved.commit(Effect.succeed(value)), f),
), ),
}), }),
), ),
@@ -669,9 +669,9 @@ export const provideContext: {
): Lens<A, ER, EW, Exclude<RR, R2>, Exclude<RW, R2>> => derive(self, { ): Lens<A, ER, EW, Exclude<RR, R2>, Exclude<RW, R2>> => derive(self, {
resolve: parent => Effect.map( resolve: parent => Effect.map(
Effect.provide(parent, context), Effect.provide(parent, context),
frame => ({ resolved => ({
value: frame.value, value: resolved.value,
commit: next => Effect.provide(frame.commit(next), context), commit: next => Effect.provide(resolved.commit(next), context),
}), }),
), ),
mapStream: Stream.provideSomeContext(context), mapStream: Stream.provideSomeContext(context),
@@ -701,9 +701,9 @@ export const provideService: {
): Lens<A, ER, EW, Exclude<RR, I>, Exclude<RW, I>> => derive(self, { ): Lens<A, ER, EW, Exclude<RR, I>, Exclude<RW, I>> => derive(self, {
resolve: parent => Effect.map( resolve: parent => Effect.map(
Effect.provideService(parent, tag, service), Effect.provideService(parent, tag, service),
frame => ({ resolved => ({
value: frame.value, value: resolved.value,
commit: next => Effect.provideService(frame.commit(next), tag, service), commit: next => Effect.provideService(resolved.commit(next), tag, service),
}), }),
), ),
mapStream: Stream.provideService(tag, service), mapStream: Stream.provideService(tag, service),