effect-lens 0.2.0 → 2.0.0-beta.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
@@ -4,13 +4,13 @@ A Lens type for [Effect](https://effect.website/) to easily manage nested state.
4
4
 
5
5
  ## Install
6
6
  ```
7
- npm install effect-lens
8
- yarn add effect-lens
9
- bun add effect-lens
7
+ npm install effect-lens@beta effect@4.0.0-beta.85
8
+ yarn add effect-lens@beta effect@4.0.0-beta.85
9
+ bun add effect-lens@beta effect@4.0.0-beta.85
10
10
  ```
11
11
 
12
12
  ## Peer dependencies
13
- - `effect` 3.21+
13
+ - `effect` 4.0.0-beta.85
14
14
 
15
15
 
16
16
  ## Quickstart
@@ -49,7 +49,9 @@ const lens = Lens.fromSubscriptionRef(ref)
49
49
 
50
50
  const value = yield* Lens.get(lens)
51
51
  yield* Effect.forkScoped(Stream.runForEach(lens.changes, Console.log))
52
- yield* Lens.update(lens, Array.replace(1, 1664))
52
+ yield* Lens.updateEffect(lens, values =>
53
+ Effect.fromOption(Array.replace(values, 1, 1664))
54
+ )
53
55
  ```
54
56
 
55
57
  Currently available:
@@ -70,7 +72,7 @@ You can get pretty creative! Here's an example of a Lens that points to a specif
70
72
  const lens = Effect.all([
71
73
  KeyValueStore.KeyValueStore,
72
74
  Effect.succeed("someKey"),
73
- Effect.makeSemaphore(1),
75
+ Semaphore.make(1),
74
76
  ]).pipe(
75
77
  Effect.map(([kv, key, semaphore]) => Lens.make({
76
78
  get: kv.get(key),
@@ -135,19 +137,19 @@ const ref = yield* SubscriptionRef.make<{
135
137
  readonly users: readonly User[]
136
138
  }>({
137
139
  users: [
138
- { name: "Jean Dupont", age: yield* DateTime.make("03/25/1969") },
139
- { name: "Juan Joya Borja", age: yield* DateTime.make("04/05/1956") },
140
- { name: "Benzemonstre", age: yield* DateTime.make("06/12/2000") },
140
+ { name: "Jean Dupont", age: yield* Effect.fromOption(DateTime.make("03/25/1969")) },
141
+ { name: "Juan Joya Borja", age: yield* Effect.fromOption(DateTime.make("04/05/1956")) },
142
+ { name: "Benzemonstre", age: yield* Effect.fromOption(DateTime.make("06/12/2000")) },
141
143
  ]
142
144
  })
143
145
 
144
- // \/ Lens<User, NoSuchElementException, NoSuchElementException, never, never>
146
+ // \/ Lens<User, NoSuchElementError, NoSuchElementError, never, never>
145
147
  const jeanDupontLens = ref.pipe(
146
148
  Lens.fromSubscriptionRef, // Creates a lens that proxies the ref
147
149
  Lens.focusObjectOn("users"), // Creates a focused lens that points to the users field
148
150
  Lens.focusArrayAt(0), // Creates a focused lens that points to the first entry of the user array
149
151
  )
150
- // Reading or writing from this lens can fail with NoSuchElementException
152
+ // Reading or writing from this lens can fail with NoSuchElementError
151
153
  // This is because of Lens.focusArrayAt(0), as reading and writing to an array is an unsafe operation
152
154
 
153
155
  const jeanDupont = yield* Lens.get(jeanDupontLens)
@@ -155,7 +157,7 @@ const jeanDupont = yield* Lens.get(jeanDupontLens)
155
157
  yield* Lens.set(
156
158
  // You can focus even further down
157
159
  Lens.focusObjectOn(jeanDupontLens, "age"),
158
- yield* DateTime.make("03/25/1970"),
160
+ yield* Effect.fromOption(DateTime.make("03/25/1970")),
159
161
  )
160
162
  // Mutations with the parent state are performed immutably by default
161
163
  // unless you use a specific mutable transform such as 'focusObjectOnWritable'
@@ -171,33 +173,33 @@ Currently available:
171
173
  | `focusTupleAt` | Focuses to an indexed entry of a readonly tuple. Replaces the parent tuple immutably when writing to the focused index | Immutable | |
172
174
  | `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 |
173
175
  | `focusChunkAt` | Focuses to an indexed entry of a `Chunk`. Replaces the parent `Chunk` immutably when writing to the focused element | Immutable | |
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` |
176
+ | `focusOption` | Focuses to the value inside an `Option`. Wraps writes back into `Option.some` | Immutable | Reading or writing fails with `NoSuchElementError` when the parent option is `None` |
175
177
 
176
178
  #### Manually
177
179
  You can create focused Lenses by composing them manually using `map`, `mapEffect` and `unwrap`:
178
180
  ```typescript
179
181
  const ref = yield* SubscriptionRef.make<readonly User[]>([
180
- { name: "Jean Dupont", age: yield* DateTime.make("03/25/1969") },
181
- { name: "Juan Joya Borja", age: yield* DateTime.make("04/05/1956") },
182
- { name: "Benzemonstre", age: yield* DateTime.make("06/12/2000") },
182
+ { name: "Jean Dupont", age: yield* Effect.fromOption(DateTime.make("03/25/1969")) },
183
+ { name: "Juan Joya Borja", age: yield* Effect.fromOption(DateTime.make("04/05/1956")) },
184
+ { name: "Benzemonstre", age: yield* Effect.fromOption(DateTime.make("06/12/2000")) },
183
185
  ])
184
186
 
185
- // \/ Lens<User, NoSuchElementException, NoSuchElementException, never, never>
187
+ // \/ Lens<User, NoSuchElementError, NoSuchElementError, never, never>
186
188
  const benzemonstreLens = ref.pipe(
187
189
  Lens.fromSubscriptionRef,
188
190
 
189
191
  // Manually focus
190
192
  Lens.mapEffect(
191
193
  // Getter:
192
- Array.get(2),
194
+ a => Effect.fromOption(Array.get(a, 2)),
193
195
  // Setter:
194
- (a, b) => Array.replaceOption(a, 2, b),
196
+ (a, b) => Effect.fromOption(Array.replace(a, 2, b)),
195
197
  // ^ The current Lens value (readonly User[])
196
198
  // ^ The new focused value to push (User)
197
199
  ),
198
200
  )
199
- // Both Array.get and Array.replaceOption return an Option
200
- // When evaluated by the lens, Option<A> becomes Effect<A, NoSuchElementException>
201
+ // Both Array.get and Array.replace return an Option, which Effect.fromOption
202
+ // converts into Effect<A, NoSuchElementError>
201
203
  // As you can see, this is automatically tracked by the Lens type
202
204
  ```
203
205
 
@@ -240,7 +242,7 @@ const nameLens = lens.pipe(
240
242
 
241
243
  ### Subscribable
242
244
 
243
- Lens implements both Effect's `Subscribable` and `Readable`, which you can use as a constraint to allow some parts of your app to only read and subscribe to the Lenses you provide them:
245
+ Effect 4 no longer provides `Subscribable` and `Readable`. This library provides its own `Subscribable` interface, which you can use as a constraint to allow some parts of your app to only read and subscribe to the Lenses you provide them:
244
246
  ```typescript
245
247
  const ref = yield* SubscriptionRef.make<{
246
248
  readonly users: readonly User[]
@@ -263,13 +265,13 @@ yield* someFunctionThatShouldOnlyHaveReadonlyAccessToTheState(lens)
263
265
  ```
264
266
 
265
267
  #### Focusing
266
- This library re-exports Effect's `Subscribable` module and adds a few transforms to narrow the focus of `Subscribable`'s, same as Lenses:
268
+ This library provides a `Subscribable` module with value and error transforms, recovery (`catch`, `catchCause`, `orElse`, `orElseSucceed`, and `retry`), and transforms to narrow the focus of `Subscribable`'s, same as Lenses:
267
269
  ```typescript
268
270
  import { Subscribable } from "effect-lens"
269
271
 
270
272
  declare const sub: Subscribable.Subscribable<readonly { name: string }[], never, never>
271
273
 
272
- // \/ Subscribable.Subscribable<string, NoSuchElementException, never>
274
+ // \/ Subscribable.Subscribable<string, NoSuchElementError, never>
273
275
  const nameSub = sub.pipe(
274
276
  Subscribable.focusArrayAt(1),
275
277
  Subscribable.focusObjectOn("name"),
@@ -286,13 +288,3 @@ Currently available:
286
288
  | `focusChunkAt` | Focuses to an indexed entry of a `Chunk` |
287
289
  | `focusChunkSize` | Focuses to the size of a `Chunk` |
288
290
  | `focusIterableSize` | Focuses to the size of an iterable |
289
-
290
-
291
- ## Todo
292
-
293
- This library is already ready to use! However, there is always more to do...
294
- - Finish those docs
295
- - Provide an API reference
296
- - Add new adapters for various data source types
297
- - Add new focus transforms
298
- - Provide a preview version for Effect 4 beta
package/dist/Lens.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { Chunk, type Context, Effect, Option, Pipeable, PubSub, Readable, Ref, Stream, type SubscriptionRef, type SynchronizedRef } from "effect";
2
- import type { NoSuchElementException } from "effect/Cause";
1
+ import { type Cause, Chunk, type Context, Effect, Option, Pipeable, Ref, Semaphore, Stream, SubscriptionRef, SynchronizedRef } from "effect";
3
2
  import * as Subscribable from "./Subscribable.js";
4
3
  export declare const LensTypeId: unique symbol;
5
4
  export type LensTypeId = typeof LensTypeId;
@@ -13,6 +12,7 @@ export type LensTypeId = typeof LensTypeId;
13
12
  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
13
  readonly [LensTypeId]: LensTypeId;
15
14
  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>;
15
+ readonly modifySomeEffect: <B, E1 = never, R1 = never>(f: (a: A) => Effect.Effect<readonly [B, Option.Option<A>], E1, R1>) => Effect.Effect<B, ER | EW | E1, RR | RW | R1>;
16
16
  }
17
17
  /**
18
18
  * Checks whether a value is a `Lens`.
@@ -29,10 +29,8 @@ export declare namespace LensImpl {
29
29
  <A1, E1, R1>(self: Effect.Effect<A1, E1, R1>): Effect.Effect<A1, E1, R1>;
30
30
  }
31
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> {
34
- readonly [Readable.TypeId]: Readable.TypeId;
35
- readonly [Subscribable.TypeId]: Subscribable.TypeId;
32
+ 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 Pipeable.Class implements Lens<A, ER, EW, RR, RW> {
33
+ readonly [Subscribable.SubscribableTypeId]: Subscribable.SubscribableTypeId;
36
34
  readonly [LensTypeId]: LensTypeId;
37
35
  readonly [LensImplTypeId]: LensImplTypeId;
38
36
  abstract readonly resolve: Effect.Effect<LensImpl.Resolved<A, EW, RW>, ER, RR>;
@@ -40,9 +38,11 @@ export declare abstract class LensImpl<in out A, in out ER = never, in out EW =
40
38
  abstract readonly lock: Effect.Effect<LensImpl.Lock, EW, RW>;
41
39
  get get(): Effect.Effect<A, ER, RR>;
42
40
  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>;
41
+ modifySomeEffect<B, E1 = never, R1 = never>(f: (a: A) => Effect.Effect<readonly [B, Option.Option<A>], E1, R1>): Effect.Effect<B, ER | EW | E1, RR | RW | R1>;
43
42
  }
44
43
  export declare const isLensImpl: (u: unknown) => u is LensImpl<unknown, unknown, unknown, unknown, unknown>;
45
44
  export declare const asLensImpl: <A, ER, EW, RR, RW>(lens: Lens<A, ER, EW, RR, RW>) => LensImpl<A, ER, EW, RR, RW>;
45
+ export declare const asSubscribable: <A, ER, EW, RR, RW>(lens: Lens<A, ER, EW, RR, RW>) => Subscribable.Subscribable<A, ER, RR>;
46
46
  export declare namespace LensLazyImpl {
47
47
  interface Source<in out A, in out ER = never, in out EW = never, in out RR = never, in out RW = never> {
48
48
  readonly get: Effect.Effect<A, ER, RR>;
@@ -66,7 +66,7 @@ export declare class UnwrappedLensImpl<in out A, in out ER, in out EW, in out RR
66
66
  readonly effect: Effect.Effect<Lens<A, ER, EW, RR, RW>, E1, R1>;
67
67
  constructor(effect: Effect.Effect<Lens<A, ER, EW, RR, RW>, E1, R1>);
68
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>;
69
+ get changes(): Stream.Stream<A, ER | E1, RR | Exclude<R1, import("effect/Scope").Scope>>;
70
70
  get lock(): Effect.Effect<LensImpl.Lock, EW | E1, RW | R1>;
71
71
  }
72
72
  /**
@@ -75,8 +75,8 @@ export declare class UnwrappedLensImpl<in out A, in out ER, in out EW, in out RR
75
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
76
  export declare class RefLensImpl<in out A> extends LensImpl<A, never, never, never, never> {
77
77
  readonly ref: Ref.Ref<A>;
78
- readonly semaphore: Effect.Semaphore;
79
- constructor(ref: Ref.Ref<A>, semaphore: Effect.Semaphore);
78
+ readonly semaphore: Semaphore.Semaphore;
79
+ constructor(ref: Ref.Ref<A>, semaphore: Semaphore.Semaphore);
80
80
  get resolve(): Effect.Effect<LensImpl.Resolved<A>, never, never>;
81
81
  get changes(): Stream.Stream<A, never, never>;
82
82
  get lock(): Effect.Effect<(<A_1, E, R>(self: Effect.Effect<A_1, E, R>) => Effect.Effect<A_1, E, R>), never, never>;
@@ -88,18 +88,12 @@ export declare class RefLensImpl<in out A> extends LensImpl<A, never, never, nev
88
88
  * This means its `changes` stream will only emit the current value once when evaluated and nothing else.
89
89
  */
90
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
91
  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>);
92
+ readonly ref: SynchronizedRef.SynchronizedRef<A>;
93
+ constructor(ref: SynchronizedRef.SynchronizedRef<A>);
100
94
  get resolve(): Effect.Effect<LensImpl.Resolved<A>, never, never>;
101
95
  get changes(): Stream.Stream<A, never, never>;
102
- get lock(): Effect.Effect<LensImpl.Lock, never, never>;
96
+ get lock(): Effect.Effect<(<A_1, E, R>(self: Effect.Effect<A_1, E, R>) => Effect.Effect<A_1, E, R>), never, never>;
103
97
  }
104
98
  /**
105
99
  * Creates a `Lens` that proxies a `SynchronizedRef`.
@@ -108,16 +102,9 @@ export declare class SynchronizedRefLensImpl<in out A> extends LensImpl<A, never
108
102
  * This means its `changes` stream will only emit the current value once when evaluated and nothing else.
109
103
  */
110
104
  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
105
  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>);
106
+ readonly ref: SubscriptionRef.SubscriptionRef<A>;
107
+ constructor(ref: SubscriptionRef.SubscriptionRef<A>);
121
108
  get resolve(): Effect.Effect<LensImpl.Resolved<A>, never, never>;
122
109
  get changes(): Stream.Stream<A, never, never>;
123
110
  get lock(): Effect.Effect<(<A_1, E, R>(self: Effect.Effect<A_1, E, R>) => Effect.Effect<A_1, E, R>), never, never>;
@@ -145,22 +132,22 @@ export declare class DerivedLensImpl<in out A, in out B, in out ER = never, in o
145
132
  * Derives a new `Lens` by linking a step to an existing parent lens.
146
133
  */
147
134
  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
135
  <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>;
136
+ <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>;
150
137
  };
151
138
  /**
152
139
  * Derives a new `Lens` by applying synchronous getters and setters over the focused value.
153
140
  */
154
141
  export declare const map: {
155
- <A, ER, EW, RR, RW, B>(self: Lens<A, ER, EW, RR, RW>, get: (a: NoInfer<A>) => B, set: (a: NoInfer<A>, b: B) => NoInfer<A>): Lens<B, ER, EW, RR, RW>;
156
142
  <A, ER, EW, RR, RW, B>(get: (a: NoInfer<A>) => B, set: (a: NoInfer<A>, b: B) => NoInfer<A>): (self: Lens<A, ER, EW, RR, RW>) => Lens<B, ER, EW, RR, RW>;
143
+ <A, ER, EW, RR, RW, B>(self: Lens<A, ER, EW, RR, RW>, get: (a: NoInfer<A>) => B, set: (a: NoInfer<A>, b: B) => NoInfer<A>): Lens<B, ER, EW, RR, RW>;
157
144
  };
158
145
  /**
159
146
  * Derives a new `Lens` by applying effectful getters and setters over the focused value.
160
147
  */
161
148
  export declare const mapEffect: {
162
- <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(self: Lens<A, ER, EW, RR, RW>, get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>, set: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>): Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet>;
163
149
  <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>, set: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>): (self: Lens<A, ER, EW, RR, RW>) => Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet>;
150
+ <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(self: Lens<A, ER, EW, RR, RW>, get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>, set: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>): Lens<B, ER | EGet, EW | ESet, RR | RGet, RW | RSet>;
164
151
  };
165
152
  /**
166
153
  * Derives a new `Lens` by applying synchronous getters and setters over the value inside an `Option`.
@@ -170,8 +157,8 @@ export declare const mapEffect: {
170
157
  * - If the `Option` is `None`, it remains `None`
171
158
  */
172
159
  export declare const mapOption: {
173
- <A, ER, EW, RR, RW, B>(self: Lens<Option.Option<A>, ER, EW, RR, RW>, get: (a: NoInfer<A>) => B, set: (a: NoInfer<A>, b: B) => NoInfer<A>): Lens<Option.Option<B>, ER, EW, RR, RW>;
174
160
  <A, ER, EW, RR, RW, B>(get: (a: NoInfer<A>) => B, set: (a: NoInfer<A>, b: B) => NoInfer<A>): (self: Lens<Option.Option<A>, ER, EW, RR, RW>) => Lens<Option.Option<B>, ER, EW, RR, RW>;
161
+ <A, ER, EW, RR, RW, B>(self: Lens<Option.Option<A>, ER, EW, RR, RW>, get: (a: NoInfer<A>) => B, set: (a: NoInfer<A>, b: B) => NoInfer<A>): Lens<Option.Option<B>, ER, EW, RR, RW>;
175
162
  };
176
163
  /**
177
164
  * Derives a new `Lens` by applying effectful getters and setters over the value inside an `Option`.
@@ -181,15 +168,15 @@ export declare const mapOption: {
181
168
  * - If the `Option` is `None`, it remains `None`
182
169
  */
183
170
  export declare const mapOptionEffect: {
184
- <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(self: Lens<Option.Option<A>, ER, EW, RR, RW>, get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>, set: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>): Lens<Option.Option<B>, ER | EGet, EW | ESet, RR | RGet, RW | RSet>;
185
171
  <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>, set: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>): (self: Lens<Option.Option<A>, ER, EW, RR, RW>) => Lens<Option.Option<B>, ER | EGet, EW | ESet, RR | RGet, RW | RSet>;
172
+ <A, ER, EW, RR, RW, B, EGet = never, RGet = never, ESet = never, RSet = never>(self: Lens<Option.Option<A>, ER, EW, RR, RW>, get: (a: NoInfer<A>) => Effect.Effect<B, EGet, RGet>, set: (a: NoInfer<A>, b: B) => Effect.Effect<NoInfer<A>, ESet, RSet>): Lens<Option.Option<B>, ER | EGet, EW | ESet, RR | RGet, RW | RSet>;
186
173
  };
187
174
  /**
188
175
  * Allows transforming only the `changes` stream of a `Lens` while keeping the focus type intact.
189
176
  */
190
177
  export declare const mapStream: {
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>;
192
178
  <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>;
179
+ <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>;
193
180
  };
194
181
  /**
195
182
  * Transforms read errors of a `Lens`.
@@ -197,8 +184,8 @@ export declare const mapStream: {
197
184
  * Applies to `get` and `changes` while leaving `modify` unchanged.
198
185
  */
199
186
  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
187
  <A, ER, EW, RR, RW, E2>(f: (error: NoInfer<ER>) => E2): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, E2, EW, RR, RW>;
188
+ <A, ER, EW, RR, RW, E2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<ER>) => E2): Lens<A, E2, EW, RR, RW>;
202
189
  };
203
190
  /**
204
191
  * Transforms modify errors of a `Lens`.
@@ -207,8 +194,8 @@ export declare const mapErrorRead: {
207
194
  * user-supplied callback unchanged.
208
195
  */
209
196
  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
197
  <A, ER, EW, RR, RW, E2>(f: (error: NoInfer<EW>) => E2): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER, E2, RR, RW>;
198
+ <A, ER, EW, RR, RW, E2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<EW>) => E2): Lens<A, ER, E2, RR, RW>;
212
199
  };
213
200
  /**
214
201
  * Transforms all errors of a `Lens`.
@@ -217,8 +204,8 @@ export declare const mapErrorWrite: {
217
204
  * failures from the user-supplied callback unchanged.
218
205
  */
219
206
  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
207
  <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>;
208
+ <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>;
222
209
  };
223
210
  /**
224
211
  * Runs an effect when read failures occur.
@@ -226,8 +213,8 @@ export declare const mapError: {
226
213
  * Applies to `get` and `changes` while leaving `modify` unchanged.
227
214
  */
228
215
  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>;
216
+ <A, ER, EW, RR, RW, B, E2, R2>(f: (error: NoInfer<ER>) => Effect.Effect<B, E2, R2>): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER | E2, EW, RR | R2, RW>;
217
+ <A, ER, EW, RR, RW, B, E2, R2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<ER>) => Effect.Effect<B, E2, R2>): Lens<A, ER | E2, EW, RR | R2, RW>;
231
218
  };
232
219
  /**
233
220
  * Runs an effect when modify failures occur.
@@ -236,8 +223,8 @@ export declare const tapErrorRead: {
236
223
  * user-supplied callback unchanged.
237
224
  */
238
225
  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>;
226
+ <A, ER, EW, RR, RW, B, E2, R2>(f: (error: NoInfer<EW>) => Effect.Effect<B, E2, R2>): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER, EW | E2, RR, RW | R2>;
227
+ <A, ER, EW, RR, RW, B, E2, R2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<EW>) => Effect.Effect<B, E2, R2>): Lens<A, ER, EW | E2, RR, RW | R2>;
241
228
  };
242
229
  /**
243
230
  * Runs an effect when any `Lens` failure occurs.
@@ -246,32 +233,32 @@ export declare const tapErrorWrite: {
246
233
  * failures from the user-supplied callback unchanged.
247
234
  */
248
235
  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>;
236
+ <A, ER, EW, RR, RW, B, E2, R2>(f: (error: NoInfer<ER | EW>) => Effect.Effect<B, E2, R2>): (self: Lens<A, ER, EW, RR, RW>) => Lens<A, ER | E2, EW | E2, RR | R2, RW | R2>;
237
+ <A, ER, EW, RR, RW, B, E2, R2>(self: Lens<A, ER, EW, RR, RW>, f: (error: NoInfer<ER | EW>) => Effect.Effect<B, E2, R2>): Lens<A, ER | E2, EW | E2, RR | R2, RW | R2>;
251
238
  };
252
239
  /**
253
240
  * Provides a `Context` to a `Lens`, removing it from both the read and write environments.
254
241
  */
255
242
  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
243
  <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>>;
244
+ <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>>;
258
245
  };
259
246
  /**
260
247
  * Provides a single service to a `Lens`, removing it from both the read and write environments.
261
248
  *
262
249
  * 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.
250
+ * `Context.Key` and you already have the concrete service value.
264
251
  */
265
252
  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>>;
253
+ <I, S>(tag: Context.Key<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>>;
254
+ <A, ER, EW, RR, RW, I, S>(self: Lens<A, ER, EW, RR, RW>, tag: Context.Key<I, S>, service: NoInfer<S>): Lens<A, ER, EW, Exclude<RR, I>, Exclude<RW, I>>;
268
255
  };
269
256
  /**
270
257
  * Narrows the focus to a field of an object. Replaces the object in an immutable fashion when written to.
271
258
  */
272
259
  export declare const focusObjectOn: {
273
- <A extends object, ER, EW, RR, RW, K extends keyof A>(self: Lens<A, ER, EW, RR, RW>, key: K): Lens<A[K], ER, EW, RR, RW>;
274
260
  <A extends object, ER, EW, RR, RW, K extends keyof A>(key: K): (self: Lens<A, ER, EW, RR, RW>) => Lens<A[K], ER, EW, RR, RW>;
261
+ <A extends object, ER, EW, RR, RW, K extends keyof A>(self: Lens<A, ER, EW, RR, RW>, key: K): Lens<A[K], ER, EW, RR, RW>;
275
262
  };
276
263
  export declare namespace focusObjectOnWritable {
277
264
  type WritableKeys<T> = {
@@ -287,57 +274,85 @@ export declare namespace focusObjectOnWritable {
287
274
  * Narrows the focus to a writable field of an object. Mutates the object in place when written to.
288
275
  */
289
276
  export declare const focusObjectOnWritable: {
290
- <A extends object, ER, EW, RR, RW, K extends focusObjectOnWritable.WritableKeys<A>>(self: Lens<A, ER, EW, RR, RW>, key: K): Lens<A[K], ER, EW, RR, RW>;
291
277
  <A extends object, ER, EW, RR, RW, K extends focusObjectOnWritable.WritableKeys<A>>(key: K): (self: Lens<A, ER, EW, RR, RW>) => Lens<A[K], ER, EW, RR, RW>;
278
+ <A extends object, ER, EW, RR, RW, K extends focusObjectOnWritable.WritableKeys<A>>(self: Lens<A, ER, EW, RR, RW>, key: K): Lens<A[K], ER, EW, RR, RW>;
292
279
  };
293
280
  /**
294
281
  * Narrows the focus to an indexed element of an array. Replaces the array in an immutable fashion when written to.
295
282
  */
296
283
  export declare const focusArrayAt: {
297
- <A extends readonly any[], ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, index: number): Lens<A[number], ER | NoSuchElementException, EW | NoSuchElementException, RR, RW>;
298
- <A extends readonly any[], ER, EW, RR, RW>(index: number): (self: Lens<A, ER, EW, RR, RW>) => Lens<A[number], ER | NoSuchElementException, EW | NoSuchElementException, RR, RW>;
284
+ <A extends readonly any[], ER, EW, RR, RW>(index: number): (self: Lens<A, ER, EW, RR, RW>) => Lens<A[number], ER | Cause.NoSuchElementError, EW | Cause.NoSuchElementError, RR, RW>;
285
+ <A extends readonly any[], ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, index: number): Lens<A[number], ER | Cause.NoSuchElementError, EW | Cause.NoSuchElementError, RR, RW>;
299
286
  };
300
287
  /**
301
288
  * Narrows the focus to an indexed element of a mutable array. Mutates the array in place when written to.
302
289
  */
303
290
  export declare const focusMutableArrayAt: {
304
- <A, ER, EW, RR, RW>(self: Lens<A[], ER, EW, RR, RW>, index: number): Lens<A, ER | NoSuchElementException, EW | NoSuchElementException, RR, RW>;
305
- <A, ER, EW, RR, RW>(index: number): (self: Lens<A[], ER, EW, RR, RW>) => Lens<A, ER | NoSuchElementException, EW | NoSuchElementException, RR, RW>;
291
+ <A, ER, EW, RR, RW>(index: number): (self: Lens<A[], ER, EW, RR, RW>) => Lens<A, ER | Cause.NoSuchElementError, EW | Cause.NoSuchElementError, RR, RW>;
292
+ <A, ER, EW, RR, RW>(self: Lens<A[], ER, EW, RR, RW>, index: number): Lens<A, ER | Cause.NoSuchElementError, EW | Cause.NoSuchElementError, RR, RW>;
306
293
  };
307
294
  /**
308
295
  * Narrows the focus to an indexed element of a readonly tuple. Replaces the tuple in an immutable fashion when written to.
309
296
  */
310
297
  export declare const focusTupleAt: {
311
- <T extends readonly [any, ...any[]], ER, EW, RR, RW, I extends number>(self: Lens<T, ER, EW, RR, RW>, index: I): Lens<T[I], ER, EW, RR, RW>;
312
298
  <T extends readonly [any, ...any[]], ER, EW, RR, RW, I extends number>(index: I): (self: Lens<T, ER, EW, RR, RW>) => Lens<T[I], ER, EW, RR, RW>;
299
+ <T extends readonly [any, ...any[]], ER, EW, RR, RW, I extends number>(self: Lens<T, ER, EW, RR, RW>, index: I): Lens<T[I], ER, EW, RR, RW>;
313
300
  };
314
301
  /**
315
302
  * Narrows the focus to an indexed element of a mutable tuple. Mutates the tuple in place when written to.
316
303
  */
317
304
  export declare const focusMutableTupleAt: {
318
- <T extends [any, ...any[]], ER, EW, RR, RW, I extends number>(self: Lens<T, ER, EW, RR, RW>, index: I): Lens<T[I], ER, EW, RR, RW>;
319
305
  <T extends [any, ...any[]], ER, EW, RR, RW, I extends number>(index: I): (self: Lens<T, ER, EW, RR, RW>) => Lens<T[I], ER, EW, RR, RW>;
306
+ <T extends [any, ...any[]], ER, EW, RR, RW, I extends number>(self: Lens<T, ER, EW, RR, RW>, index: I): Lens<T[I], ER, EW, RR, RW>;
320
307
  };
321
308
  /**
322
309
  * Narrows the focus to an indexed element of `Chunk`. Replaces the `Chunk` in an immutable fashion when written to.
323
310
  */
324
311
  export declare const focusChunkAt: {
325
- <A, ER, EW, RR, RW>(self: Lens<Chunk.Chunk<A>, ER, EW, RR, RW>, index: number): Lens<A, ER | NoSuchElementException, EW, RR, RW>;
326
- <A, ER, EW, RR, RW>(index: number): (self: Lens<Chunk.Chunk<A>, ER, EW, RR, RW>) => Lens<A, ER | NoSuchElementException, EW, RR, RW>;
312
+ <A, ER, EW, RR, RW>(index: number): (self: Lens<Chunk.Chunk<A>, ER, EW, RR, RW>) => Lens<A, ER | Cause.NoSuchElementError, EW, RR, RW>;
313
+ <A, ER, EW, RR, RW>(self: Lens<Chunk.Chunk<A>, ER, EW, RR, RW>, index: number): Lens<A, ER | Cause.NoSuchElementError, EW, RR, RW>;
327
314
  };
328
315
  /**
329
316
  * Narrows the focus to the value inside an `Option`.
330
317
  *
331
- * Reading or writing through this lens fails with `NoSuchElementException` when the parent option is `None`.
318
+ * Reading or writing through this lens fails with `NoSuchElementError` when the parent option is `None`.
332
319
  * Writing wraps the new focused value back into `Option.some`.
333
320
  */
334
321
  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>;
322
+ <A, ER, EW, RR, RW>(self: Lens<Option.Option<A>, ER, EW, RR, RW>): Lens<A, ER | Cause.NoSuchElementError, EW | Cause.NoSuchElementError, RR, RW>;
336
323
  };
337
324
  /**
338
325
  * Reads the current value from a `Lens`.
339
326
  */
340
327
  export declare const get: <A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER, RR>;
328
+ /**
329
+ * Atomically modifies the value of a `Lens` and returns a computed result.
330
+ */
331
+ export declare const modify: {
332
+ <A, B>(f: (a: A) => readonly [B, A]): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<B, ER | EW, RR | RW>;
333
+ <A, ER, EW, RR, RW, B>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => readonly [B, A]): Effect.Effect<B, ER | EW, RR | RW>;
334
+ };
335
+ /**
336
+ * Atomically modifies the value of a `Lens` with an effect and returns a computed result.
337
+ */
338
+ export declare const modifyEffect: {
339
+ <A, B, E, R>(f: (a: A) => Effect.Effect<readonly [B, A], E, R>): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<B, ER | EW | E, RR | RW | R>;
340
+ <A, ER, EW, RR, RW, B, E, R>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => Effect.Effect<readonly [B, A], E, R>): Effect.Effect<B, ER | EW | E, RR | RW | R>;
341
+ };
342
+ /**
343
+ * Conditionally modifies a `Lens` without committing when the next value is `None`.
344
+ */
345
+ export declare const modifySome: {
346
+ <B, A>(f: (a: NoInfer<A>) => readonly [B, Option.Option<NoInfer<A>>]): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<B, ER | EW, RR | RW>;
347
+ <A, ER, EW, RR, RW, B>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => readonly [B, Option.Option<A>]): Effect.Effect<B, ER | EW, RR | RW>;
348
+ };
349
+ /**
350
+ * Conditionally modifies a `Lens` with an effect without committing when the next value is `None`.
351
+ */
352
+ export declare const modifySomeEffect: {
353
+ <B, A, E = never, R = never>(f: (a: NoInfer<A>) => Effect.Effect<readonly [B, Option.Option<NoInfer<A>>], E, R>): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<B, ER | EW | E, RR | RW | R>;
354
+ <A, ER, EW, RR, RW, B, E = never, R = never>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => Effect.Effect<readonly [B, Option.Option<A>], E, R>): Effect.Effect<B, ER | EW | E, RR | RW | R>;
355
+ };
341
356
  /**
342
357
  * Sets the value of a `Lens`.
343
358
  */
@@ -380,6 +395,20 @@ export declare const getAndUpdateEffect: {
380
395
  <A, ER, EW, RR, RW, E, R>(f: (a: A) => Effect.Effect<A, E, R>): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW | E, RR | RW | R>;
381
396
  <A, ER, EW, RR, RW, E, R>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => Effect.Effect<A, E, R>): Effect.Effect<A, ER | EW | E, RR | RW | R>;
382
397
  };
398
+ /**
399
+ * Conditionally updates a `Lens` and returns the previous value.
400
+ */
401
+ export declare const getAndUpdateSome: {
402
+ <A>(pf: (a: NoInfer<A>) => Option.Option<NoInfer<A>>): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW, RR | RW>;
403
+ <A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, pf: (a: A) => Option.Option<A>): Effect.Effect<A, ER | EW, RR | RW>;
404
+ };
405
+ /**
406
+ * Conditionally updates a `Lens` with an effect and returns the previous value.
407
+ */
408
+ export declare const getAndUpdateSomeEffect: {
409
+ <A, E = never, R = never>(pf: (a: NoInfer<A>) => Effect.Effect<Option.Option<NoInfer<A>>, E, R>): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW | E, RR | RW | R>;
410
+ <A, ER, EW, RR, RW, E = never, R = never>(self: Lens<A, ER, EW, RR, RW>, pf: (a: A) => Effect.Effect<Option.Option<A>, E, R>): Effect.Effect<A, ER | EW | E, RR | RW | R>;
411
+ };
383
412
  /**
384
413
  * Sets the value of a `Lens` and returns the new value.
385
414
  */
@@ -401,4 +430,31 @@ export declare const updateAndGetEffect: {
401
430
  <A, ER, EW, RR, RW, E, R>(f: (a: A) => Effect.Effect<A, E, R>): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW | E, RR | RW | R>;
402
431
  <A, ER, EW, RR, RW, E, R>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => Effect.Effect<A, E, R>): Effect.Effect<A, ER | EW | E, RR | RW | R>;
403
432
  };
404
- export {};
433
+ /**
434
+ * Conditionally updates the value of a `Lens`.
435
+ */
436
+ export declare const updateSome: {
437
+ <A>(pf: (a: NoInfer<A>) => Option.Option<NoInfer<A>>): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<void, ER | EW, RR | RW>;
438
+ <A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, pf: (a: A) => Option.Option<A>): Effect.Effect<void, ER | EW, RR | RW>;
439
+ };
440
+ /**
441
+ * Conditionally updates the value of a `Lens` with an effect.
442
+ */
443
+ export declare const updateSomeEffect: {
444
+ <A, E = never, R = never>(pf: (a: NoInfer<A>) => Effect.Effect<Option.Option<NoInfer<A>>, E, R>): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<void, ER | EW | E, RR | RW | R>;
445
+ <A, ER, EW, RR, RW, E = never, R = never>(self: Lens<A, ER, EW, RR, RW>, pf: (a: A) => Effect.Effect<Option.Option<A>, E, R>): Effect.Effect<void, ER | EW | E, RR | RW | R>;
446
+ };
447
+ /**
448
+ * Conditionally updates a `Lens` and returns the resulting value.
449
+ */
450
+ export declare const updateSomeAndGet: {
451
+ <A>(pf: (a: NoInfer<A>) => Option.Option<NoInfer<A>>): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW, RR | RW>;
452
+ <A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, pf: (a: A) => Option.Option<A>): Effect.Effect<A, ER | EW, RR | RW>;
453
+ };
454
+ /**
455
+ * Conditionally updates a `Lens` with an effect and returns the resulting value.
456
+ */
457
+ export declare const updateSomeAndGetEffect: {
458
+ <A, E = never, R = never>(pf: (a: NoInfer<A>) => Effect.Effect<Option.Option<NoInfer<A>>, E, R>): <ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW | E, RR | RW | R>;
459
+ <A, ER, EW, RR, RW, E = never, R = never>(self: Lens<A, ER, EW, RR, RW>, pf: (a: A) => Effect.Effect<Option.Option<A>, E, R>): Effect.Effect<A, ER | EW | E, RR | RW | R>;
460
+ };
package/dist/Lens.js CHANGED
@@ -1,20 +1,25 @@
1
- import { Array, Chunk, Effect, Function, identity, Option, Pipeable, Predicate, PubSub, Readable, Ref, Stream } from "effect";
1
+ import { Array, Chunk, Effect, Function, identity, Option, Pipeable, Predicate, PubSub, Ref, Semaphore, Stream, SubscriptionRef, SynchronizedRef, } from "effect";
2
2
  import * as Subscribable from "./Subscribable.js";
3
- export const LensTypeId = Symbol.for("@effect-fc/Lens/Lens");
3
+ export const LensTypeId = Symbol.for("@effect-fc/Lens/v4/Lens");
4
4
  /**
5
5
  * Checks whether a value is a `Lens`.
6
6
  */
7
7
  export const isLens = (u) => Predicate.hasProperty(u, LensTypeId);
8
- export const LensImplTypeId = Symbol.for("@effect-fc/Lens/LensImpl");
9
- export class LensImpl extends Pipeable.Class() {
10
- [Readable.TypeId] = Readable.TypeId;
11
- [Subscribable.TypeId] = Subscribable.TypeId;
8
+ export const LensImplTypeId = Symbol.for("@effect-fc/Lens/v4/LensImpl");
9
+ export class LensImpl extends Pipeable.Class {
10
+ [Subscribable.SubscribableTypeId] = Subscribable.SubscribableTypeId;
12
11
  [LensTypeId] = LensTypeId;
13
12
  [LensImplTypeId] = LensImplTypeId;
14
13
  get get() { return Effect.map(this.resolve, resolved => resolved.value); }
15
14
  modifyEffect(f) {
16
15
  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
16
  }
17
+ modifySomeEffect(f) {
18
+ return Effect.flatMap(this.lock, lock => lock(Effect.flatMap(this.resolve, resolved => Effect.flatMap(f(resolved.value), ([result, next]) => Option.match(next, {
19
+ onSome: value => Effect.as(resolved.commit(Effect.succeed(value)), result),
20
+ onNone: () => Effect.succeed(result),
21
+ })))));
22
+ }
18
23
  }
19
24
  export const isLensImpl = (u) => Predicate.hasProperty(u, LensImplTypeId);
20
25
  export const asLensImpl = (lens) => {
@@ -22,6 +27,7 @@ export const asLensImpl = (lens) => {
22
27
  throw new Error("Not a 'LensImpl'");
23
28
  return lens;
24
29
  };
30
+ export const asSubscribable = (lens) => lens;
25
31
  export class LensLazyImpl extends LensImpl {
26
32
  source;
27
33
  constructor(source) {
@@ -75,7 +81,7 @@ export class RefLensImpl extends LensImpl {
75
81
  }));
76
82
  }
77
83
  get changes() { return Stream.unwrap(Effect.map(Ref.get(this.ref), Stream.make)); }
78
- get lock() { return Effect.succeed(this.semaphore.withPermits(1)); }
84
+ get lock() { return Effect.succeed(this.semaphore.withPermit); }
79
85
  }
80
86
  /**
81
87
  * Creates a `Lens` that proxies a `Ref`.
@@ -83,9 +89,7 @@ export class RefLensImpl extends LensImpl {
83
89
  * Note: since `Ref` does not provide any kind of reactivity mechanism, the produced `Lens` will be non-reactive.
84
90
  * This means its `changes` stream will only emit the current value once when evaluated and nothing else.
85
91
  */
86
- export const fromRef = Effect.fnUntraced(function* (ref) {
87
- return new RefLensImpl(ref, yield* Effect.makeSemaphore(1));
88
- });
92
+ export const fromRef = (ref) => Effect.map(Semaphore.make(1), semaphore => new RefLensImpl(ref, semaphore));
89
93
  export class SynchronizedRefLensImpl extends LensImpl {
90
94
  ref;
91
95
  constructor(ref) {
@@ -93,13 +97,13 @@ export class SynchronizedRefLensImpl extends LensImpl {
93
97
  this.ref = ref;
94
98
  }
95
99
  get resolve() {
96
- return Effect.map(Ref.get(this.ref.ref), value => ({
100
+ return Effect.map(SynchronizedRef.get(this.ref), value => ({
97
101
  value,
98
- commit: next => Effect.flatMap(next, value => Ref.set(this.ref.ref, value)),
102
+ commit: next => Effect.flatMap(next, value => Ref.set(this.ref.backing, value)),
99
103
  }));
100
104
  }
101
- get changes() { return Stream.unwrap(Effect.map(Ref.get(this.ref.ref), Stream.make)); }
102
- get lock() { return Effect.succeed(this.ref.withLock); }
105
+ get changes() { return Stream.unwrap(Effect.map(SynchronizedRef.get(this.ref), Stream.make)); }
106
+ get lock() { return Effect.succeed(this.ref.semaphore.withPermit); }
103
107
  }
104
108
  /**
105
109
  * Creates a `Lens` that proxies a `SynchronizedRef`.
@@ -115,13 +119,16 @@ export class SubscriptionRefLensImpl extends LensImpl {
115
119
  this.ref = ref;
116
120
  }
117
121
  get resolve() {
118
- return Effect.map(this.ref.get, value => ({
122
+ return Effect.map(SubscriptionRef.get(this.ref), value => ({
119
123
  value,
120
- commit: next => Effect.flatMap(next, value => Effect.zipLeft(Ref.set(this.ref.ref, value), PubSub.publish(this.ref.pubsub, value))),
124
+ commit: next => Effect.flatMap(next, value => Effect.sync(() => {
125
+ this.ref.value = value;
126
+ PubSub.publishUnsafe(this.ref.pubsub, value);
127
+ })),
121
128
  }));
122
129
  }
123
- get changes() { return this.ref.changes; }
124
- get lock() { return Effect.succeed(this.ref.semaphore.withPermits(1)); }
130
+ get changes() { return SubscriptionRef.changes(this.ref); }
131
+ get lock() { return Effect.succeed(this.ref.semaphore.withPermit); }
125
132
  }
126
133
  /**
127
134
  * Creates a `Lens` that proxies a `SubscriptionRef`.
@@ -274,8 +281,8 @@ export const tapError = Function.dual(2, (self, f) => derive(self, {
274
281
  value: resolved.value,
275
282
  commit: next => Effect.flatMap(next, value => Effect.tapError(resolved.commit(Effect.succeed(value)), f)),
276
283
  })),
277
- mapStream: Stream.tapError(f),
278
- mapLock: Effect.tapError(f),
284
+ mapStream: Stream.tapError(e => f(e)),
285
+ mapLock: Effect.tapError(e => f(e)),
279
286
  }));
280
287
  /**
281
288
  * Provides a `Context` to a `Lens`, removing it from both the read and write environments.
@@ -285,14 +292,14 @@ export const provideContext = Function.dual(2, (self, context) => derive(self, {
285
292
  value: resolved.value,
286
293
  commit: next => Effect.provide(resolved.commit(next), context),
287
294
  })),
288
- mapStream: Stream.provideSomeContext(context),
295
+ mapStream: Stream.provideContext(context),
289
296
  mapLock: Effect.provide(context),
290
297
  }));
291
298
  /**
292
299
  * Provides a single service to a `Lens`, removing it from both the read and write environments.
293
300
  *
294
301
  * 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.
302
+ * `Context.Key` and you already have the concrete service value.
296
303
  */
297
304
  export const provideService = Function.dual(3, (self, tag, service) => derive(self, {
298
305
  resolve: parent => Effect.map(Effect.provideService(parent, tag, service), resolved => ({
@@ -313,34 +320,50 @@ export const focusObjectOnWritable = Function.dual(2, (self, key) => map(self, a
313
320
  /**
314
321
  * Narrows the focus to an indexed element of an array. Replaces the array in an immutable fashion when written to.
315
322
  */
316
- export const focusArrayAt = Function.dual(2, (self, index) => mapEffect(self, Array.get(index), (a, b) => Array.replaceOption(a, index, b)));
323
+ export const focusArrayAt = Function.dual(2, (self, index) => mapEffect(self, a => Effect.fromOption(Array.get(a, index)), (a, b) => Effect.fromOption(Array.replace(a, index, b))));
317
324
  /**
318
325
  * Narrows the focus to an indexed element of a mutable array. Mutates the array in place when written to.
319
326
  */
320
- export const focusMutableArrayAt = Function.dual(2, (self, index) => mapEffect(self, Array.get(index), (a, b) => Effect.flatMap(Array.get(a, index), () => Effect.as(Effect.sync(() => { a[index] = b; }), a))));
327
+ export const focusMutableArrayAt = Function.dual(2, (self, index) => mapEffect(self, a => Effect.fromOption(Array.get(a, index)), (a, b) => Effect.flatMap(Effect.fromOption(Array.get(a, index)), () => Effect.as(Effect.sync(() => { a[index] = b; }), a))));
321
328
  /**
322
329
  * Narrows the focus to an indexed element of a readonly tuple. Replaces the tuple in an immutable fashion when written to.
323
330
  */
324
- export const focusTupleAt = Function.dual(2, (self, index) => map(self, Array.unsafeGet(index), (a, b) => Array.replace(a, index, b)));
331
+ export const focusTupleAt = Function.dual(2, (self, index) => map(self, Array.getUnsafe(index), (a, b) => Option.getOrElse(Array.replace(a, index, b), () => a)));
325
332
  /**
326
333
  * Narrows the focus to an indexed element of a mutable tuple. Mutates the tuple in place when written to.
327
334
  */
328
- export const focusMutableTupleAt = Function.dual(2, (self, index) => map(self, Array.unsafeGet(index), (a, b) => { a[index] = b; return a; }));
335
+ export const focusMutableTupleAt = Function.dual(2, (self, index) => map(self, Array.getUnsafe(index), (a, b) => { a[index] = b; return a; }));
329
336
  /**
330
337
  * Narrows the focus to an indexed element of `Chunk`. Replaces the `Chunk` in an immutable fashion when written to.
331
338
  */
332
- export const focusChunkAt = Function.dual(2, (self, index) => mapEffect(self, Chunk.get(index), (a, b) => Effect.succeed(Chunk.replace(a, index, b))));
339
+ export const focusChunkAt = Function.dual(2, (self, index) => mapEffect(self, chunk => Effect.fromOption(Chunk.get(chunk, index)), (chunk, value) => Effect.succeed(Option.getOrElse(Chunk.replace(chunk, index, value), () => chunk))));
333
340
  /**
334
341
  * Narrows the focus to the value inside an `Option`.
335
342
  *
336
- * Reading or writing through this lens fails with `NoSuchElementException` when the parent option is `None`.
343
+ * Reading or writing through this lens fails with `NoSuchElementError` when the parent option is `None`.
337
344
  * Writing wraps the new focused value back into `Option.some`.
338
345
  */
339
- export const focusOption = (self) => mapEffect(self, identity, (a, b) => Effect.map(a, () => Option.some(b)));
346
+ export const focusOption = (self) => mapEffect(self, Effect.fromOption, (option, value) => Effect.as(Effect.fromOption(option), Option.some(value)));
340
347
  /**
341
348
  * Reads the current value from a `Lens`.
342
349
  */
343
350
  export const get = (self) => self.get;
351
+ /**
352
+ * Atomically modifies the value of a `Lens` and returns a computed result.
353
+ */
354
+ export const modify = Function.dual(2, (self, f) => self.modifyEffect(a => Effect.succeed(f(a))));
355
+ /**
356
+ * Atomically modifies the value of a `Lens` with an effect and returns a computed result.
357
+ */
358
+ export const modifyEffect = Function.dual(2, (self, f) => self.modifyEffect(f));
359
+ /**
360
+ * Conditionally modifies a `Lens` without committing when the next value is `None`.
361
+ */
362
+ export const modifySome = Function.dual(2, (self, f) => self.modifySomeEffect(a => Effect.succeed(f(a))));
363
+ /**
364
+ * Conditionally modifies a `Lens` with an effect without committing when the next value is `None`.
365
+ */
366
+ export const modifySomeEffect = Function.dual(2, (self, f) => self.modifySomeEffect(f));
344
367
  /**
345
368
  * Sets the value of a `Lens`.
346
369
  */
@@ -365,6 +388,14 @@ export const getAndUpdate = Function.dual(2, (self, f) => self.modifyEffect(a =>
365
388
  * Applies an effectful transformation the value of a `Lens` while returning the previous value.
366
389
  */
367
390
  export const getAndUpdateEffect = Function.dual(2, (self, f) => self.modifyEffect(a => Effect.flatMap(f(a), next => Effect.succeed([a, next]))));
391
+ /**
392
+ * Conditionally updates a `Lens` and returns the previous value.
393
+ */
394
+ export const getAndUpdateSome = Function.dual(2, (self, pf) => self.modifySomeEffect(a => Effect.succeed([a, pf(a)])));
395
+ /**
396
+ * Conditionally updates a `Lens` with an effect and returns the previous value.
397
+ */
398
+ export const getAndUpdateSomeEffect = Function.dual(2, (self, pf) => self.modifySomeEffect(a => Effect.map(pf(a), next => [a, next])));
368
399
  /**
369
400
  * Sets the value of a `Lens` and returns the new value.
370
401
  */
@@ -380,4 +411,26 @@ export const updateAndGet = Function.dual(2, (self, f) => self.modifyEffect(a =>
380
411
  * Applies an effectful update to the value of a `Lens` and returns the new value.
381
412
  */
382
413
  export const updateAndGetEffect = Function.dual(2, (self, f) => self.modifyEffect(a => Effect.flatMap(f(a), next => Effect.succeed([next, next]))));
414
+ /**
415
+ * Conditionally updates the value of a `Lens`.
416
+ */
417
+ export const updateSome = Function.dual(2, (self, pf) => self.modifySomeEffect(a => Effect.succeed([void 0, pf(a)])));
418
+ /**
419
+ * Conditionally updates the value of a `Lens` with an effect.
420
+ */
421
+ export const updateSomeEffect = Function.dual(2, (self, pf) => self.modifySomeEffect(a => Effect.map(pf(a), next => [void 0, next])));
422
+ /**
423
+ * Conditionally updates a `Lens` and returns the resulting value.
424
+ */
425
+ export const updateSomeAndGet = Function.dual(2, (self, pf) => self.modifySomeEffect(a => Effect.succeed(Option.match(pf(a), {
426
+ onNone: () => [a, Option.none()],
427
+ onSome: next => [next, Option.some(next)],
428
+ }))));
429
+ /**
430
+ * Conditionally updates a `Lens` with an effect and returns the resulting value.
431
+ */
432
+ export const updateSomeAndGetEffect = Function.dual(2, (self, pf) => self.modifySomeEffect(a => Effect.map(pf(a), next => Option.match(next, {
433
+ onNone: () => [a, Option.none()],
434
+ onSome: value => [value, Option.some(value)],
435
+ }))));
383
436
  //# 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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"}
@@ -1,57 +1,113 @@
1
- import { Chunk, Effect, Option, Subscribable } from "effect";
2
- import type { NoSuchElementException } from "effect/Cause";
3
- export * from "effect/Subscribable";
4
- /**
5
- * Maps over an `Option` value in the `Subscribable`.
6
- */
1
+ import { type Cause, Chunk, Effect, Option, Pipeable, type Result, type Schedule, Stream } from "effect";
2
+ export declare const SubscribableTypeId: unique symbol;
3
+ export type SubscribableTypeId = typeof SubscribableTypeId;
4
+ export interface Subscribable<in out A, in out E = never, in out R = never> extends Pipeable.Pipeable {
5
+ readonly [SubscribableTypeId]: SubscribableTypeId;
6
+ readonly get: Effect.Effect<A, E, R>;
7
+ readonly changes: Stream.Stream<A, E, R>;
8
+ }
9
+ export declare const isSubscribable: (u: unknown) => u is Subscribable<unknown, unknown, unknown>;
10
+ export declare const SubscribableImplTypeId: unique symbol;
11
+ export type SubscribableImplTypeId = typeof SubscribableImplTypeId;
12
+ export declare namespace SubscribableImpl {
13
+ interface Source<in out A, in out E = never, in out R = never> {
14
+ readonly get: Effect.Effect<A, E, R>;
15
+ readonly changes: Stream.Stream<A, E, R>;
16
+ }
17
+ }
18
+ export declare class SubscribableImpl<in out A, in out E = never, in out R = never> extends Pipeable.Class implements Subscribable<A, E, R> {
19
+ readonly source: SubscribableImpl.Source<A, E, R>;
20
+ readonly [SubscribableTypeId]: SubscribableTypeId;
21
+ readonly [SubscribableImplTypeId]: SubscribableImplTypeId;
22
+ constructor(source: SubscribableImpl.Source<A, E, R>);
23
+ get get(): Effect.Effect<A, E, R>;
24
+ get changes(): Stream.Stream<A, E, R>;
25
+ }
26
+ export declare const isSubscribableImpl: (u: unknown) => u is SubscribableImpl<unknown, unknown, unknown>;
27
+ export declare const asSubscribableImpl: <A, E, R>(subscribable: Subscribable<A, E, R>) => SubscribableImpl<A, E, R>;
28
+ export declare const make: <A, E, R>(source: SubscribableImpl.Source<A, E, R>) => Subscribable<A, E, R>;
29
+ export declare const unwrap: <A, E, R, E1, R1>(effect: Effect.Effect<Subscribable<A, E, R>, E1, R1>) => Subscribable<A, E | E1, R | R1>;
30
+ export declare const map: {
31
+ <A, B>(f: (a: NoInfer<A>) => B): <E, R>(self: Subscribable<A, E, R>) => Subscribable<B, E, R>;
32
+ <A, E, R, B>(self: Subscribable<A, E, R>, f: (a: NoInfer<A>) => B): Subscribable<B, E, R>;
33
+ };
34
+ export declare const mapEffect: {
35
+ <A, B, E2, R2>(f: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>): <E, R>(self: Subscribable<A, E, R>) => Subscribable<B, E | E2, R | R2>;
36
+ <A, E, R, B, E2, R2>(self: Subscribable<A, E, R>, f: (a: NoInfer<A>) => Effect.Effect<B, E2, R2>): Subscribable<B, E | E2, R | R2>;
37
+ };
38
+ /** Maps over an `Option` value in the `Subscribable`. */
7
39
  export declare const mapOption: {
8
- <A, B, E, R>(self: Subscribable.Subscribable<Option.Option<A>, E, R>, f: (a: A) => B): Subscribable.Subscribable<Option.Option<B>, E, R>;
9
- <A, B>(f: (a: A) => B): <E, R>(self: Subscribable.Subscribable<Option.Option<A>, E, R>) => Subscribable.Subscribable<Option.Option<B>, E, R>;
40
+ <A, B>(f: (a: A) => B): <E, R>(self: Subscribable<Option.Option<A>, E, R>) => Subscribable<Option.Option<B>, E, R>;
41
+ <A, B, E, R>(self: Subscribable<Option.Option<A>, E, R>, f: (a: A) => B): Subscribable<Option.Option<B>, E, R>;
10
42
  };
11
- /**
12
- * Maps over an `Option` value in the `Subscribable` with an Effect.
13
- */
43
+ /** Maps over an `Option` value in the `Subscribable` with an Effect. */
14
44
  export declare const mapOptionEffect: {
15
- <A, B, E, E2, R>(self: Subscribable.Subscribable<Option.Option<A>, E, R>, f: (a: A) => Effect.Effect<B, E2, R>): Subscribable.Subscribable<Option.Option<B>, E | E2, R>;
16
- <A, B, E2>(f: (a: A) => Effect.Effect<B, E2>): <E, R>(self: Subscribable.Subscribable<Option.Option<A>, E, R>) => Subscribable.Subscribable<Option.Option<B>, E | E2, R>;
45
+ <A, B, E2, R2>(f: (a: A) => Effect.Effect<B, E2, R2>): <E, R>(self: Subscribable<Option.Option<A>, E, R>) => Subscribable<Option.Option<B>, E | E2, R | R2>;
46
+ <A, B, E, R, E2, R2>(self: Subscribable<Option.Option<A>, E, R>, f: (a: A) => Effect.Effect<B, E2, R2>): Subscribable<Option.Option<B>, E | E2, R | R2>;
47
+ };
48
+ /** Maps errors from both the current value and the stream of changes. */
49
+ export declare const mapError: {
50
+ <E, E2>(f: (error: NoInfer<E>) => E2): <A, R>(self: Subscribable<A, E, R>) => Subscribable<A, E2, R>;
51
+ <A, E, R, E2>(self: Subscribable<A, E, R>, f: (error: NoInfer<E>) => E2): Subscribable<A, E2, R>;
52
+ };
53
+ /** Runs an effect when either the current value or the stream of changes fails. */
54
+ export declare const tapError: {
55
+ <E, B, E2, R2>(f: (error: NoInfer<E>) => Effect.Effect<B, E2, R2>): <A, R>(self: Subscribable<A, E, R>) => Subscribable<A, E | E2, R | R2>;
56
+ <A, E, R, B, E2, R2>(self: Subscribable<A, E, R>, f: (error: NoInfer<E>) => Effect.Effect<B, E2, R2>): Subscribable<A, E | E2, R | R2>;
57
+ };
58
+ declare const catch_: {
59
+ <E, B, E2, R2>(f: (error: NoInfer<E>) => Subscribable<B, E2, R2>): <A, R>(self: Subscribable<A, E, R>) => Subscribable<A | B, E2, R | R2>;
60
+ <A, E, R, B, E2, R2>(self: Subscribable<A, E, R>, f: (error: NoInfer<E>) => Subscribable<B, E2, R2>): Subscribable<A | B, E2, R | R2>;
61
+ };
62
+ /** Recovers from typed errors with another `Subscribable`. */
63
+ export { catch_ as catch };
64
+ /** Recovers from all failure causes with another `Subscribable`. */
65
+ export declare const catchCause: {
66
+ <E, B, E2, R2>(f: (cause: Cause.Cause<NoInfer<E>>) => Subscribable<B, E2, R2>): <A, R>(self: Subscribable<A, E, R>) => Subscribable<A | B, E2, R | R2>;
67
+ <A, E, R, B, E2, R2>(self: Subscribable<A, E, R>, f: (cause: Cause.Cause<NoInfer<E>>) => Subscribable<B, E2, R2>): Subscribable<A | B, E2, R | R2>;
17
68
  };
18
- /**
19
- * Narrows the focus to a field of an object.
20
- */
69
+ /** Runs an effect when either channel fails, exposing the complete failure cause. */
70
+ export declare const tapCause: {
71
+ <E, B, E2, R2>(f: (cause: Cause.Cause<NoInfer<E>>) => Effect.Effect<B, E2, R2>): <A, R>(self: Subscribable<A, E, R>) => Subscribable<A, E | E2, R | R2>;
72
+ <A, E, R, B, E2, R2>(self: Subscribable<A, E, R>, f: (cause: Cause.Cause<NoInfer<E>>) => Effect.Effect<B, E2, R2>): Subscribable<A, E | E2, R | R2>;
73
+ };
74
+ /** Falls back to another `Subscribable` when either channel fails. */
75
+ export declare const orElse: {
76
+ <B, E2, R2>(that: () => Subscribable<B, E2, R2>): <A, E, R>(self: Subscribable<A, E, R>) => Subscribable<A | B, E2, R | R2>;
77
+ <A, E, R, B, E2, R2>(self: Subscribable<A, E, R>, that: () => Subscribable<B, E2, R2>): Subscribable<A | B, E2, R | R2>;
78
+ };
79
+ /** Replaces typed errors from either channel with a lazily evaluated value. */
80
+ export declare const orElseSucceed: {
81
+ <B>(value: () => B): <A, E, R>(self: Subscribable<A, E, R>) => Subscribable<A | B, never, R>;
82
+ <A, E, R, B>(self: Subscribable<A, E, R>, value: () => B): Subscribable<A | B, never, R>;
83
+ };
84
+ /** Retries failures from both channels according to the supplied schedule. */
85
+ export declare const retry: {
86
+ <E, X, E2, R2>(policy: Schedule.Schedule<X, NoInfer<E>, E2, R2>): <A, R>(self: Subscribable<A, E, R>) => Subscribable<A, E | E2, R | R2>;
87
+ <A, E, R, X, E2, R2>(self: Subscribable<A, E, R>, policy: Schedule.Schedule<X, NoInfer<E>, E2, R2>): Subscribable<A, E | E2, R | R2>;
88
+ };
89
+ /** Converts typed failures from both channels into `Result` values. */
90
+ export declare const result: <A, E, R>(self: Subscribable<A, E, R>) => Subscribable<Result.Result<A, E>, never, R>;
91
+ /** Narrows the focus to a field of an object. */
21
92
  export declare const focusObjectOn: {
22
- <A extends object, K extends keyof A, E, R>(self: Subscribable.Subscribable<A, E, R>, key: K): Subscribable.Subscribable<A[K], E, R>;
23
- <A extends object, K extends keyof A, E, R>(key: K): (self: Subscribable.Subscribable<A, E, R>) => Subscribable.Subscribable<A[K], E, R>;
93
+ <A extends object, K extends keyof A>(key: K): <E, R>(self: Subscribable<A, E, R>) => Subscribable<A[K], E, R>;
94
+ <A extends object, K extends keyof A, E, R>(self: Subscribable<A, E, R>, key: K): Subscribable<A[K], E, R>;
24
95
  };
25
- /**
26
- * Narrows the focus to an indexed element of an array.
27
- */
96
+ /** Narrows the focus to an indexed element of an array. */
28
97
  export declare const focusArrayAt: {
29
- <A extends readonly any[], E, R>(self: Subscribable.Subscribable<A, E, R>, index: number): Subscribable.Subscribable<A[number], E, R>;
30
- <A extends readonly any[], E, R>(index: number): (self: Subscribable.Subscribable<A, E, R>) => Subscribable.Subscribable<A[number], E | NoSuchElementException, R>;
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>;
36
- /**
37
- * Narrows the focus to an indexed element of a readonly tuple.
38
- */
98
+ <A extends readonly any[]>(index: number): <E, R>(self: Subscribable<A, E, R>) => Subscribable<A[number], E | Cause.NoSuchElementError, R>;
99
+ <A extends readonly any[], E, R>(self: Subscribable<A, E, R>, index: number): Subscribable<A[number], E | Cause.NoSuchElementError, R>;
100
+ };
101
+ export declare const focusArrayLength: <A extends readonly any[], E, R>(self: Subscribable<A, E, R>) => Subscribable<number, E, R>;
102
+ /** Narrows the focus to an indexed element of a readonly tuple. */
39
103
  export declare const focusTupleAt: {
40
- <T extends readonly [any, ...any[]], I extends number, E, R>(self: Subscribable.Subscribable<T, E, R>, index: I): Subscribable.Subscribable<T[I], E, R>;
41
- <T extends readonly [any, ...any[]], I extends number, E, R>(index: I): (self: Subscribable.Subscribable<T, E, R>) => Subscribable.Subscribable<T[I], E, R>;
104
+ <T extends readonly [any, ...any[]], I extends number>(index: I): <E, R>(self: Subscribable<T, E, R>) => Subscribable<T[I], E, R>;
105
+ <T extends readonly [any, ...any[]], I extends number, E, R>(self: Subscribable<T, E, R>, index: I): Subscribable<T[I], E, R>;
42
106
  };
43
- /**
44
- * Narrows the focus to an indexed element of `Chunk`.
45
- */
107
+ /** Narrows the focus to an indexed element of `Chunk`. */
46
108
  export declare const focusChunkAt: {
47
- <A, E, R>(self: Subscribable.Subscribable<Chunk.Chunk<A>, E, R>, index: number): Subscribable.Subscribable<A, E | NoSuchElementException, R>;
48
- <A, E, R>(index: number): (self: Subscribable.Subscribable<Chunk.Chunk<A>, E, R>) => Subscribable.Subscribable<A, E | NoSuchElementException, R>;
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>;
109
+ <A>(index: number): <E, R>(self: Subscribable<Chunk.Chunk<A>, E, R>) => Subscribable<A, E | Cause.NoSuchElementError, R>;
110
+ <A, E, R>(self: Subscribable<Chunk.Chunk<A>, E, R>, index: number): Subscribable<A, E | Cause.NoSuchElementError, R>;
111
+ };
112
+ export declare const focusChunkSize: <A, E, R>(self: Subscribable<Chunk.Chunk<A>, E, R>) => Subscribable<number, E, R>;
113
+ export declare const focusIterableSize: <A extends Iterable<any>, E, R>(self: Subscribable<A, E, R>) => Subscribable<number, E, R>;
@@ -1,42 +1,96 @@
1
- import { Array, Chunk, Effect, Function, Iterable, Option, Subscribable } from "effect";
2
- export * from "effect/Subscribable";
3
- /**
4
- * Maps over an `Option` value in the `Subscribable`.
5
- */
6
- export const mapOption = Function.dual(2, (self, f) => Subscribable.map(self, Option.map(f)));
7
- /**
8
- * Maps over an `Option` value in the `Subscribable` with an Effect.
9
- */
10
- export const mapOptionEffect = Function.dual(2, (self, f) => Subscribable.mapEffect(self, Option.match({
1
+ import { Array, Chunk, Effect, Function, Iterable, Option, Pipeable, Predicate, Stream } from "effect";
2
+ export const SubscribableTypeId = Symbol.for("@effect-fc/Lens/v4/Subscribable");
3
+ export const isSubscribable = (u) => Predicate.hasProperty(u, SubscribableTypeId);
4
+ export const SubscribableImplTypeId = Symbol.for("@effect-fc/Lens/v4/SubscribableImpl");
5
+ export class SubscribableImpl extends Pipeable.Class {
6
+ source;
7
+ [SubscribableTypeId] = SubscribableTypeId;
8
+ [SubscribableImplTypeId] = SubscribableImplTypeId;
9
+ constructor(source) {
10
+ super();
11
+ this.source = source;
12
+ }
13
+ get get() { return this.source.get; }
14
+ get changes() { return this.source.changes; }
15
+ }
16
+ export const isSubscribableImpl = (u) => Predicate.hasProperty(u, SubscribableImplTypeId);
17
+ export const asSubscribableImpl = (subscribable) => {
18
+ if (!isSubscribableImpl(subscribable))
19
+ throw new Error("Not a 'SubscribableImpl'");
20
+ return subscribable;
21
+ };
22
+ export const make = (source) => new SubscribableImpl(source);
23
+ export const unwrap = (effect) => make({
24
+ get: Effect.flatMap(effect, self => self.get),
25
+ changes: Stream.unwrap(Effect.map(effect, self => self.changes)),
26
+ });
27
+ export const map = Function.dual(2, (self, f) => make({
28
+ get get() { return Effect.map(self.get, f); },
29
+ get changes() { return Stream.map(self.changes, f); },
30
+ }));
31
+ export const mapEffect = Function.dual(2, (self, f) => make({
32
+ get get() { return Effect.flatMap(self.get, f); },
33
+ get changes() { return Stream.mapEffect(self.changes, f); },
34
+ }));
35
+ /** Maps over an `Option` value in the `Subscribable`. */
36
+ export const mapOption = Function.dual(2, (self, f) => map(self, Option.map(f)));
37
+ /** Maps over an `Option` value in the `Subscribable` with an Effect. */
38
+ export const mapOptionEffect = Function.dual(2, (self, f) => mapEffect(self, Option.match({
11
39
  onSome: a => Effect.map(f(a), Option.some),
12
40
  onNone: () => Effect.succeed(Option.none()),
13
41
  })));
14
- /**
15
- * Narrows the focus to a field of an object.
16
- */
17
- export const focusObjectOn = Function.dual(2, (self, key) => Subscribable.map(self, a => a[key]));
18
- /**
19
- * Narrows the focus to an indexed element of an array.
20
- */
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);
26
- /**
27
- * Narrows the focus to an indexed element of a readonly tuple.
28
- */
29
- export const focusTupleAt = Function.dual(2, (self, index) => Subscribable.map(self, Array.unsafeGet(index)));
30
- /**
31
- * Narrows the focus to an indexed element of `Chunk`.
32
- */
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);
42
+ /** Maps errors from both the current value and the stream of changes. */
43
+ export const mapError = Function.dual(2, (self, f) => make({
44
+ get get() { return Effect.mapError(self.get, f); },
45
+ get changes() { return Stream.mapError(self.changes, f); },
46
+ }));
47
+ /** Runs an effect when either the current value or the stream of changes fails. */
48
+ export const tapError = Function.dual(2, (self, f) => make({
49
+ get get() { return Effect.tapError(self.get, f); },
50
+ get changes() { return Stream.tapError(self.changes, f); },
51
+ }));
52
+ const catch_ = Function.dual(2, (self, f) => make({
53
+ get get() { return Effect.catch(self.get, error => f(error).get); },
54
+ get changes() { return Stream.catch(self.changes, error => f(error).changes); },
55
+ }));
56
+ /** Recovers from typed errors with another `Subscribable`. */
57
+ export { catch_ as catch };
58
+ /** Recovers from all failure causes with another `Subscribable`. */
59
+ export const catchCause = Function.dual(2, (self, f) => make({
60
+ get get() { return Effect.catchCause(self.get, cause => f(cause).get); },
61
+ get changes() { return Stream.catchCause(self.changes, cause => f(cause).changes); },
62
+ }));
63
+ /** Runs an effect when either channel fails, exposing the complete failure cause. */
64
+ export const tapCause = Function.dual(2, (self, f) => make({
65
+ get get() { return Effect.tapCause(self.get, f); },
66
+ get changes() { return Stream.tapCause(self.changes, f); },
67
+ }));
68
+ /** Falls back to another `Subscribable` when either channel fails. */
69
+ export const orElse = Function.dual(2, (self, that) => catch_(self, that));
70
+ /** Replaces typed errors from either channel with a lazily evaluated value. */
71
+ export const orElseSucceed = Function.dual(2, (self, value) => make({
72
+ get get() { return Effect.orElseSucceed(self.get, value); },
73
+ get changes() { return Stream.orElseSucceed(self.changes, value); },
74
+ }));
75
+ /** Retries failures from both channels according to the supplied schedule. */
76
+ export const retry = Function.dual(2, (self, policy) => make({
77
+ get get() { return Effect.retry(self.get, policy); },
78
+ get changes() { return Stream.retry(self.changes, policy); },
79
+ }));
80
+ /** Converts typed failures from both channels into `Result` values. */
81
+ export const result = (self) => make({
82
+ get get() { return Effect.result(self.get); },
83
+ get changes() { return Stream.result(self.changes); },
84
+ });
85
+ /** Narrows the focus to a field of an object. */
86
+ export const focusObjectOn = Function.dual(2, (self, key) => map(self, a => a[key]));
87
+ /** Narrows the focus to an indexed element of an array. */
88
+ export const focusArrayAt = Function.dual(2, (self, index) => mapEffect(self, a => Effect.fromOption(Array.get(a, index))));
89
+ export const focusArrayLength = (self) => map(self, Array.length);
90
+ /** Narrows the focus to an indexed element of a readonly tuple. */
91
+ export const focusTupleAt = Function.dual(2, (self, index) => map(self, Array.getUnsafe(index)));
92
+ /** Narrows the focus to an indexed element of `Chunk`. */
93
+ export const focusChunkAt = Function.dual(2, (self, index) => mapEffect(self, chunk => Effect.fromOption(Chunk.get(chunk, index))));
94
+ export const focusChunkSize = (self) => map(self, Chunk.size);
95
+ export const focusIterableSize = (self) => map(self, Iterable.size);
42
96
  //# 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,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"}
1
+ {"version":3,"file":"Subscribable.js","sourceRoot":"","sources":["../src/Subscribable.ts"],"names":[],"mappings":"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"}
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.2.0",
4
+ "version": "2.0.0-beta.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "./README.md",
@@ -27,7 +27,7 @@
27
27
  }
28
28
  },
29
29
  "scripts": {
30
- "build": "tsc",
30
+ "build": "tsc -p tsconfig.build.json",
31
31
  "lint:tsc": "tsc --noEmit",
32
32
  "lint:biome": "biome lint",
33
33
  "pack": "npm pack",
@@ -36,6 +36,9 @@
36
36
  "clean:modules": "rm -rf node_modules"
37
37
  },
38
38
  "peerDependencies": {
39
- "effect": "^3.21.0"
39
+ "effect": "4.0.0-beta.85"
40
+ },
41
+ "devDependencies": {
42
+ "effect": "4.0.0-beta.85"
40
43
  }
41
44
  }