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 +52 -8
- package/dist/Lens.d.ts +199 -26
- package/dist/Lens.js +254 -54
- package/dist/Lens.js.map +1 -1
- package/dist/Subscribable.d.ts +12 -0
- package/dist/Subscribable.js +13 -1
- package/dist/Subscribable.js.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
18
|
+
* Checks whether a value is a `Lens`.
|
|
20
19
|
*/
|
|
21
|
-
export declare
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
62
|
+
* Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations.
|
|
32
63
|
*/
|
|
33
|
-
export declare const
|
|
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
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* Either `modify` or `set` needs to be supplied.
|
|
73
|
+
* Flattens an effectful `Lens`.
|
|
38
74
|
*/
|
|
39
|
-
export declare const
|
|
40
|
-
|
|
41
|
-
readonly
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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 `
|
|
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
|
|
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
|
-
*
|
|
126
|
+
* Creates a `Lens` that proxies a `SubscriptionRef`.
|
|
60
127
|
*/
|
|
61
|
-
export declare const
|
|
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
|
-
*
|
|
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
|
-
|
|
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.
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
*
|
|
41
|
+
* Creates a `Lens` by supplying how to read the current value, observe changes, and apply transformations.
|
|
23
42
|
*/
|
|
24
|
-
export const
|
|
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
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* Either `modify` or `set` needs to be supplied.
|
|
60
|
+
* Flattens an effectful `Lens`.
|
|
29
61
|
*/
|
|
30
|
-
export const
|
|
31
|
-
|
|
32
|
-
|
|
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 `
|
|
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
|
|
37
|
-
|
|
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) =>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
*
|
|
127
|
+
* Creates a `Lens` that proxies a `SubscriptionRef`.
|
|
54
128
|
*/
|
|
55
|
-
export const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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) =>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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) =>
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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) =>
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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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"}
|
package/dist/Subscribable.d.ts
CHANGED
|
@@ -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>;
|
package/dist/Subscribable.js
CHANGED
|
@@ -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
|
package/dist/Subscribable.js.map
CHANGED
|
@@ -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;
|
|
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"}
|