Buckets:
| import { describe, expect } from "bun:test" | |
| import { Effect, Exit, Layer, Scope } from "effect" | |
| import { AbsolutePath } from "@opencode-ai/core/schema" | |
| import { Global } from "@opencode-ai/core/global" | |
| import { Reference } from "@opencode-ai/core/reference" | |
| import { Repository } from "@opencode-ai/core/repository" | |
| import { RepositoryCache } from "@opencode-ai/core/repository-cache" | |
| import { EventV2 } from "@opencode-ai/core/event" | |
| import { it } from "./lib/effect" | |
| const cache = Layer.mock(RepositoryCache.Service, { | |
| ensure: () => Effect.die("unexpected Git materialization"), | |
| }) | |
| describe("Reference", () => { | |
| it.effect("registers normalized sources for the owning scope", () => | |
| Effect.gen(function* () { | |
| const references = yield* Reference.Service | |
| const scope = yield* Scope.make() | |
| const update = yield* references.transform().pipe(Effect.provideService(Scope.Scope, scope)) | |
| const path = AbsolutePath.make("/docs") | |
| const source = new Reference.LocalSource({ | |
| type: "local", | |
| path, | |
| description: "Use for API documentation", | |
| hidden: true, | |
| }) | |
| yield* update((editor) => editor.add("docs", source)) | |
| expect(yield* references.list()).toEqual([ | |
| new Reference.Info({ name: "docs", path, description: "Use for API documentation", hidden: true, source }), | |
| ]) | |
| yield* Scope.close(scope, Exit.void) | |
| expect(yield* references.list()).toEqual([]) | |
| }).pipe( | |
| Effect.provide(Reference.layer), | |
| Effect.provide(cache), | |
| Effect.provide(EventV2.defaultLayer), | |
| Effect.provide(Global.defaultLayer), | |
| ), | |
| ) | |
| it.effect("derives Git paths without exposing cache operations", () => | |
| Effect.gen(function* () { | |
| const references = yield* Reference.Service | |
| const update = yield* references.transform() | |
| const repository = Repository.parseRemote("owner/repo") | |
| const source = new Reference.GitSource({ type: "git", repository: "owner/repo", branch: "main" }) | |
| yield* update((editor) => editor.add("sdk", source)) | |
| expect(yield* references.list()).toEqual([ | |
| new Reference.Info({ | |
| name: "sdk", | |
| path: AbsolutePath.make(Repository.cachePath(Global.Path.repos, repository)), | |
| source, | |
| }), | |
| ]) | |
| }).pipe( | |
| Effect.scoped, | |
| Effect.provide(Reference.layer), | |
| Effect.provide(cache), | |
| Effect.provide(EventV2.defaultLayer), | |
| Effect.provide(Global.defaultLayer), | |
| ), | |
| ) | |
| it.effect("preserves configured Git descriptions", () => | |
| Effect.gen(function* () { | |
| const references = yield* Reference.Service | |
| const update = yield* references.transform() | |
| const repository = Repository.parseRemote("owner/repo") | |
| const source = new Reference.GitSource({ | |
| type: "git", | |
| repository: "owner/repo", | |
| description: "Use for SDK implementation details", | |
| }) | |
| yield* update((editor) => editor.add("sdk", source)) | |
| expect(yield* references.list()).toEqual([ | |
| new Reference.Info({ | |
| name: "sdk", | |
| path: AbsolutePath.make(Repository.cachePath(Global.Path.repos, repository)), | |
| description: "Use for SDK implementation details", | |
| source, | |
| }), | |
| ]) | |
| }).pipe( | |
| Effect.scoped, | |
| Effect.provide(Reference.layer), | |
| Effect.provide(cache), | |
| Effect.provide(EventV2.defaultLayer), | |
| Effect.provide(Global.defaultLayer), | |
| ), | |
| ) | |
| }) | |
Xet Storage Details
- Size:
- 3.46 kB
- Xet hash:
- ddd2a956b824f7c66b6dbeb3f03efaee4e430704c2658bbe70a6c4df189e6091
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.