0.2.0 #5
@@ -96,7 +96,7 @@ extends Pipeable.Class() implements Lens<A, ER, EW, RR, RW> {
|
||||
)
|
||||
|
||||
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>
|
||||
}
|
||||
@@ -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 abstract class LensLazyImpl<
|
||||
export class LensLazyImpl<
|
||||
in out A,
|
||||
in out B,
|
||||
in out ER = never,
|
||||
@@ -140,23 +155,31 @@ export abstract class LensLazyImpl<
|
||||
in out RW = 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.
|
||||
*/
|
||||
export const make = <A, ER, EW, RR, RW>(
|
||||
source: LensImpl.Source<A, ER, EW, RR, RW>
|
||||
): Lens<A, ER, EW, RR, RW> => new LensImpl(source)
|
||||
// export const make = <A, ER, EW, RR, RW>(
|
||||
// source: LensImpl.Source<A, ER, EW, RR, RW>
|
||||
// ): 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.
|
||||
*/
|
||||
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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user