Update docs
Some checks failed
Lint / lint (push) Failing after 44s
Publish / publish (push) Failing after 11s

This commit is contained in:
Julien Valverdé
2026-03-25 01:30:40 +01:00
parent c77057a2c9
commit 122272b29e
5 changed files with 118 additions and 6 deletions

View File

@@ -10,6 +10,8 @@
"clean:modules": "rm -rf node_modules"
},
"dependencies": {
"@effect/platform": "^0.96.0",
"@effect/platform-browser": "^0.76.0",
"effect": "^3.21.0",
"effect-lens": "workspace:*"
},

View File

@@ -0,0 +1,36 @@
import { KeyValueStore } from "@effect/platform"
import { BrowserKeyValueStore, BrowserStream } from "@effect/platform-browser"
import { Effect, Option, Stream } from "effect"
import { Lens } from "effect-lens"
Effect.gen(function*() {
// \/ Lens<Option.Option<string>, PlatformError, PlatformError, never, never>
const lens = Effect.all([
KeyValueStore.KeyValueStore,
Effect.succeed("someKey"),
]).pipe(
Effect.map(([kv, key]) => Lens.make({
get: kv.get(key),
changes: kv.get(key).pipe(
Effect.map(Stream.make),
Effect.map(a => Stream.concat(
a,
BrowserStream.fromEventListenerWindow("storage").pipe(
Stream.filter(event => event.key === key),
Stream.map(event => Option.fromNullable(event.newValue)),
),
)),
Stream.unwrap,
),
set: a => Option.isSome(a)
? kv.set(key, a.value)
: kv.remove(key),
})),
Effect.provide(BrowserKeyValueStore.layerLocalStorage),
Lens.unwrap,
)
})

View File

@@ -1,3 +1,4 @@
import { KeyValueStore } from "@effect/platform"
import { Array, Console, Effect, Stream, SubscriptionRef } from "effect"
import { Lens } from "effect-lens"
@@ -16,5 +17,7 @@ Effect.gen(function*() {
})
Effect.gen(function*() {
const lens = Lens.make({
get: Effect.andThen(KeyValueStore.KeyValueStore, )
})
})