From 8430b4ddf6787e8b148e8969003a9a7e2e3d5271 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 23 Mar 2026 21:19:45 +0100 Subject: [PATCH] Tests --- packages/effect-fc/src/Lens.ts | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/packages/effect-fc/src/Lens.ts b/packages/effect-fc/src/Lens.ts index 0653ad2..45779eb 100644 --- a/packages/effect-fc/src/Lens.ts +++ b/packages/effect-fc/src/Lens.ts @@ -1,4 +1,4 @@ -import { Array, Chunk, Effect, flow, Option, Pipeable, Predicate, Readable, Stream, Subscribable, SubscriptionRef } from "effect" +import { Chunk, Effect, Pipeable, Predicate, Readable, Stream, Subscribable, SubscriptionRef } from "effect" export const LensTypeId: unique symbol = Symbol.for("@effect-fc/Lens/Lens") @@ -74,32 +74,21 @@ export const fromSubscriptionRef = ( export const map = ( self: Lens, get: (a: NoInfer) => B, - set: { - (b: B): (parent: NoInfer) => NoInfer - (parent: NoInfer, b: B): NoInfer - }, + set: (a: NoInfer, b: B) => NoInfer, ): Lens => make({ 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.length >= 2 - ? (set as (parent: A, b: B) => A)(a, next) - : (set as (b: B) => (parent: A) => A)(next)(a), - ])) + Effect.flatMap(f(get(a)), ([c, next]) => Effect.succeed([c, set(a, next)])) ), }) export const mapEffect = ( self: Lens, get: (a: NoInfer) => Effect.Effect, - set: { - (b: B): (parent: NoInfer) => Effect.Effect, ESet, RSet> - (parent: NoInfer, b: B): Effect.Effect, ESet, RSet> - }, + set: (a: NoInfer, b: B) => Effect.Effect, ESet, RSet>, ): Lens => make({ get get() { return Effect.flatMap(self.get, get) }, get changes() { return Stream.mapEffect(self.changes, get) }, @@ -110,9 +99,7 @@ export const mapEffect = Effect.flatMap( f(b), ([c, bNext]) => Effect.flatMap( - set.length >= 2 - ? (set as (parent: A, b: B) => Effect.Effect)(a, bNext) - : (set as (b: B) => (parent: A) => Effect.Effect)(bNext)(a), + set(a, bNext), nextA => Effect.succeed([c, nextA] as const), ), ) @@ -131,13 +118,12 @@ export const unwrap = ( Effect.gen(function*() { - const myArrayRef = yield* SubscriptionRef.make([12, 38, 69]) - const myArrayLens = fromSubscriptionRef(myArrayRef) - const arrayValueLens = map(myArrayLens, flow(Array.get(1), Option.getOrThrow), (a, b) => Array.replace(a, 1, b)) - - const myChunkRef = yield* SubscriptionRef.make(Chunk.make([12, 38, 69])) + const myChunkRef = yield* SubscriptionRef.make(Chunk.make(12, 38, 69) as Chunk.Chunk) const myChunkLens = fromSubscriptionRef(myChunkRef) const chunkValueLens = mapEffect(myChunkLens, Chunk.get(1), (a, b) => Effect.succeed(Chunk.replace(a, 1, b))) + + console.log(yield* myChunkRef.get) + console.log(yield* chunkValueLens.get) }).pipe( Effect.runSync )