0.2.0 #5
@@ -149,7 +149,7 @@ export class LensLazyImpl<
|
||||
>
|
||||
extends LensImpl<A, B, ER, ESR, EW, ESW, RR, RSR, RW, RSW> {
|
||||
constructor(
|
||||
readonly source: LensLazyImpl.Source<B, ESW, ESR, RSR, RSW>
|
||||
readonly source: LensLazyImpl.Source<B, ESW, ESR, RSR, RSW>,
|
||||
) {
|
||||
super()
|
||||
}
|
||||
@@ -174,6 +174,36 @@ export const makeLazy = <B, ESW, ESR, RSR, RSW>(
|
||||
source: LensLazyImpl.Source<B, ESW, ESR, RSR, RSW>
|
||||
): 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 interface SynchronizedRefWithInternals<in out A>
|
||||
|
||||
Reference in New Issue
Block a user