diff options
| author | Dax <[email protected]> | 2026-04-16 02:03:03 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-16 02:03:03 -0400 |
| commit | 675a46e23e679c294355435584ae662a7c0903c7 (patch) | |
| tree | fb5162a7e3565f153db26055a0857d4ac3d6448f /packages/shared/src/util | |
| parent | 150ab07a833f0b10f4af17b3dd713cfedb16a6ff (diff) | |
| download | opencode-675a46e23e679c294355435584ae662a7c0903c7.tar.gz opencode-675a46e23e679c294355435584ae662a7c0903c7.zip | |
CLI perf: reduce deps (#22652)
Diffstat (limited to 'packages/shared/src/util')
| -rw-r--r-- | packages/shared/src/util/error.ts | 6 | ||||
| -rw-r--r-- | packages/shared/src/util/flock.ts | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/packages/shared/src/util/error.ts b/packages/shared/src/util/error.ts index 12c27a0a7..9d3b7c661 100644 --- a/packages/shared/src/util/error.ts +++ b/packages/shared/src/util/error.ts @@ -4,6 +4,12 @@ export abstract class NamedError extends Error { abstract schema(): z.core.$ZodType abstract toObject(): { name: string; data: any } + static hasName(error: unknown, name: string): boolean { + return ( + typeof error === "object" && error !== null && "name" in error && (error as Record<string, unknown>).name === name + ) + } + static create<Name extends string, Data extends z.core.$ZodType>(name: Name, data: Data) { const schema = z .object({ diff --git a/packages/shared/src/util/flock.ts b/packages/shared/src/util/flock.ts index 4a1df1dee..958bd9fd1 100644 --- a/packages/shared/src/util/flock.ts +++ b/packages/shared/src/util/flock.ts @@ -345,10 +345,14 @@ export namespace Flock { return await fn() } - export const effect = Effect.fn("Flock.effect")(function* (key: string) { + export const effect = Effect.fn("Flock.effect")(function* (key: string, input: Options = {}) { return yield* Effect.acquireRelease( - Effect.promise((signal) => Flock.acquire(key, { signal })), - (foo) => Effect.promise(() => foo.release()), + Effect.promise((signal) => Flock.acquire(key, { ...input, signal })).pipe( + Effect.withSpan("Flock.acquire", { + attributes: { key }, + }), + ), + (lock) => Effect.promise(() => lock.release()).pipe(Effect.withSpan("Flock.release")), ).pipe(Effect.asVoid) }) } |
