0.2.0 #5
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user