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 b02ca29b76 - Show all commits
+32 -9
View File
@@ -96,7 +96,7 @@ extends Pipeable.Class() implements Lens<A, ER, EW, RR, RW> {
) )
for (const step of this.steps) for (const step of this.steps)
effect = step.access(effect as never) as Effect.Effect<LensFrame<unknown, unknown, unknown>, unknown, unknown> effect = step.access(effect) as Effect.Effect<LensFrame<unknown, unknown, unknown>, unknown, unknown>
return effect as Effect.Effect<LensFrame<A, EW, RW>, ER, RR> return effect as Effect.Effect<LensFrame<A, EW, RW>, ER, RR>
} }
@@ -126,9 +126,24 @@ extends Pipeable.Class() implements Lens<A, ER, EW, RR, RW> {
} }
export declare namespace LensLazyImpl {
export interface Source<
in out B,
in out EW = never,
in out ESW = never,
in out ESR = never,
in out RSR = never,
in out RW = never,
in out RSW = never,
> {
readonly sourceGet: Effect.Effect<B, ESR, RSR>
readonly sourceChanges: Stream.Stream<B, ESR, RSR>
readonly sourceCommit: (b: B) => Effect.Effect<void, ESW, RSW>
readonly withLock: <A1, E1, R1>(self: Effect.Effect<A1, E1, R1>) => Effect.Effect<A1, EW | E1, RW | R1>
}
}
export class LensLazyImpl<
export abstract class LensLazyImpl<
in out A, in out A,
in out B, in out B,
in out ER = never, in out ER = never,
@@ -140,23 +155,31 @@ export abstract class LensLazyImpl<
in out RW = never, in out RW = never,
in out RSW = never, in out RSW = never,
> >
extends Pipeable.Class() implements Lens<A, ER, EW, RR, RW> { extends LensImpl<A, B, ER, ESR, EW, ESW, RR, RSR, RW, RSW> {
constructor(
readonly source: LensLazyImpl.Source<B, EW, ESW, ESR, RSR, RW, RSW>
) {
super()
}
get sourceGet() { return this.source.sourceGet }
get sourceChanges() { return this.source.sourceChanges }
sourceCommit(b: B) { return this.source.sourceCommit(b) }
get withLock() { return this.source.withLock }
} }
/** /**
* Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations. * Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations.
*/ */
export const make = <A, ER, EW, RR, RW>( // export const make = <A, ER, EW, RR, RW>(
source: LensImpl.Source<A, ER, EW, RR, RW> // source: LensImpl.Source<A, ER, EW, RR, RW>
): Lens<A, ER, EW, RR, RW> => new LensImpl(source) // ): Lens<A, ER, EW, RR, RW> => new LensImpl(source)
/** /**
* Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations. * Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations.
*/ */
export const makeLazy = <A, ER, EW, RR, RW>( export const makeLazy = <A, ER, EW, RR, RW>(
source: LensImpl.Source<A, ER, EW, RR, RW> source: LensLazyImpl.Source<A, ER, EW, RR, RW>
): Lens<A, ER, EW, RR, RW> => new LensLazyImpl(source) ): Lens<A, ER, EW, RR, RW> => new LensLazyImpl(source)