From 6739ced49100a7ba75e8eef6be5f3528ad86e579 Mon Sep 17 00:00:00 2001 From: NagyVikt Date: Fri, 8 May 2026 23:44:01 +0200 Subject: [PATCH] Recognize SQLite transaction mode calls The storage layer already uses better-sqlite3 transaction mode helpers at runtime, but the local module shim typed transaction() as a plain callable. That made txFn.immediate() fail under TypeScript even though the runtime API exists. Constraint: packages/storage relies on a local better-sqlite3 declaration shim. Rejected: Cast txFn at the call site | hides a missing API in the shared shim. Confidence: high Scope-risk: narrow Directive: Keep runtime better-sqlite3 mode helpers represented in the shim when storage adds transaction modes. Tested: pnpm --filter @colony/storage typecheck; pnpm --filter @colony/storage build; pnpm run typecheck; pnpm run build Co-authored-by: OmX --- packages/storage/src/better-sqlite3.d.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/storage/src/better-sqlite3.d.ts b/packages/storage/src/better-sqlite3.d.ts index dbbdbd8..0d877e7 100644 --- a/packages/storage/src/better-sqlite3.d.ts +++ b/packages/storage/src/better-sqlite3.d.ts @@ -15,6 +15,14 @@ declare module 'better-sqlite3' { run(...params: unknown[]): RunResult; } + interface Transaction { + (...args: TArgs): TResult; + default(...args: TArgs): TResult; + deferred(...args: TArgs): TResult; + immediate(...args: TArgs): TResult; + exclusive(...args: TArgs): TResult; + } + interface Database { close(): void; exec(source: string): this; @@ -22,7 +30,7 @@ declare module 'better-sqlite3' { prepare(source: string): Statement; transaction( fn: (...args: TArgs) => TResult, - ): (...args: TArgs) => TResult; + ): Transaction; } }