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 5018cbe777 - Show all commits
+31 -1
View File
@@ -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>