effect-lens 0.1.5 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,7 +28,7 @@ Lens<
28
28
  A, // Type of the value the lens is focused on
29
29
  ER, // Errors that can happen when reading
30
30
  EW, // Errors that can happen when writing
31
- RE, // Requirements for reading
31
+ RR, // Requirements for reading
32
32
  RW // Requirements for writing
33
33
  >
34
34
  ```
@@ -55,11 +55,14 @@ yield* Lens.update(lens, Array.replace(1, 1664))
55
55
  Currently available:
56
56
  - `fromSubscriptionRef`
57
57
  - `fromSynchronizedRef` (note: since `SynchronizedRef` is not reactive (does not produce a stream of value changes), the resulting Lens' `changes` stream will only emit the current value of the lens when evaluated, and nothing else)
58
-
59
- More to come!
58
+ - `fromRef` (returns an effect because it creates an internal lock)
60
59
 
61
60
  #### Manually
62
- You can also create Lenses manually using `make` by providing a getter, a stream of changes and either a `set` or `modify` function depending on your needs.
61
+ You can also create Lenses manually using `make` by providing:
62
+ - `get`: an effect that reads the current value,
63
+ - `changes`: a stream of value changes,
64
+ - `commit`: an effectful write primitive,
65
+ - `lock`: an effect that produces the lock used to serialize writes.
63
66
 
64
67
  You can get pretty creative! Here's an example of a Lens that points to a specific key of the browser `LocalStorage`:
65
68
  ```typescript
@@ -67,8 +70,9 @@ You can get pretty creative! Here's an example of a Lens that points to a specif
67
70
  const lens = Effect.all([
68
71
  KeyValueStore.KeyValueStore,
69
72
  Effect.succeed("someKey"),
73
+ Effect.makeSemaphore(1),
70
74
  ]).pipe(
71
- Effect.map(([kv, key]) => Lens.make({
75
+ Effect.map(([kv, key, semaphore]) => Lens.make({
72
76
  get: kv.get(key),
73
77
 
74
78
  changes: kv.get(key).pipe(
@@ -83,9 +87,11 @@ const lens = Effect.all([
83
87
  Stream.unwrap,
84
88
  ),
85
89
 
86
- set: a => Option.isSome(a)
90
+ commit: a => Option.isSome(a)
87
91
  ? kv.set(key, a.value)
88
92
  : kv.remove(key),
93
+
94
+ lock: Effect.succeed(semaphore.withPermits(1)),
89
95
  })),
90
96
 
91
97
  Effect.provide(BrowserKeyValueStore.layerLocalStorage),
@@ -165,8 +171,7 @@ Currently available:
165
171
  | `focusTupleAt` | Focuses to an indexed entry of a readonly tuple. Replaces the parent tuple immutably when writing to the focused index | Immutable | |
166
172
  | `focusMutableTupleAt` | Focuses to an indexed entry of a mutable tuple. Mutates the parent tuple in place at the focused index | Mutable | Type-safe: will not allow you to mutate `readonly` tuples |
167
173
  | `focusChunkAt` | Focuses to an indexed entry of a `Chunk`. Replaces the parent `Chunk` immutably when writing to the focused element | Immutable | |
168
-
169
- Also more to come!
174
+ | `focusOption` | Focuses to the value inside an `Option`. Wraps writes back into `Option.some` | Immutable | Reading or writing fails with `NoSuchElementException` when the parent option is `None` |
170
175
 
171
176
  #### Manually
172
177
  You can create focused Lenses by composing them manually using `map`, `mapEffect` and `unwrap`:
@@ -196,6 +201,42 @@ const benzemonstreLens = ref.pipe(
196
201
  // As you can see, this is automatically tracked by the Lens type
197
202
  ```
198
203
 
204
+ #### Low-level derived lenses
205
+ For advanced cases, you can derive a Lens manually using `derive`. This is the primitive used by the built-in transforms.
206
+
207
+ A derived Lens describes how to transform three parent channels:
208
+ - `resolve`: reads the parent and returns the focused value plus a `commit` function to rebuild the parent,
209
+ - `mapStream`: transforms the parent `changes` stream,
210
+ - `mapLock`: transforms the parent write lock.
211
+
212
+ Most custom focusing logic should use `map` or `mapEffect`, but `derive` is useful when you need full control over read, stream, lock, and write-back behavior.
213
+
214
+ ```typescript
215
+ declare const lens: Lens.Lens<User, never, never, never, never>
216
+
217
+ const nameLens = lens.pipe(
218
+ Lens.derive({
219
+ resolve: parent => Effect.map(
220
+ parent,
221
+ resolved => ({
222
+ value: resolved.value.name,
223
+ commit: next => resolved.commit(
224
+ Effect.map(next, name => ({
225
+ ...resolved.value,
226
+ name,
227
+ })),
228
+ ),
229
+ }),
230
+ ),
231
+
232
+ mapStream: Stream.map(user => user.name),
233
+
234
+ // This derived Lens does not add lock behavior, so it reuses the parent lock.
235
+ mapLock: identity,
236
+ }),
237
+ )
238
+ ```
239
+
199
240
 
200
241
  ### Subscribable
201
242
 
@@ -240,8 +281,11 @@ Currently available:
240
281
  | - | - |
241
282
  | `focusObjectOn` | Focuses to the field of an object |
242
283
  | `focusArrayAt` | Focuses to an indexed entry of an array |
284
+ | `focusArrayLength` | Focuses to the length of an array |
243
285
  | `focusTupleAt` | Focuses to an indexed entry of a tuple |
244
286
  | `focusChunkAt` | Focuses to an indexed entry of a `Chunk` |
287
+ | `focusChunkSize` | Focuses to the size of a `Chunk` |
288
+ | `focusIterableSize` | Focuses to the size of an iterable |
245
289
 
246
290
 
247
291
  ## Todo
package/dist/Lens.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Chunk, Effect, Option, Pipeable, Readable, Stream, type SubscriptionRef, type SynchronizedRef } from "effect";
1
+ import { Chunk, type Context, Effect, Option, Pipeable, PubSub, Readable, Ref, Stream, type SubscriptionRef, type SynchronizedRef } from "effect";
2
2
  import type { NoSuchElementException } from "effect/Cause";
3
3
  import * as Subscribable from "./Subscribable.js";
4
4
  export declare const LensTypeId: unique symbol;
@@ -12,42 +12,95 @@ export type LensTypeId = typeof LensTypeId;
12
12
  */
13
13
  export interface Lens<in out A, in out ER = never, in out EW = never, in out RR = never, in out RW = never> extends Subscribable.Subscribable<A, ER, RR> {
14
14
  readonly [LensTypeId]: LensTypeId;
15
- readonly modify: <B, E1 = never, R1 = never>(f: (a: A) => Effect.Effect<readonly [B, A], E1, R1>) => Effect.Effect<B, ER | EW | E1, RR | RW | R1>;
15
+ readonly modifyEffect: <B, E1 = never, R1 = never>(f: (a: A) => Effect.Effect<readonly [B, A], E1, R1>) => Effect.Effect<B, ER | EW | E1, RR | RW | R1>;
16
16
  }
17
- declare const LensImpl_base: Pipeable.PipeableConstructor;
18
17
  /**
19
- * Internal `Lens` implementation.
18
+ * Checks whether a value is a `Lens`.
20
19
  */
21
- export declare class LensImpl<in out A, in out ER = never, in out EW = never, in out RR = never, in out RW = never> extends LensImpl_base implements Lens<A, ER, EW, RR, RW> {
22
- readonly get: Effect.Effect<A, ER, RR>;
23
- readonly changes: Stream.Stream<A, ER, RR>;
24
- readonly modify: <B, E1 = never, R1 = never>(f: (a: A) => Effect.Effect<readonly [B, A], E1, R1>) => Effect.Effect<B, ER | EW | E1, RR | RW | R1>;
20
+ export declare const isLens: (u: unknown) => u is Lens<unknown, unknown, unknown, unknown, unknown>;
21
+ export declare const LensImplTypeId: unique symbol;
22
+ export type LensImplTypeId = typeof LensImplTypeId;
23
+ export declare namespace LensImpl {
24
+ interface Resolved<in out A, in out EW = never, in out RW = never> {
25
+ readonly value: A;
26
+ readonly commit: <E = never, R = never>(next: Effect.Effect<A, E, R>) => Effect.Effect<void, EW | E, RW | R>;
27
+ }
28
+ interface Lock {
29
+ <A1, E1, R1>(self: Effect.Effect<A1, E1, R1>): Effect.Effect<A1, E1, R1>;
30
+ }
31
+ }
32
+ declare const LensImpl_base: Pipeable.PipeableConstructor;
33
+ export declare abstract class LensImpl<in out A, in out ER = never, in out EW = never, in out RR = never, in out RW = never> extends LensImpl_base implements Lens<A, ER, EW, RR, RW> {
25
34
  readonly [Readable.TypeId]: Readable.TypeId;
26
35
  readonly [Subscribable.TypeId]: Subscribable.TypeId;
27
36
  readonly [LensTypeId]: LensTypeId;
28
- constructor(get: Effect.Effect<A, ER, RR>, changes: Stream.Stream<A, ER, RR>, modify: <B, E1 = never, R1 = never>(f: (a: A) => Effect.Effect<readonly [B, A], E1, R1>) => Effect.Effect<B, ER | EW | E1, RR | RW | R1>);
37
+ readonly [LensImplTypeId]: LensImplTypeId;
38
+ abstract readonly resolve: Effect.Effect<LensImpl.Resolved<A, EW, RW>, ER, RR>;
39
+ abstract readonly changes: Stream.Stream<A, ER, RR>;
40
+ abstract readonly lock: Effect.Effect<LensImpl.Lock, EW, RW>;
41
+ get get(): Effect.Effect<A, ER, RR>;
42
+ modifyEffect<B, E1 = never, R1 = never>(f: (a: A) => Effect.Effect<readonly [B, A], E1, R1>): Effect.Effect<B, ER | EW | E1, RR | RW | R1>;
43
+ }
44
+ export declare const isLensImpl: (u: unknown) => u is LensImpl<unknown, unknown, unknown, unknown, unknown>;
45
+ export declare const asLensImpl: <A, ER, EW, RR, RW>(lens: Lens<A, ER, EW, RR, RW>) => LensImpl<A, ER, EW, RR, RW>;
46
+ export declare namespace LensLazyImpl {
47
+ interface Source<in out A, in out ER = never, in out EW = never, in out RR = never, in out RW = never> {
48
+ readonly get: Effect.Effect<A, ER, RR>;
49
+ readonly changes: Stream.Stream<A, ER, RR>;
50
+ readonly commit: (a: A) => Effect.Effect<void, EW, RW>;
51
+ readonly lock: Effect.Effect<LensImpl.Lock, EW, RW>;
52
+ }
53
+ }
54
+ export declare class LensLazyImpl<in out A, in out ER = never, in out EW = never, in out RR = never, in out RW = never> extends LensImpl<A, ER, EW, RR, RW> {
55
+ readonly source: LensLazyImpl.Source<A, ER, EW, RR, RW>;
56
+ constructor(source: LensLazyImpl.Source<A, ER, EW, RR, RW>);
57
+ get resolve(): Effect.Effect<LensImpl.Resolved<A, EW, RW>, ER, RR>;
58
+ get changes(): Stream.Stream<A, ER, RR>;
59
+ get lock(): Effect.Effect<LensImpl.Lock, EW, RW>;
29
60
  }
30
61
  /**
31
- * Checks whether a value is a `Lens`.
62
+ * Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations.
32
63
  */
33
- export declare const isLens: (u: unknown) => u is Lens<unknown, unknown, unknown, unknown, unknown>;
64
+ export declare const make: <A, ER, EW, RR, RW>(source: LensLazyImpl.Source<A, ER, EW, RR, RW>) => Lens<A, ER, EW, RR, RW>;
65
+ export declare class UnwrappedLensImpl<in out A, in out ER, in out EW, in out RR, in out RW, in out E1, in out R1> extends LensImpl<A, ER | E1, EW | E1, RR | R1, RW | R1> {
66
+ readonly effect: Effect.Effect<Lens<A, ER, EW, RR, RW>, E1, R1>;
67
+ constructor(effect: Effect.Effect<Lens<A, ER, EW, RR, RW>, E1, R1>);
68
+ get resolve(): Effect.Effect<LensImpl.Resolved<A, EW | E1, RW | R1>, ER | E1, RR | R1>;
69
+ get changes(): Stream.Stream<A, ER | E1, RR | R1>;
70
+ get lock(): Effect.Effect<LensImpl.Lock, EW | E1, RW | R1>;
71
+ }
34
72
  /**
35
- * Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations.
36
- *
37
- * Either `modify` or `set` needs to be supplied.
73
+ * Flattens an effectful `Lens`.
38
74
  */
39
- export declare const make: <A, ER, EW, RR, RW>(options: {
40
- readonly get: Effect.Effect<A, ER, RR>;
41
- readonly changes: Stream.Stream<A, ER, RR>;
42
- } & ({
43
- readonly modify: <B, E1 = never, R1 = never>(f: (a: A) => Effect.Effect<readonly [B, A], E1, R1>) => Effect.Effect<B, ER | EW | E1, RR | RW | R1>;
44
- } | {
45
- readonly set: (a: A) => Effect.Effect<void, EW, RW>;
46
- })) => Lens<A, ER, EW, RR, RW>;
75
+ export declare const unwrap: <A, ER, EW, RR, RW, E1, R1>(effect: Effect.Effect<Lens<A, ER, EW, RR, RW>, E1, R1>) => Lens<A, ER | E1, EW | E1, RR | R1, RW | R1>;
76
+ export declare class RefLensImpl<in out A> extends LensImpl<A, never, never, never, never> {
77
+ readonly ref: Ref.Ref<A>;
78
+ readonly semaphore: Effect.Semaphore;
79
+ constructor(ref: Ref.Ref<A>, semaphore: Effect.Semaphore);
80
+ get resolve(): Effect.Effect<LensImpl.Resolved<A>, never, never>;
81
+ get changes(): Stream.Stream<A, never, never>;
82
+ get lock(): Effect.Effect<(<A_1, E, R>(self: Effect.Effect<A_1, E, R>) => Effect.Effect<A_1, E, R>), never, never>;
83
+ }
47
84
  /**
48
- * Creates a `Lens` that proxies a `SubscriptionRef`.
85
+ * Creates a `Lens` that proxies a `Ref`.
86
+ *
87
+ * Note: since `Ref` does not provide any kind of reactivity mechanism, the produced `Lens` will be non-reactive.
88
+ * This means its `changes` stream will only emit the current value once when evaluated and nothing else.
49
89
  */
50
- export declare const fromSubscriptionRef: <A>(ref: SubscriptionRef.SubscriptionRef<A>) => Lens<A, never, never, never, never>;
90
+ export declare const fromRef: <A>(ref: Ref.Ref<A>) => Effect.Effect<Lens<A, never, never, never, never>, never, never>;
91
+ export declare namespace SynchronizedRefLensImpl {
92
+ interface SynchronizedRefWithInternals<in out A> extends SynchronizedRef.SynchronizedRef<A> {
93
+ readonly ref: Ref.Ref<A>;
94
+ readonly withLock: LensImpl.Lock;
95
+ }
96
+ }
97
+ export declare class SynchronizedRefLensImpl<in out A> extends LensImpl<A, never, never, never, never> {
98
+ readonly ref: SynchronizedRefLensImpl.SynchronizedRefWithInternals<A>;
99
+ constructor(ref: SynchronizedRefLensImpl.SynchronizedRefWithInternals<A>);
100
+ get resolve(): Effect.Effect<LensImpl.Resolved<A>, never, never>;
101
+ get changes(): Stream.Stream<A, never, never>;
102
+ get lock(): Effect.Effect<LensImpl.Lock, never, never>;
103
+ }
51
104
  /**
52
105
  * Creates a `Lens` that proxies a `SynchronizedRef`.
53
106
  *
@@ -55,10 +108,46 @@ export declare const fromSubscriptionRef: <A>(ref: SubscriptionRef.SubscriptionR
55
108
  * This means its `changes` stream will only emit the current value once when evaluated and nothing else.
56
109
  */
57
110
  export declare const fromSynchronizedRef: <A>(ref: SynchronizedRef.SynchronizedRef<A>) => Lens<A, never, never, never, never>;
111
+ export declare namespace SubscriptionRefLensImpl {
112
+ interface SubscriptionRefWithInternals<in out A> extends SubscriptionRef.SubscriptionRef<A> {
113
+ readonly ref: Ref.Ref<A>;
114
+ readonly pubsub: PubSub.PubSub<A>;
115
+ readonly semaphore: Effect.Semaphore;
116
+ }
117
+ }
118
+ export declare class SubscriptionRefLensImpl<in out A> extends LensImpl<A, never, never, never, never> {
119
+ readonly ref: SubscriptionRefLensImpl.SubscriptionRefWithInternals<A>;
120
+ constructor(ref: SubscriptionRefLensImpl.SubscriptionRefWithInternals<A>);
121
+ get resolve(): Effect.Effect<LensImpl.Resolved<A>, never, never>;
122
+ get changes(): Stream.Stream<A, never, never>;
123
+ get lock(): Effect.Effect<(<A_1, E, R>(self: Effect.Effect<A_1, E, R>) => Effect.Effect<A_1, E, R>), never, never>;
124
+ }
58
125
  /**
59
- * Flattens an effectful `Lens`.
126
+ * Creates a `Lens` that proxies a `SubscriptionRef`.
60
127
  */
61
- export declare const unwrap: <A, ER, EW, RR, RW, E1, R1>(effect: Effect.Effect<Lens<A, ER, EW, RR, RW>, E1, R1>) => Lens<A, ER | E1, EW | E1, RR | R1, RW | R1>;
128
+ export declare const fromSubscriptionRef: <A>(ref: SubscriptionRef.SubscriptionRef<A>) => Lens<A, never, never, never, never>;
129
+ export declare namespace DerivedLensImpl {
130
+ interface Source<in out A, in out B, in out ER = never, in out ESR = never, in out EW = never, in out ESW = never, in out RR = never, in out RSR = never, in out RW = never, in out RSW = never> {
131
+ readonly resolve: (effect: Effect.Effect<LensImpl.Resolved<B, ESW, RSW>, ESR, RSR>) => Effect.Effect<LensImpl.Resolved<A, EW, RW>, ER, RR>;
132
+ readonly mapStream: (stream: Stream.Stream<B, ESR, RSR>) => Stream.Stream<A, ER, RR>;
133
+ readonly mapLock: (lock: Effect.Effect<LensImpl.Lock, ESW, RSW>) => Effect.Effect<LensImpl.Lock, EW, RW>;
134
+ }
135
+ }
136
+ export declare class DerivedLensImpl<in out A, in out B, in out ER = never, in out PER = never, in out EW = never, in out PEW = never, in out RR = never, in out PRR = never, in out RW = never, in out PRW = never> extends LensImpl<A, ER, EW, RR, RW> {
137
+ readonly parent: LensImpl<B, PER, PEW, PRR, PRW>;
138
+ readonly source: DerivedLensImpl.Source<A, B, ER, PER, EW, PEW, RR, PRR, RW, PRW>;
139
+ constructor(parent: LensImpl<B, PER, PEW, PRR, PRW>, source: DerivedLensImpl.Source<A, B, ER, PER, EW, PEW, RR, PRR, RW, PRW>);
140
+ get resolve(): Effect.Effect<LensImpl.Resolved<A, EW, RW>, ER, RR>;
141
+ get changes(): Stream.Stream<A, ER, RR>;
142
+ get lock(): Effect.Effect<LensImpl.Lock, EW, RW>;
143
+ }
144
+ /**
145
+ * Derives a new `Lens` by linking a step to an existing parent lens.
146
+ */
147
+ export declare const derive: {
148
+ <A, B, ER, EW, RR, RW, ER2, EW2, RR2, RW2>(self: Lens<B, ER, EW, RR, RW>, source: DerivedLensImpl.Source<A, B, ER2, ER, EW2, EW, RR2, RR, RW2, RW>): Lens<A, ER2, EW2, RR2, RW2>;
149
+ <A, B, ER, EW, RR, RW, ER2, EW2, RR2, RW2>(source: DerivedLensImpl.Source<A, B, ER2, ER, EW2, EW, RR2, RR, RW2, RW>): (self: Lens<B, ER, EW, RR, RW>) => Lens<A, ER2, EW2, RR2, RW2>;
150
+ };
62
151
  /**
63
152
  * Derives a new `Lens` by applying synchronous getters and setters over the focused value.
64
153
  */
@@ -102,6 +191,81 @@ export declare const mapStream: {
102
191
  <A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, f: (changes: Stream.Stream<NoInfer<A>, NoInfer<ER>, NoInfer<RR>>) => Stream.Stream<NoInfer<A>, NoInfer<ER>, NoInfer<RR>>): Lens<A, ER, EW, RR, RW>;
103
192
  <A, ER, EW, RR, RW>(f: (changes: Stream.Stream<NoInfer<A>, NoInfer<ER>, NoInfer<RR>>) => Stream.Stream<NoInfer<A>, NoInfer<ER>, NoInfer<RR>>): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER, EW, RR, RW>;
104
193
  };
194
+ /**
195
+ * Transforms read errors of a `Lens`.
196
+ *
197
+ * Applies to `get` and `changes` while leaving `modify` unchanged.
198
+ */
199
+ export declare const mapErrorRead: {
200
+ <A, ER, EW, RR, RW, E2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<ER>) => E2): Lens<A, E2, EW, RR, RW>;
201
+ <A, ER, EW, RR, RW, E2>(f: (error: NoInfer<ER>) => E2): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, E2, EW, RR, RW>;
202
+ };
203
+ /**
204
+ * Transforms modify errors of a `Lens`.
205
+ *
206
+ * Applies to the commit/rebuild portion of `modifyEffect` while leaving failures from the
207
+ * user-supplied callback unchanged.
208
+ */
209
+ export declare const mapErrorWrite: {
210
+ <A, ER, EW, RR, RW, E2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<EW>) => E2): Lens<A, ER, E2, RR, RW>;
211
+ <A, ER, EW, RR, RW, E2>(f: (error: NoInfer<EW>) => E2): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER, E2, RR, RW>;
212
+ };
213
+ /**
214
+ * Transforms all errors of a `Lens`.
215
+ *
216
+ * Applies to `get`, `changes`, and the commit/rebuild portion of `modifyEffect` while leaving
217
+ * failures from the user-supplied callback unchanged.
218
+ */
219
+ export declare const mapError: {
220
+ <A, ER, EW, RR, RW, E2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<ER | EW>) => E2): Lens<A, E2, E2, RR, RW>;
221
+ <A, ER, EW, RR, RW, E2>(f: (error: NoInfer<ER | EW>) => E2): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, E2, E2, RR, RW>;
222
+ };
223
+ /**
224
+ * Runs an effect when read failures occur.
225
+ *
226
+ * Applies to `get` and `changes` while leaving `modify` unchanged.
227
+ */
228
+ export declare const tapErrorRead: {
229
+ <A, ER, EW, RR, RW, E2, R2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<ER>) => Effect.Effect<unknown, E2, R2>): Lens<A, ER | E2, EW, RR | R2, RW>;
230
+ <A, ER, EW, RR, RW, E2, R2>(f: (error: NoInfer<ER>) => Effect.Effect<unknown, E2, R2>): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER | E2, EW, RR | R2, RW>;
231
+ };
232
+ /**
233
+ * Runs an effect when modify failures occur.
234
+ *
235
+ * Applies to the commit/rebuild portion of `modifyEffect` while leaving failures from the
236
+ * user-supplied callback unchanged.
237
+ */
238
+ export declare const tapErrorWrite: {
239
+ <A, ER, EW, RR, RW, E2, R2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<EW>) => Effect.Effect<unknown, E2, R2>): Lens<A, ER, EW | E2, RR, RW | R2>;
240
+ <A, ER, EW, RR, RW, E2, R2>(f: (error: NoInfer<EW>) => Effect.Effect<unknown, E2, R2>): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER, EW | E2, RR, RW | R2>;
241
+ };
242
+ /**
243
+ * Runs an effect when any `Lens` failure occurs.
244
+ *
245
+ * Applies to `get`, `changes`, and the commit/rebuild portion of `modifyEffect` while leaving
246
+ * failures from the user-supplied callback unchanged.
247
+ */
248
+ export declare const tapError: {
249
+ <A, ER, EW, RR, RW, E2, R2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<ER | EW>) => Effect.Effect<unknown, E2, R2>): Lens<A, ER | E2, EW | E2, RR | R2, RW | R2>;
250
+ <A, ER, EW, RR, RW, E2, R2>(f: (error: NoInfer<ER | EW>) => Effect.Effect<unknown, E2, R2>): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER | E2, EW | E2, RR | R2, RW | R2>;
251
+ };
252
+ /**
253
+ * Provides a `Context` to a `Lens`, removing it from both the read and write environments.
254
+ */
255
+ export declare const provideContext: {
256
+ <A, ER, EW, RR, RW, R2>(self: Lens<A, ER, EW, RR, RW>, context: Context.Context<R2>): Lens<A, ER, EW, Exclude<RR, R2>, Exclude<RW, R2>>;
257
+ <R2>(context: Context.Context<R2>): <A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER, EW, Exclude<RR, R2>, Exclude<RW, R2>>;
258
+ };
259
+ /**
260
+ * Provides a single service to a `Lens`, removing it from both the read and write environments.
261
+ *
262
+ * This is the `Lens` equivalent of `Effect.provideService`: use it when a lens requires one
263
+ * `Context.Tag` and you already have the concrete service value.
264
+ */
265
+ export declare const provideService: {
266
+ <A, ER, EW, RR, RW, I, S>(self: Lens<A, ER, EW, RR, RW>, tag: Context.Tag<I, S>, service: NoInfer<S>): Lens<A, ER, EW, Exclude<RR, I>, Exclude<RW, I>>;
267
+ <I, S>(tag: Context.Tag<I, S>, service: NoInfer<S>): <A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER, EW, Exclude<RR, I>, Exclude<RW, I>>;
268
+ };
105
269
  /**
106
270
  * Narrows the focus to a field of an object. Replaces the object in an immutable fashion when written to.
107
271
  */
@@ -161,6 +325,15 @@ export declare const focusChunkAt: {
161
325
  <A, ER, EW, RR, RW>(self: Lens<Chunk.Chunk<A>, ER, EW, RR, RW>, index: number): Lens<A, ER | NoSuchElementException, EW, RR, RW>;
162
326
  <A, ER, EW, RR, RW>(index: number): (self: Lens<Chunk.Chunk<A>, ER, EW, RR, RW>) => Lens<A, ER | NoSuchElementException, EW, RR, RW>;
163
327
  };
328
+ /**
329
+ * Narrows the focus to the value inside an `Option`.
330
+ *
331
+ * Reading or writing through this lens fails with `NoSuchElementException` when the parent option is `None`.
332
+ * Writing wraps the new focused value back into `Option.some`.
333
+ */
334
+ export declare const focusOption: {
335
+ <A, ER, EW, RR, RW>(self: Lens<Option.Option<A>, ER, EW, RR, RW>): Lens<A, ER | NoSuchElementException, EW | NoSuchElementException, RR, RW>;
336
+ };
164
337
  /**
165
338
  * Reads the current value from a `Lens`.
166
339
  */
package/dist/Lens.js CHANGED
@@ -1,77 +1,169 @@
1
- import { Array, Chunk, Effect, Function, Option, Pipeable, Predicate, Readable, Stream } from "effect";
1
+ import { Array, Chunk, Effect, Function, identity, Option, Pipeable, Predicate, PubSub, Readable, Ref, Stream } from "effect";
2
2
  import * as Subscribable from "./Subscribable.js";
3
3
  export const LensTypeId = Symbol.for("@effect-fc/Lens/Lens");
4
4
  /**
5
- * Internal `Lens` implementation.
5
+ * Checks whether a value is a `Lens`.
6
6
  */
7
+ export const isLens = (u) => Predicate.hasProperty(u, LensTypeId);
8
+ export const LensImplTypeId = Symbol.for("@effect-fc/Lens/LensImpl");
7
9
  export class LensImpl extends Pipeable.Class() {
8
- get;
9
- changes;
10
- modify;
11
10
  [Readable.TypeId] = Readable.TypeId;
12
11
  [Subscribable.TypeId] = Subscribable.TypeId;
13
12
  [LensTypeId] = LensTypeId;
14
- constructor(get, changes, modify) {
13
+ [LensImplTypeId] = LensImplTypeId;
14
+ get get() { return Effect.map(this.resolve, resolved => resolved.value); }
15
+ modifyEffect(f) {
16
+ return Effect.flatMap(this.lock, lock => lock(Effect.flatMap(this.resolve, resolved => Effect.flatMap(f(resolved.value), ([c, next]) => Effect.as(resolved.commit(Effect.succeed(next)), c)))));
17
+ }
18
+ }
19
+ export const isLensImpl = (u) => Predicate.hasProperty(u, LensImplTypeId);
20
+ export const asLensImpl = (lens) => {
21
+ if (!isLensImpl(lens))
22
+ throw new Error("Not a 'LensImpl'");
23
+ return lens;
24
+ };
25
+ export class LensLazyImpl extends LensImpl {
26
+ source;
27
+ constructor(source) {
15
28
  super();
16
- this.get = get;
17
- this.changes = changes;
18
- this.modify = modify;
29
+ this.source = source;
30
+ }
31
+ get resolve() {
32
+ return Effect.map(this.source.get, value => ({
33
+ value,
34
+ commit: next => Effect.flatMap(next, value => this.source.commit(value)),
35
+ }));
19
36
  }
37
+ get changes() { return this.source.changes; }
38
+ get lock() { return this.source.lock; }
20
39
  }
21
40
  /**
22
- * Checks whether a value is a `Lens`.
41
+ * Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations.
23
42
  */
24
- export const isLens = (u) => Predicate.hasProperty(u, LensTypeId);
43
+ export const make = (source) => new LensLazyImpl(source);
44
+ export class UnwrappedLensImpl extends LensImpl {
45
+ effect;
46
+ constructor(effect) {
47
+ super();
48
+ this.effect = effect;
49
+ }
50
+ get resolve() {
51
+ return Effect.map(Effect.flatMap(this.effect, l => asLensImpl(l).resolve), resolved => ({
52
+ value: resolved.value,
53
+ commit: next => resolved.commit(next),
54
+ }));
55
+ }
56
+ get changes() { return Stream.unwrap(Effect.map(this.effect, l => l.changes)); }
57
+ get lock() { return Effect.flatMap(this.effect, l => asLensImpl(l).lock); }
58
+ }
25
59
  /**
26
- * Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations.
27
- *
28
- * Either `modify` or `set` needs to be supplied.
60
+ * Flattens an effectful `Lens`.
29
61
  */
30
- export const make = (options) => new LensImpl(options.get, options.changes, Predicate.hasProperty(options, "modify")
31
- ? options.modify
32
- : (f) => Effect.flatMap(options.get, a => Effect.flatMap(f(a), ([b, next]) => Effect.as(options.set(next), b))));
62
+ export const unwrap = (effect) => new UnwrappedLensImpl(effect);
63
+ export class RefLensImpl extends LensImpl {
64
+ ref;
65
+ semaphore;
66
+ constructor(ref, semaphore) {
67
+ super();
68
+ this.ref = ref;
69
+ this.semaphore = semaphore;
70
+ }
71
+ get resolve() {
72
+ return Effect.map(Ref.get(this.ref), value => ({
73
+ value,
74
+ commit: next => Effect.flatMap(next, value => Ref.set(this.ref, value)),
75
+ }));
76
+ }
77
+ get changes() { return Stream.unwrap(Effect.map(Ref.get(this.ref), Stream.make)); }
78
+ get lock() { return Effect.succeed(this.semaphore.withPermits(1)); }
79
+ }
33
80
  /**
34
- * Creates a `Lens` that proxies a `SubscriptionRef`.
81
+ * Creates a `Lens` that proxies a `Ref`.
82
+ *
83
+ * Note: since `Ref` does not provide any kind of reactivity mechanism, the produced `Lens` will be non-reactive.
84
+ * This means its `changes` stream will only emit the current value once when evaluated and nothing else.
35
85
  */
36
- export const fromSubscriptionRef = (ref) => make({
37
- get get() { return ref.get; },
38
- get changes() { return ref.changes; },
39
- modify: (f) => ref.modifyEffect(f),
86
+ export const fromRef = Effect.fnUntraced(function* (ref) {
87
+ return new RefLensImpl(ref, yield* Effect.makeSemaphore(1));
40
88
  });
89
+ export class SynchronizedRefLensImpl extends LensImpl {
90
+ ref;
91
+ constructor(ref) {
92
+ super();
93
+ this.ref = ref;
94
+ }
95
+ get resolve() {
96
+ return Effect.map(Ref.get(this.ref.ref), value => ({
97
+ value,
98
+ commit: next => Effect.flatMap(next, value => Ref.set(this.ref.ref, value)),
99
+ }));
100
+ }
101
+ get changes() { return Stream.unwrap(Effect.map(Ref.get(this.ref.ref), Stream.make)); }
102
+ get lock() { return Effect.succeed(this.ref.withLock); }
103
+ }
41
104
  /**
42
105
  * Creates a `Lens` that proxies a `SynchronizedRef`.
43
106
  *
44
107
  * Note: since `SynchronizedRef` does not provide any kind of reactivity mechanism, the produced `Lens` will be non-reactive.
45
108
  * This means its `changes` stream will only emit the current value once when evaluated and nothing else.
46
109
  */
47
- export const fromSynchronizedRef = (ref) => make({
48
- get get() { return ref.get; },
49
- get changes() { return Stream.unwrap(Effect.map(ref.get, Stream.make)); },
50
- modify: (f) => ref.modifyEffect(f),
51
- });
110
+ export const fromSynchronizedRef = (ref) => new SynchronizedRefLensImpl(ref);
111
+ export class SubscriptionRefLensImpl extends LensImpl {
112
+ ref;
113
+ constructor(ref) {
114
+ super();
115
+ this.ref = ref;
116
+ }
117
+ get resolve() {
118
+ return Effect.map(this.ref.get, value => ({
119
+ value,
120
+ commit: next => Effect.flatMap(next, value => Effect.zipLeft(Ref.set(this.ref.ref, value), PubSub.publish(this.ref.pubsub, value))),
121
+ }));
122
+ }
123
+ get changes() { return this.ref.changes; }
124
+ get lock() { return Effect.succeed(this.ref.semaphore.withPermits(1)); }
125
+ }
52
126
  /**
53
- * Flattens an effectful `Lens`.
127
+ * Creates a `Lens` that proxies a `SubscriptionRef`.
54
128
  */
55
- export const unwrap = (effect) => make({
56
- get: Effect.flatMap(effect, l => l.get),
57
- changes: Stream.unwrap(Effect.map(effect, l => l.changes)),
58
- modify: (f) => Effect.flatMap(effect, l => l.modify(f)),
59
- });
129
+ export const fromSubscriptionRef = (ref) => new SubscriptionRefLensImpl(ref);
130
+ export class DerivedLensImpl extends LensImpl {
131
+ parent;
132
+ source;
133
+ constructor(parent, source) {
134
+ super();
135
+ this.parent = parent;
136
+ this.source = source;
137
+ }
138
+ get resolve() { return this.source.resolve(this.parent.resolve); }
139
+ get changes() { return this.source.mapStream(this.parent.changes); }
140
+ get lock() { return this.source.mapLock(this.parent.lock); }
141
+ }
142
+ /**
143
+ * Derives a new `Lens` by linking a step to an existing parent lens.
144
+ */
145
+ export const derive = Function.dual(2, (self, source) => new DerivedLensImpl(asLensImpl(self), source));
60
146
  /**
61
147
  * Derives a new `Lens` by applying synchronous getters and setters over the focused value.
62
148
  */
63
- export const map = Function.dual(3, (self, get, set) => make({
64
- get get() { return Effect.map(self.get, get); },
65
- get changes() { return Stream.map(self.changes, get); },
66
- modify: (f) => self.modify(a => Effect.flatMap(f(get(a)), ([c, next]) => Effect.succeed([c, set(a, next)]))),
149
+ export const map = Function.dual(3, (self, get, set) => derive(self, {
150
+ resolve: parent => Effect.map(parent, resolved => ({
151
+ value: get(resolved.value),
152
+ commit: next => resolved.commit(Effect.map(next, b => set(resolved.value, b))),
153
+ })),
154
+ mapStream: Stream.map(get),
155
+ mapLock: identity,
67
156
  }));
68
157
  /**
69
158
  * Derives a new `Lens` by applying effectful getters and setters over the focused value.
70
159
  */
71
- export const mapEffect = Function.dual(3, (self, get, set) => make({
72
- get get() { return Effect.flatMap(self.get, get); },
73
- get changes() { return Stream.mapEffect(self.changes, get); },
74
- modify: (f) => self.modify(a => Effect.flatMap(get(a), b => Effect.flatMap(f(b), ([c, bNext]) => Effect.flatMap(set(a, bNext), nextA => Effect.succeed([c, nextA]))))),
160
+ export const mapEffect = Function.dual(3, (self, get, set) => derive(self, {
161
+ resolve: parent => Effect.flatMap(parent, resolved => Effect.map(get(resolved.value), value => ({
162
+ value,
163
+ commit: next => resolved.commit(Effect.flatMap(next, b => set(resolved.value, b))),
164
+ }))),
165
+ mapStream: Stream.mapEffect(get),
166
+ mapLock: (identity),
75
167
  }));
76
168
  /**
77
169
  * Derives a new `Lens` by applying synchronous getters and setters over the value inside an `Option`.
@@ -104,10 +196,111 @@ export const mapOptionEffect = Function.dual(3, (self, get, set) => mapEffect(se
104
196
  /**
105
197
  * Allows transforming only the `changes` stream of a `Lens` while keeping the focus type intact.
106
198
  */
107
- export const mapStream = Function.dual(2, (self, f) => make({
108
- get get() { return self.get; },
109
- get changes() { return f(self.changes); },
110
- get modify() { return self.modify; },
199
+ export const mapStream = Function.dual(2, (self, f) => derive(self, {
200
+ resolve: identity,
201
+ mapStream: f,
202
+ mapLock: identity,
203
+ }));
204
+ /**
205
+ * Transforms read errors of a `Lens`.
206
+ *
207
+ * Applies to `get` and `changes` while leaving `modify` unchanged.
208
+ */
209
+ export const mapErrorRead = Function.dual(2, (self, f) => derive(self, {
210
+ resolve: Effect.mapError(f),
211
+ mapStream: Stream.mapError(f),
212
+ mapLock: identity,
213
+ }));
214
+ /**
215
+ * Transforms modify errors of a `Lens`.
216
+ *
217
+ * Applies to the commit/rebuild portion of `modifyEffect` while leaving failures from the
218
+ * user-supplied callback unchanged.
219
+ */
220
+ export const mapErrorWrite = Function.dual(2, (self, f) => derive(self, {
221
+ resolve: parent => Effect.map(parent, resolved => ({
222
+ value: resolved.value,
223
+ commit: next => Effect.flatMap(next, value => Effect.mapError(resolved.commit(Effect.succeed(value)), f)),
224
+ })),
225
+ mapStream: identity,
226
+ mapLock: Effect.mapError(f),
227
+ }));
228
+ /**
229
+ * Transforms all errors of a `Lens`.
230
+ *
231
+ * Applies to `get`, `changes`, and the commit/rebuild portion of `modifyEffect` while leaving
232
+ * failures from the user-supplied callback unchanged.
233
+ */
234
+ export const mapError = Function.dual(2, (self, f) => derive(self, {
235
+ resolve: parent => Effect.map(Effect.mapError(parent, f), resolved => ({
236
+ value: resolved.value,
237
+ commit: next => Effect.flatMap(next, value => Effect.mapError(resolved.commit(Effect.succeed(value)), f)),
238
+ })),
239
+ mapStream: Stream.mapError(f),
240
+ mapLock: Effect.mapError(f),
241
+ }));
242
+ /**
243
+ * Runs an effect when read failures occur.
244
+ *
245
+ * Applies to `get` and `changes` while leaving `modify` unchanged.
246
+ */
247
+ export const tapErrorRead = Function.dual(2, (self, f) => derive(self, {
248
+ resolve: Effect.tapError(f),
249
+ mapStream: Stream.tapError(f),
250
+ mapLock: identity,
251
+ }));
252
+ /**
253
+ * Runs an effect when modify failures occur.
254
+ *
255
+ * Applies to the commit/rebuild portion of `modifyEffect` while leaving failures from the
256
+ * user-supplied callback unchanged.
257
+ */
258
+ export const tapErrorWrite = Function.dual(2, (self, f) => derive(self, {
259
+ resolve: parent => Effect.map(parent, resolved => ({
260
+ value: resolved.value,
261
+ commit: next => Effect.flatMap(next, value => Effect.tapError(resolved.commit(Effect.succeed(value)), f)),
262
+ })),
263
+ mapStream: identity,
264
+ mapLock: Effect.tapError(f),
265
+ }));
266
+ /**
267
+ * Runs an effect when any `Lens` failure occurs.
268
+ *
269
+ * Applies to `get`, `changes`, and the commit/rebuild portion of `modifyEffect` while leaving
270
+ * failures from the user-supplied callback unchanged.
271
+ */
272
+ export const tapError = Function.dual(2, (self, f) => derive(self, {
273
+ resolve: parent => Effect.map(Effect.tapError(parent, f), resolved => ({
274
+ value: resolved.value,
275
+ commit: next => Effect.flatMap(next, value => Effect.tapError(resolved.commit(Effect.succeed(value)), f)),
276
+ })),
277
+ mapStream: Stream.tapError(f),
278
+ mapLock: Effect.tapError(f),
279
+ }));
280
+ /**
281
+ * Provides a `Context` to a `Lens`, removing it from both the read and write environments.
282
+ */
283
+ export const provideContext = Function.dual(2, (self, context) => derive(self, {
284
+ resolve: parent => Effect.map(Effect.provide(parent, context), resolved => ({
285
+ value: resolved.value,
286
+ commit: next => Effect.provide(resolved.commit(next), context),
287
+ })),
288
+ mapStream: Stream.provideSomeContext(context),
289
+ mapLock: Effect.provide(context),
290
+ }));
291
+ /**
292
+ * Provides a single service to a `Lens`, removing it from both the read and write environments.
293
+ *
294
+ * This is the `Lens` equivalent of `Effect.provideService`: use it when a lens requires one
295
+ * `Context.Tag` and you already have the concrete service value.
296
+ */
297
+ export const provideService = Function.dual(3, (self, tag, service) => derive(self, {
298
+ resolve: parent => Effect.map(Effect.provideService(parent, tag, service), resolved => ({
299
+ value: resolved.value,
300
+ commit: next => Effect.provideService(resolved.commit(next), tag, service),
301
+ })),
302
+ mapStream: Stream.provideService(tag, service),
303
+ mapLock: Effect.provideService(tag, service),
111
304
  }));
112
305
  /**
113
306
  * Narrows the focus to a field of an object. Replaces the object in an immutable fashion when written to.
@@ -137,6 +330,13 @@ export const focusMutableTupleAt = Function.dual(2, (self, index) => map(self, A
137
330
  * Narrows the focus to an indexed element of `Chunk`. Replaces the `Chunk` in an immutable fashion when written to.
138
331
  */
139
332
  export const focusChunkAt = Function.dual(2, (self, index) => mapEffect(self, Chunk.get(index), (a, b) => Effect.succeed(Chunk.replace(a, index, b))));
333
+ /**
334
+ * Narrows the focus to the value inside an `Option`.
335
+ *
336
+ * Reading or writing through this lens fails with `NoSuchElementException` when the parent option is `None`.
337
+ * Writing wraps the new focused value back into `Option.some`.
338
+ */
339
+ export const focusOption = (self) => mapEffect(self, identity, (a, b) => Effect.map(a, () => Option.some(b)));
140
340
  /**
141
341
  * Reads the current value from a `Lens`.
142
342
  */
@@ -144,40 +344,40 @@ export const get = (self) => self.get;
144
344
  /**
145
345
  * Sets the value of a `Lens`.
146
346
  */
147
- export const set = Function.dual(2, (self, value) => self.modify(() => Effect.succeed([void 0, value])));
347
+ export const set = Function.dual(2, (self, value) => self.modifyEffect(() => Effect.succeed([void 0, value])));
148
348
  /**
149
349
  * Sets a `Lens` to a new value and returns the previous value.
150
350
  */
151
- export const getAndSet = Function.dual(2, (self, value) => self.modify(a => Effect.succeed([a, value])));
351
+ export const getAndSet = Function.dual(2, (self, value) => self.modifyEffect(a => Effect.succeed([a, value])));
152
352
  /**
153
353
  * Applies a synchronous transformation to the value of a `Lens`, discarding the previous value.
154
354
  */
155
- export const update = Function.dual(2, (self, f) => self.modify(a => Effect.succeed([void 0, f(a)])));
355
+ export const update = Function.dual(2, (self, f) => self.modifyEffect(a => Effect.succeed([void 0, f(a)])));
156
356
  /**
157
357
  * Applies an effectful transformation to the value of a `Lens`, discarding the previous value.
158
358
  */
159
- export const updateEffect = Function.dual(2, (self, f) => self.modify(a => Effect.flatMap(f(a), next => Effect.succeed([void 0, next]))));
359
+ export const updateEffect = Function.dual(2, (self, f) => self.modifyEffect(a => Effect.flatMap(f(a), next => Effect.succeed([void 0, next]))));
160
360
  /**
161
361
  * Applies a synchronous transformation the value of a `Lens` while returning the previous value.
162
362
  */
163
- export const getAndUpdate = Function.dual(2, (self, f) => self.modify(a => Effect.succeed([a, f(a)])));
363
+ export const getAndUpdate = Function.dual(2, (self, f) => self.modifyEffect(a => Effect.succeed([a, f(a)])));
164
364
  /**
165
365
  * Applies an effectful transformation the value of a `Lens` while returning the previous value.
166
366
  */
167
- export const getAndUpdateEffect = Function.dual(2, (self, f) => self.modify(a => Effect.flatMap(f(a), next => Effect.succeed([a, next]))));
367
+ export const getAndUpdateEffect = Function.dual(2, (self, f) => self.modifyEffect(a => Effect.flatMap(f(a), next => Effect.succeed([a, next]))));
168
368
  /**
169
369
  * Sets the value of a `Lens` and returns the new value.
170
370
  */
171
- export const setAndGet = Function.dual(2, (self, value) => self.modify(() => Effect.succeed([value, value])));
371
+ export const setAndGet = Function.dual(2, (self, value) => self.modifyEffect(() => Effect.succeed([value, value])));
172
372
  /**
173
373
  * Applies a synchronous update the value of a `Lens` and returns the new value.
174
374
  */
175
- export const updateAndGet = Function.dual(2, (self, f) => self.modify(a => {
375
+ export const updateAndGet = Function.dual(2, (self, f) => self.modifyEffect(a => {
176
376
  const next = f(a);
177
377
  return Effect.succeed([next, next]);
178
378
  }));
179
379
  /**
180
380
  * Applies an effectful update to the value of a `Lens` and returns the new value.
181
381
  */
182
- export const updateAndGetEffect = Function.dual(2, (self, f) => self.modify(a => Effect.flatMap(f(a), next => Effect.succeed([next, next]))));
382
+ export const updateAndGetEffect = Function.dual(2, (self, f) => self.modifyEffect(a => Effect.flatMap(f(a), next => Effect.succeed([next, next]))));
183
383
  //# sourceMappingURL=Lens.js.map
package/dist/Lens.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Lens.js","sourceRoot":"","sources":["../src/Lens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Lens.js","sourceRoot":"","sources":["../src/Lens.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,10 @@ export declare const focusArrayAt: {
29
29
  <A extends readonly any[], E, R>(self: Subscribable.Subscribable<A, E, R>, index: number): Subscribable.Subscribable<A[number], E, R>;
30
30
  <A extends readonly any[], E, R>(index: number): (self: Subscribable.Subscribable<A, E, R>) => Subscribable.Subscribable<A[number], E | NoSuchElementException, R>;
31
31
  };
32
+ /**
33
+ * Narrows the focus to the length of an array.
34
+ */
35
+ export declare const focusArrayLength: <A extends readonly any[], E, R>(self: Subscribable.Subscribable<A, E, R>) => Subscribable.Subscribable<number, E, R>;
32
36
  /**
33
37
  * Narrows the focus to an indexed element of a readonly tuple.
34
38
  */
@@ -43,3 +47,11 @@ export declare const focusChunkAt: {
43
47
  <A, E, R>(self: Subscribable.Subscribable<Chunk.Chunk<A>, E, R>, index: number): Subscribable.Subscribable<A, E | NoSuchElementException, R>;
44
48
  <A, E, R>(index: number): (self: Subscribable.Subscribable<Chunk.Chunk<A>, E, R>) => Subscribable.Subscribable<A, E | NoSuchElementException, R>;
45
49
  };
50
+ /**
51
+ * Narrows the focus to the size of a `Chunk`.
52
+ */
53
+ export declare const focusChunkSize: <A, E, R>(self: Subscribable.Subscribable<Chunk.Chunk<A>, E, R>) => Subscribable.Subscribable<number, E, R>;
54
+ /**
55
+ * Narrows the focus to the size of a `Iterable`.
56
+ */
57
+ export declare const focusIterableSize: <A, E, R>(self: Subscribable.Subscribable<Iterable<A>, E, R>) => Subscribable.Subscribable<number, E, R>;
@@ -1,4 +1,4 @@
1
- import { Array, Chunk, Effect, Function, Option, Subscribable } from "effect";
1
+ import { Array, Chunk, Effect, Function, Iterable, Option, Subscribable } from "effect";
2
2
  export * from "effect/Subscribable";
3
3
  /**
4
4
  * Maps over an `Option` value in the `Subscribable`.
@@ -19,6 +19,10 @@ export const focusObjectOn = Function.dual(2, (self, key) => Subscribable.map(se
19
19
  * Narrows the focus to an indexed element of an array.
20
20
  */
21
21
  export const focusArrayAt = Function.dual(2, (self, index) => Subscribable.mapEffect(self, Array.get(index)));
22
+ /**
23
+ * Narrows the focus to the length of an array.
24
+ */
25
+ export const focusArrayLength = (self) => Subscribable.map(self, Array.length);
22
26
  /**
23
27
  * Narrows the focus to an indexed element of a readonly tuple.
24
28
  */
@@ -27,4 +31,12 @@ export const focusTupleAt = Function.dual(2, (self, index) => Subscribable.map(s
27
31
  * Narrows the focus to an indexed element of `Chunk`.
28
32
  */
29
33
  export const focusChunkAt = Function.dual(2, (self, index) => Subscribable.mapEffect(self, Chunk.get(index)));
34
+ /**
35
+ * Narrows the focus to the size of a `Chunk`.
36
+ */
37
+ export const focusChunkSize = (self) => Subscribable.map(self, Chunk.size);
38
+ /**
39
+ * Narrows the focus to the size of a `Iterable`.
40
+ */
41
+ export const focusIterableSize = (self) => Subscribable.map(self, Iterable.size);
30
42
  //# sourceMappingURL=Subscribable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Subscribable.js","sourceRoot":"","sources":["../src/Subscribable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAI7E,cAAc,qBAAqB,CAAA;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAQlB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAuD,EACvD,CAAc,EACmC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE9F;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAQxB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAuD,EACvD,CAAoC,EACkB,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;IACnG,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC;IAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;CAC9C,CAAC,CAAC,CAAC,CAAA;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAQtB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAwC,EACxC,GAAM,EAC+B,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAQrB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAwC,EACxC,KAAa,EACsD,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAEzH;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAQrB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAwC,EACxC,KAAQ,EAC6B,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAE3F;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAQrB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAqD,EACrD,KAAa,EAC8C,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"Subscribable.js","sourceRoot":"","sources":["../src/Subscribable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAIvF,cAAc,qBAAqB,CAAA;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAQlB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAuD,EACvD,CAAc,EACmC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE9F;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAQxB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAuD,EACvD,CAAoC,EACkB,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;IACnG,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC;IAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;CAC9C,CAAC,CAAC,CAAC,CAAA;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAQtB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAwC,EACxC,GAAM,EAC+B,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAQrB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAwC,EACxC,KAAa,EACsD,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAEzH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,IAAwC,EACD,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;AAElF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAQrB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAwC,EACxC,KAAQ,EAC6B,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAE3F;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAQrB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CACjB,IAAqD,EACrD,KAAa,EAC8C,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAEjH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC1B,IAAqD,EACd,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,IAAkD,EACX,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "effect-lens",
3
3
  "description": "An effectful Lens type to easily manage nested state",
4
- "version": "0.1.5",
4
+ "version": "0.2.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "./README.md",