Cleanup
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
"dependencies": {
|
||||
"@effect/platform": "^0.96.1",
|
||||
"@effect/platform-browser": "^0.76.0",
|
||||
"@effect/platform-bun": "^0.89.0",
|
||||
"effect": "^3.21.2",
|
||||
"effect-lens": "workspace:*"
|
||||
},
|
||||
|
||||
@@ -1,36 +1,41 @@
|
||||
import { KeyValueStore } from "@effect/platform"
|
||||
import { BrowserKeyValueStore, BrowserStream } from "@effect/platform-browser"
|
||||
import { Effect, Option, Stream } from "effect"
|
||||
import { Lens } from "effect-lens"
|
||||
// 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>
|
||||
Effect.all([
|
||||
KeyValueStore.KeyValueStore,
|
||||
Effect.succeed("someKey"),
|
||||
]).pipe(
|
||||
Effect.map(([kv, key]) => Lens.make({
|
||||
get: kv.get(key),
|
||||
// Effect.gen(function*() {
|
||||
// // \/ Lens<Option.Option<string>, PlatformError, PlatformError, never, never>
|
||||
// const lens = Effect.all([
|
||||
// KeyValueStore.KeyValueStore,
|
||||
// Effect.succeed("someKey"),
|
||||
// Effect.makeSemaphore(1),
|
||||
// ]).pipe(
|
||||
// Effect.map(([kv, key, semaphore]) => 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,
|
||||
),
|
||||
// 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),
|
||||
})),
|
||||
// commit: a => Option.isSome(a)
|
||||
// ? kv.set(key, a.value)
|
||||
// : kv.remove(key),
|
||||
|
||||
Effect.provide(BrowserKeyValueStore.layerLocalStorage),
|
||||
Lens.unwrap,
|
||||
)
|
||||
})
|
||||
// lock: Effect.succeed(semaphore.withPermits(1)),
|
||||
// })),
|
||||
|
||||
// Effect.provide(BrowserKeyValueStore.layerLocalStorage),
|
||||
// Lens.unwrap,
|
||||
// )
|
||||
|
||||
// console.log(yield* Lens.get(lens))
|
||||
// })
|
||||
|
||||
Reference in New Issue
Block a user