Buckets:
| import { describe, expect } from "bun:test" | |
| import { State } from "@opencode-ai/core/state" | |
| import { Deferred, Effect, Exit, Fiber, Layer, Scope } from "effect" | |
| import { testEffect } from "./lib/effect" | |
| const it = testEffect(Layer.empty) | |
| describe("State", () => { | |
| it.effect("commits a transform atomically when its updater is interrupted", () => | |
| Effect.gen(function* () { | |
| const rebuilding = yield* Deferred.make<void>() | |
| const release = yield* Deferred.make<void>() | |
| let block = true | |
| const state = State.create({ | |
| initial: () => ({ values: [] as string[] }), | |
| editor: (draft) => ({ add: (value: string) => draft.values.push(value) }), | |
| finalize: () => | |
| block ? Deferred.succeed(rebuilding, undefined).pipe(Effect.andThen(Deferred.await(release))) : Effect.void, | |
| }) | |
| const scope = yield* Scope.make() | |
| const update = yield* state.transform().pipe(Scope.provide(scope)) | |
| const fiber = yield* update((editor) => editor.add("registered")).pipe(Effect.forkChild) | |
| yield* Deferred.await(rebuilding) | |
| const interruption = yield* Fiber.interrupt(fiber).pipe(Effect.forkChild) | |
| block = false | |
| yield* Deferred.succeed(release, undefined) | |
| yield* Fiber.join(interruption) | |
| expect(state.get().values).toEqual(["registered"]) | |
| yield* Scope.close(scope, Exit.void) | |
| expect(state.get().values).toEqual([]) | |
| }), | |
| ) | |
| }) | |
Xet Storage Details
- Size:
- 1.43 kB
- Xet hash:
- e75f2256e9e90afc254f277c628431b0e38fa23b1918010c73ff0b09a8d83d3b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.