0.2.0 #5
@@ -28,7 +28,7 @@ Lens<
|
|||||||
A, // Type of the value the lens is focused on
|
A, // Type of the value the lens is focused on
|
||||||
ER, // Errors that can happen when reading
|
ER, // Errors that can happen when reading
|
||||||
EW, // Errors that can happen when writing
|
EW, // Errors that can happen when writing
|
||||||
RE, // Requirements for reading
|
RR, // Requirements for reading
|
||||||
RW // Requirements for writing
|
RW // Requirements for writing
|
||||||
>
|
>
|
||||||
```
|
```
|
||||||
@@ -55,11 +55,16 @@ yield* Lens.update(lens, Array.replace(1, 1664))
|
|||||||
Currently available:
|
Currently available:
|
||||||
- `fromSubscriptionRef`
|
- `fromSubscriptionRef`
|
||||||
- `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)
|
- `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)
|
||||||
|
- `fromRef` (returns an effect because it creates an internal lock)
|
||||||
|
|
||||||
More to come!
|
More to come!
|
||||||
|
|
||||||
#### Manually
|
#### Manually
|
||||||
You can also create Lenses manually using `make` by providing a getter, a stream of changes and either a `set` or `modify` function depending on your needs.
|
You can also create Lenses manually using `make` by providing:
|
||||||
|
- `get`: an effect that reads the current value,
|
||||||
|
- `changes`: a stream of value changes,
|
||||||
|
- `commit`: an effectful write primitive,
|
||||||
|
- `lock`: an effect that produces the lock used to serialize writes.
|
||||||
|
|
||||||
You can get pretty creative! Here's an example of a Lens that points to a specific key of the browser `LocalStorage`:
|
You can get pretty creative! Here's an example of a Lens that points to a specific key of the browser `LocalStorage`:
|
||||||
```typescript
|
```typescript
|
||||||
@@ -83,9 +88,11 @@ const lens = Effect.all([
|
|||||||
Stream.unwrap,
|
Stream.unwrap,
|
||||||
),
|
),
|
||||||
|
|
||||||
set: a => Option.isSome(a)
|
commit: a => Option.isSome(a)
|
||||||
? kv.set(key, a.value)
|
? kv.set(key, a.value)
|
||||||
: kv.remove(key),
|
: kv.remove(key),
|
||||||
|
|
||||||
|
lock: Effect.succeed(effect => effect),
|
||||||
})),
|
})),
|
||||||
|
|
||||||
Effect.provide(BrowserKeyValueStore.layerLocalStorage),
|
Effect.provide(BrowserKeyValueStore.layerLocalStorage),
|
||||||
|
|||||||
Reference in New Issue
Block a user