@@ -149,7 +149,7 @@ export class LensLazyImpl<
|
|||||||
>
|
>
|
||||||
extends LensImpl<A, B, ER, ESR, EW, ESW, RR, RSR, RW, RSW> {
|
extends LensImpl<A, B, ER, ESR, EW, ESW, RR, RSR, RW, RSW> {
|
||||||
constructor(
|
constructor(
|
||||||
readonly source: LensLazyImpl.Source<B, ESW, ESR, RSR, RSW>
|
readonly source: LensLazyImpl.Source<B, ESW, ESR, RSR, RSW>,
|
||||||
) {
|
) {
|
||||||
super()
|
super()
|
||||||
}
|
}
|
||||||
@@ -174,6 +174,36 @@ export const makeLazy = <B, ESW, ESR, RSR, RSW>(
|
|||||||
source: LensLazyImpl.Source<B, ESW, ESR, RSR, RSW>
|
source: LensLazyImpl.Source<B, ESW, ESR, RSR, RSW>
|
||||||
): Lens<B, ESW, ESR, RSR, RSW> => new LensLazyImpl(source)
|
): Lens<B, ESW, ESR, RSR, RSW> => new LensLazyImpl(source)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Derives a new `Lens` by immutably appending a step to an existing `LensImpl`.
|
||||||
|
*/
|
||||||
|
export const derive: {
|
||||||
|
<A, B, ER, ESR, EW, ESW, RR, RSR, RW, RSW, C, ER2, EW2, RR2, RW2>(
|
||||||
|
self: LensImpl<A, B, ER, ESR, EW, ESW, RR, RSR, RW, RSW>,
|
||||||
|
step: LensStep<C, A, ER2, ER, EW2, EW, RR2, RR, RW2, RW>,
|
||||||
|
): Lens<C, ER2, EW2, RR2, RW2>
|
||||||
|
<A, ER, EW, RR, RW, C, ER2, EW2, RR2, RW2>(
|
||||||
|
step: LensStep<C, A, ER2, ER, EW2, EW, RR2, RR, RW2, RW>,
|
||||||
|
): <B, ESR, ESW, RSR, RSW>(
|
||||||
|
self: LensImpl<A, B, ER, ESR, EW, ESW, RR, RSR, RW, RSW>
|
||||||
|
) => Lens<C, ER2, EW2, RR2, RW2>
|
||||||
|
} = Function.dual(2, <A, B, ER, ESR, EW, ESW, RR, RSR, RW, RSW, C, ER2, EW2, RR2, RW2>(
|
||||||
|
self: LensImpl<A, B, ER, ESR, EW, ESW, RR, RSR, RW, RSW>,
|
||||||
|
step: LensStep<C, A, ER2, ER, EW2, EW, RR2, RR, RW2, RW>,
|
||||||
|
): Lens<C, ER2, EW2, RR2, RW2> => Object.defineProperty(
|
||||||
|
Object.defineProperties(
|
||||||
|
Object.create(Object.getPrototypeOf(self)),
|
||||||
|
Object.getOwnPropertyDescriptors(self),
|
||||||
|
),
|
||||||
|
"steps",
|
||||||
|
{
|
||||||
|
configurable: true,
|
||||||
|
enumerable: true,
|
||||||
|
value: [...self.steps, step as LensStep<unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown>],
|
||||||
|
writable: false,
|
||||||
|
},
|
||||||
|
) as Lens<C, ER2, EW2, RR2, RW2>)
|
||||||
|
|
||||||
|
|
||||||
export declare namespace SynchronizedRefLensImpl {
|
export declare namespace SynchronizedRefLensImpl {
|
||||||
export interface SynchronizedRefWithInternals<in out A>
|
export interface SynchronizedRefWithInternals<in out A>
|
||||||
|
|||||||
Reference in New Issue
Block a user