summaryrefslogtreecommitdiffhomepage
path: root/packages/shared/src/util
diff options
context:
space:
mode:
authorDax <[email protected]>2026-04-16 02:03:03 -0400
committerGitHub <[email protected]>2026-04-16 02:03:03 -0400
commit675a46e23e679c294355435584ae662a7c0903c7 (patch)
treefb5162a7e3565f153db26055a0857d4ac3d6448f /packages/shared/src/util
parent150ab07a833f0b10f4af17b3dd713cfedb16a6ff (diff)
downloadopencode-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.ts6
-rw-r--r--packages/shared/src/util/flock.ts10
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)
})
}