From 74519010b30719c4ee4183ebd70d7381301182b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 20 May 2026 22:14:04 +0200 Subject: [PATCH] Refactor --- packages/effect-lens/src/Lens.ts | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/packages/effect-lens/src/Lens.ts b/packages/effect-lens/src/Lens.ts index a891549..77b7b54 100644 --- a/packages/effect-lens/src/Lens.ts +++ b/packages/effect-lens/src/Lens.ts @@ -35,16 +35,18 @@ extends Lens { readonly [LensWithInternalsTypeId]: LensWithInternalsTypeId readonly update: (a: A) => Effect.Effect - readonly withLock: (self: Effect.Effect) => Effect.Effect + readonly withLock: (self: Effect.Effect) => Effect.Effect } export const isLensWithInternals = (u: unknown): u is LensWithInternals => Predicate.hasProperty(u, LensWithInternalsTypeId) export const asLensWithInternals = ( lens: Lens -): Effect.Effect, never, never> => isLensWithInternals(lens) - ? Effect.succeed(lens as LensWithInternals) - : Effect.die("Not a 'LensWithInternals'.") +): LensWithInternals => { + if (!isLensWithInternals(lens)) + throw new Error("Not a 'LensWithInternals'.") + return lens as LensWithInternals +} export declare namespace LensImpl { @@ -52,7 +54,7 @@ export declare namespace LensImpl { readonly get: Effect.Effect, readonly changes: Stream.Stream, readonly update: (a: A) => Effect.Effect, - readonly withLock: (self: Effect.Effect) => Effect.Effect, + readonly withLock: (self: Effect.Effect) => Effect.Effect, } } @@ -66,7 +68,7 @@ extends Pipeable.Class() implements LensWithInternals { readonly get: Effect.Effect readonly changes: Stream.Stream readonly update: (a: A) => Effect.Effect - readonly withLock: (self: Effect.Effect) => Effect.Effect + readonly withLock: (self: Effect.Effect) => Effect.Effect constructor( source: LensImpl.Source @@ -226,16 +228,10 @@ export const unwrap = ( ): Lens => make({ get: Effect.flatMap(effect, l => l.get), changes: Stream.unwrap(Effect.map(effect, l => l.changes)), - update: a => Effect.flatMap( - effect, - l => Effect.flatMap(asLensWithInternals(l), l => l.update(a)) - ), + update: a => Effect.flatMap(effect, l => asLensWithInternals(l).update(a)), withLock: ( effect2: Effect.Effect - ): Effect.Effect => Effect.flatMap( - effect, - l => Effect.flatMap(asLensWithInternals(l), l2 => l2.withLock(effect2)), - ), + ) => Effect.flatMap(effect, l => asLensWithInternals(l).withLock(effect2)), }) /** @@ -258,11 +254,8 @@ export const map: { ): Lens => makeLazy({ get get() { return Effect.map(self.get, get) }, get changes() { return Stream.map(self.changes, get) }, - modify: ( - f: (b: B) => Effect.Effect - ) => self.modify(a => - Effect.flatMap(f(get(a)), ([c, next]) => Effect.succeed([c, set(a, next)])) - ), + update(a: A) { return }, + get withLock() { return asLensWithInternals(self).withLock }, })) /**