From 912a801060fd67413059fa9204f6ce61d03cc16b Mon Sep 17 00:00:00 2001 From: James Long Date: Thu, 6 Aug 2026 13:58:17 -0400 Subject: [PATCH] refactor(drizzle): declare query variance (#40891) --- .../src/sqlite-core/effect/select.ts | 9 +++++---- .../src/sqlite-core/effect/session.ts | 13 +++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/effect-drizzle-sqlite/src/sqlite-core/effect/select.ts b/packages/effect-drizzle-sqlite/src/sqlite-core/effect/select.ts index 0cfde54331d..0127fb09ae8 100644 --- a/packages/effect-drizzle-sqlite/src/sqlite-core/effect/select.ts +++ b/packages/effect-drizzle-sqlite/src/sqlite-core/effect/select.ts @@ -44,11 +44,12 @@ export type SQLiteEffectSelectPrepare< TEffectHKT > +// Explicit variance prevents comparisons from recursively scanning Drizzle's conditional select types. export class SQLiteEffectSelectBuilder< - TSelection extends SelectedFields | undefined, - TRunResult, - TEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase, - TBuilderMode extends "db" | "qb" = "db", + out TSelection extends SelectedFields | undefined, + out TRunResult, + out TEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase, + out TBuilderMode extends "db" | "qb" = "db", > { static readonly [entityKind]: string = "SQLiteEffectSelectBuilder" diff --git a/packages/effect-drizzle-sqlite/src/sqlite-core/effect/session.ts b/packages/effect-drizzle-sqlite/src/sqlite-core/effect/session.ts index 15a56f2ca7d..ea83efe0a24 100644 --- a/packages/effect-drizzle-sqlite/src/sqlite-core/effect/session.ts +++ b/packages/effect-drizzle-sqlite/src/sqlite-core/effect/session.ts @@ -303,10 +303,11 @@ export class SQLiteEffectPreparedQuery< } } +// Explicit variance prevents comparisons from recursively scanning the full Drizzle query-builder graph. export abstract class SQLiteEffectSession< - TEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase, - TRunResult = unknown, - TRelations extends AnyRelations = EmptyRelations, + out TEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase, + out TRunResult = unknown, + out TRelations extends AnyRelations = EmptyRelations, > { static readonly [entityKind]: string = "SQLiteEffectSession" @@ -404,9 +405,9 @@ export abstract class SQLiteEffectSession< } export abstract class SQLiteEffectTransaction< - TEffectHKT extends QueryEffectHKTBase, - TRunResult, - TRelations extends AnyRelations = EmptyRelations, + out TEffectHKT extends QueryEffectHKTBase, + out TRunResult, + out TRelations extends AnyRelations = EmptyRelations, > extends SQLiteEffectDatabase { static override readonly [entityKind]: string = "SQLiteEffectTransaction"