From 9f5b65c2c2508fd8c852a7eef135a915eec64a57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Fri, 27 Mar 2026 14:21:30 +0100 Subject: [PATCH] Add Subscribable.focusTupleAt --- packages/effect-lens/src/Subscribable.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/effect-lens/src/Subscribable.ts b/packages/effect-lens/src/Subscribable.ts index 125198e..c88a108 100644 --- a/packages/effect-lens/src/Subscribable.ts +++ b/packages/effect-lens/src/Subscribable.ts @@ -36,6 +36,22 @@ export const focusArrayAt: { index: number, ): Subscribable.Subscribable => Subscribable.mapEffect(self, Array.get(index))) +/** + * Narrows the focus to an indexed element of a readonly tuple. + */ +export const focusTupleAt: { + ( + self: Subscribable.Subscribable, + index: I, + ): Subscribable.Subscribable + ( + index: I + ): (self: Subscribable.Subscribable) => Subscribable.Subscribable +} = Function.dual(2, ( + self: Subscribable.Subscribable, + index: I, +): Subscribable.Subscribable => Subscribable.map(self, Array.unsafeGet(index))) + /** * Narrows the focus to an indexed element of `Chunk`. */