@vibeorm/runtime 2.0.0-alpha.8 → 2.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +7 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +955 -19
- package/dist/index.js.map +5 -4
- package/dist/scoped.d.ts +131 -0
- package/dist/scoped.d.ts.map +1 -0
- package/package.json +5 -4
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/adapter.ts", "../src/db-now.ts", "../src/model-meta.ts", "../src/codecs.ts", "../src/query-builder.ts", "../src/relation-plan.ts", "../src/relation-loader.ts", "../src/computed.ts", "../src/nested-writes.ts", "../src/extensions.ts", "../src/views.ts", "../src/validators.ts", "../src/policy.ts", "../src/client.ts", "../src/render-cache.ts"],
|
|
3
|
+
"sources": ["../src/adapter.ts", "../src/db-now.ts", "../src/model-meta.ts", "../src/codecs.ts", "../src/query-builder.ts", "../src/relation-plan.ts", "../src/relation-loader.ts", "../src/computed.ts", "../src/nested-writes.ts", "../src/extensions.ts", "../src/views.ts", "../src/validators.ts", "../src/policy.ts", "../src/scoped.ts", "../src/client.ts", "../src/render-cache.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * Database adapter contract for VibeORM v2. FROZEN INTERFACE — the runtime is\n * driver-agnostic and talks to databases exclusively through this type;\n * adapter packages (adapter-bun, adapter-pg, adapter-pglite, adapter-sqlite,\n * adapter-mysql) implement it.\n *\n * ERROR CONTRACT: adapters never let raw driver errors escape. Every failure\n * is mapped to a VibeError with a stable code via a per-driver table\n * (unique violation → VIBE_UNIQUE_VIOLATION, FK violation → VIBE_FK_VIOLATION,\n * serialization/deadlock → VIBE_TRANSACTION, connection/other → VIBE_ADAPTER),\n * with the driver error attached as `cause`.\n */\n\nimport type { Dialect, Provider } from \"@vibeorm/schema\";\nimport type { WireFidelity } from \"@vibeorm/sql\";\n\n// ─── Transaction options ──────────────────────────────────────────\n\n/** Transaction isolation levels (mapped per dialect by the adapter). */\nexport type IsolationLevel = \"ReadCommitted\" | \"RepeatableRead\" | \"Serializable\";\n\n/**\n * Options for `$transaction` / `adapter.transaction`.\n *\n * `timeout` is milliseconds, enforced database-side where the engine can\n * genuinely cancel a running statement (postgres servers via `SET LOCAL\n * statement_timeout`, mysql's SELECT-only `MAX_EXECUTION_TIME`). Dialect\n * honesty: an adapter whose engine CANNOT enforce it refuses loudly instead\n * of no-opping — sqlite adapters throw `VIBE_VALIDATION` (busy_timeout only\n * bounds lock acquisition), pglite throws `VIBE_UNSUPPORTED_CAPABILITY` (the\n * WASM build accepts statement_timeout but never fires it).\n *\n * Options are TOP-LEVEL only: a nested `transaction()` call (a savepoint)\n * refuses BOTH fields with `VIBE_VALIDATION` on every adapter — a savepoint\n * cannot change the isolation level of the transaction it joins, and a\n * nested timeout is not enforceable.\n */\nexport type TransactionOptions = {\n isolationLevel?: IsolationLevel;\n timeout?: number;\n};\n\n// ─── Results ──────────────────────────────────────────────────────\n\n/** Result of an unsafe/raw execution: rows plus affected-row count. */\nexport type QueryResult = {\n rows: Record<string, unknown>[];\n affectedRows: number;\n};\n\n// ─── The adapter ──────────────────────────────────────────────────\n\n/**\n * The primary interface every database adapter implements. Adapters own\n * connection management, statement caching, transactions (including nested →\n * savepoints), driver-specific parameter formatting and driver-error mapping.\n */\nexport type DatabaseAdapter = {\n /** SQL dialect this adapter's database speaks (selects the @vibeorm/sql dialect). */\n readonly dialect: Dialect;\n /** Concrete provider (pglite and postgresql both speak `postgres`). */\n readonly provider: Provider;\n\n /**\n * What this DRIVER actually delivers for non-list scalar columns on the\n * result path (board #30) — lets the runtime's decode plans skip decoders\n * that are provably no-ops for this driver (e.g. node-postgres already hands\n * `Date` for timestamptz and parsed values for jsonb). OPTIONAL and purely\n * an optimization contract: an adapter that declares nothing gets the full\n * idempotency-guarded decode path. Declare only what the driver verifiably\n * does; transactional adapters must carry the same declaration.\n */\n readonly wire?: WireFidelity;\n\n /**\n * Execute a parameterized query on the ORM hot path and return rows.\n * The adapter owns prepared-statement caching and ORM-path parameter\n * serialization (e.g. tagged scalar-list params vs JSON values).\n */\n execute(params: { text: string; values: unknown[] }): Promise<Record<string, unknown>[]>;\n\n /**\n * Execute a raw query (`$queryRaw*`, `$executeRaw*`, DDL). No statement\n * caching; raw-path parameter serialization (arrays pass through to the\n * driver where it supports them — see LEARNINGS: raw vs ORM paths differ).\n *\n * OMITTING `values` changes semantics on the sqlite adapters (board #31):\n * `adapter-sqlite` and `adapter-better-sqlite3` route no-`values` text\n * through the driver's multi-statement script mode (`db.run`/`exec` — the\n * shape @vibeorm/migrate emits for DDL/PRAGMA batches), which CANNOT return\n * rows: a parameterless SELECT yields `rows: []` there, while pg/pglite/\n * mysql/bun return its result set either way. Callers that want rows from a\n * single parameterless statement must pass `values: []` — the client's\n * `$queryRawUnsafe` always does. Rule of thumb: `values` present (even\n * empty) = one prepared statement with rows; `values` absent = script mode,\n * rows not guaranteed.\n */\n executeUnsafe(params: { text: string; values?: unknown[] }): Promise<QueryResult>;\n\n /**\n * Run `fn` inside a transaction; the callback receives a transactional\n * adapter with this same interface. Nested calls create savepoints. Throwing\n * rolls back (the savepoint or the whole transaction) and rethrows.\n *\n * `options` is honored on TOP-LEVEL calls only. A NESTED call refuses any\n * `isolationLevel` or `timeout` with `VIBE_VALIDATION` (`meta.nested:\n * true`), identically on every adapter: a savepoint cannot change the\n * isolation level of the transaction it joins, and a nested timeout is not\n * enforceable. Silently dropping the option was the pre-#3 behaviour of the\n * pg/pglite/mysql/bun adapters and is forbidden by constitution rule 4.\n */\n transaction<T>(fn: (txAdapter: DatabaseAdapter) => Promise<T>, options?: TransactionOptions): Promise<T>;\n\n /** Eagerly open/verify connectivity (pool warm-up or first connection). */\n connect(): Promise<void>;\n\n /**\n * Gracefully close the connections open right now. NOT terminal: every\n * adapter constructs its pool/connection lazily, so a query issued after\n * `disconnect()` transparently opens a NEW connection and succeeds — the\n * documented contract (symmetric with lazy construction, and with Prisma's\n * `$disconnect()`-then-query semantics), not an accident.\n */\n disconnect(): Promise<void>;\n\n /**\n * Convert a JS array into the driver's preferred representation for a\n * scalar-array parameter (postgres `= ANY($n)`): PG array literal string for\n * drivers that send strings, the raw array for drivers with native support.\n */\n formatArrayParam(values: unknown[]): unknown;\n};\n\n// ─── Migration-compatible executor ────────────────────────────────\n\n/** Minimal SQL execution interface used by @vibeorm/migrate. */\nexport type SqlExecutor = (params: {\n text: string;\n values?: unknown[];\n}) => Promise<Record<string, unknown>[]>;\n\n/**\n * Bridge a DatabaseAdapter to the migrate package's SqlExecutor shape.\n *\n * NO SESSION AFFINITY — this bridge pins nothing. Every call goes through\n * `adapter.executeUnsafe`, which a pooled adapter runs on whatever connection\n * the pool hands out. @vibeorm/migrate's executor contract requires the\n * opposite (`packages/migrate/src/types.ts`): its session-scoped statements\n * (`BEGIN`/`COMMIT`, `PRAGMA foreign_keys`, `pg_advisory_lock` / `GET_LOCK`)\n * must all reach ONE session. pglite and sqlite satisfy that by construction;\n * a POOLED adapter (pg, mysql, bun) used for migrate must be constructed with\n * a single-connection pool (`max: 1`; mysql `connectionLimit: 1`), as the\n * `vibeorm` CLI does, or the caller must pin a connection another way —\n * otherwise the advisory lock is taken on one connection while each\n * migration's `BEGIN` runs on another, and a driver that reaps the idle\n * lock-holding connection (node-postgres does, after 10s by default) releases\n * the migration lock mid-run, silently.\n *\n * RE-ENTRANCY HAZARD: `pg_advisory_lock` is re-entrant per SESSION, so two\n * concurrent `applyMigrations` calls sharing one adapter (hence one pool) can\n * both \"acquire\" it on the same underlying connection and get zero mutual\n * exclusion — separate CLI processes never collide this way, a programmatic\n * caller sharing one adapter can.\n */\nexport function toSqlExecutor(params: { adapter: DatabaseAdapter }): SqlExecutor {\n const { adapter } = params;\n return async (queryParams) => {\n const result = await adapter.executeUnsafe({\n text: queryParams.text,\n values: queryParams.values,\n });\n return result.rows;\n };\n}\n",
|
|
6
6
|
"/**\n * `dbNow()` — the DATABASE clock as a value.\n *\n * Leases, TTLs and expiry comparisons must trust the database's clock, never\n * the process's (\"a process that slept past its own expiry cannot argue with\n * this comparison\"). The sentinel rides DateTime positions:\n *\n * - create/update data values: `data: { expiresAt: dbNow({ plusSeconds: 30 }) }`\n * - DateTime filters: `where: { expiresAt: { lt: dbNow() } }`\n *\n * and compiles to the dialect's own expression (`now()`, `NOW(6)`, an\n * ISO-8601 `strftime` on sqlite) — the offset binds as a parameter, the\n * expression is never string-built from caller input.\n *\n * Deliberately NOT a generic SQL escape hatch: the closed shape keeps every\n * rendering reviewable in the SQL catalog (constitution rule 3).\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\n\n/** The database-clock sentinel produced by {@link dbNow}. */\nexport type DbNow = {\n readonly __vibeDbNow: true;\n /** Seconds added to the database's now() (fractional OK; negative = past). */\n readonly offsetSeconds: number;\n};\n\n/**\n * Build a database-clock sentinel for DateTime data values and filters.\n *\n * @example Lease acquisition on the database's clock\n * ```ts\n * await tx.lease.update({\n * where: { id },\n * data: { expiresAt: dbNow({ plusSeconds: 30 }) },\n * });\n * const expired = await db.lease.findMany({ where: { expiresAt: { lt: dbNow() } } });\n * ```\n */\nexport function dbNow(options?: { readonly plusSeconds?: number }): DbNow {\n const offset = options?.plusSeconds ?? 0;\n if (typeof offset !== \"number\" || !Number.isFinite(offset)) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `dbNow plusSeconds must be a finite number of seconds (fractional is fine), got ${String(offset)}`,\n meta: { plusSeconds: offset },\n });\n }\n return { __vibeDbNow: true, offsetSeconds: offset };\n}\n\n/** Narrow a value to the {@link dbNow} sentinel (exact two-key shape). */\nexport function isDbNow(value: unknown): value is DbNow {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false;\n const keys = Object.keys(value);\n if (keys.length !== 2 || !keys.includes(\"__vibeDbNow\") || !keys.includes(\"offsetSeconds\")) {\n return false;\n }\n const candidate = value as { __vibeDbNow: unknown; offsetSeconds: unknown };\n return (\n candidate.__vibeDbNow === true &&\n typeof candidate.offsetSeconds === \"number\" &&\n Number.isFinite(candidate.offsetSeconds)\n );\n}\n",
|
|
@@ -15,10 +15,11 @@
|
|
|
15
15
|
"/**\n * Field-masking views — the v1 `db.defineView()` surface ported to v2\n * (board #11), renamed `$defineView` per v2's $-prefixed client-name rule.\n *\n * A view is a READ-ONLY scoped client over the models named in its definition.\n * Rows come back as `ViewResult` instances that expose only the definition's\n * fields; `reveal: { field: true }` makes an extra field readable as a\n * property while `JSON.stringify` still excludes it, and `$unsafe()` returns\n * everything. Relations load normally: when the related model is ALSO in the\n * definition its rows are masked recursively; when it is not, they pass\n * through untouched (v1 semantics).\n *\n * Isolated by design: this module wraps the public delegate surface\n * (`client.$models`) and never reaches into the query builder — the same SQL\n * runs, the ARGS are rewritten (definition fields become a `select`) and the\n * RESULT objects are wrapped.\n *\n * v1 → v2 deltas (documented in apps/tests/parity-fragments/views.md):\n * - `defineView` → `$defineView`; errors are `VibeError` codes, not strings.\n * - The definition is validated eagerly (unknown model / unknown field /\n * empty field set throw `VIBE_VALIDATION` at definition time).\n * - Write verbs exist on the view delegate but throw `VIBE_VALIDATION`\n * (mirroring v2's database-view read-only contract) — v1 left them\n * `undefined`.\n * - A nested `include` under a masked relation stays masked (v1 dropped the\n * restriction one level down); `omit` on a view query is refused loudly\n * (v1 stripped it silently).\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { ClientRow, ModelDelegate } from \"./client.ts\";\nimport type { ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\n\n// ─── Public types ─────────────────────────────────────────────────\n\n/**\n * A view definition: client-name model keys → the set of visible fields.\n * Example: `{ user: { id: true, name: true }, post: { id: true, title: true } }`.\n */\nexport type ViewDefinition = Record<string, Record<string, boolean | undefined>>;\n\n/** The read surface of one model under a view — writes throw `VIBE_VALIDATION`. */\nexport type ViewModelDelegate = {\n readonly findMany: (args?: ClientRow) => Promise<ViewResult[]>;\n readonly findFirst: (args?: ClientRow) => Promise<ViewResult | null>;\n readonly findFirstOrThrow: (args?: ClientRow) => Promise<ViewResult>;\n readonly findUnique: (args: ClientRow) => Promise<ViewResult | null>;\n readonly findUniqueOrThrow: (args: ClientRow) => Promise<ViewResult>;\n readonly count: (args?: ClientRow) => Promise<number | Record<string, number>>;\n readonly aggregate: (args: ClientRow) => Promise<ClientRow>;\n readonly groupBy: (args: ClientRow) => Promise<ClientRow[]>;\n} & Record<string, unknown>;\n\n/** What `$defineView` returns at the runtime level — the generated d.ts narrows it. */\nexport type ViewClientShape = Record<string, ViewModelDelegate>;\n\n/** The `$defineView` client method (runtime-level shape). */\nexport type DefineViewFn = (options: {\n readonly name: string;\n readonly definition: ViewDefinition;\n}) => ViewClientShape;\n\n// ─── Errors ───────────────────────────────────────────────────────\n\nfunction validationError(params: { message: string; meta: Record<string, unknown> }): VibeError {\n return new VibeError({ code: \"VIBE_VALIDATION\", message: params.message, meta: params.meta });\n}\n\n// ─── ViewResult ───────────────────────────────────────────────────\n\n/**\n * A masked row: visible + revealed fields are enumerable own properties,\n * `toJSON()` (used by `JSON.stringify`) drops revealed fields recursively,\n * `$unsafe()` returns a plain object with everything. Class methods are\n * prototype members, so they never show up in `Object.keys` / spread.\n */\nexport class ViewResult {\n /** Dynamic property access for view/revealed/relation fields. */\n [key: string]: unknown;\n\n /** @internal Field names revealed on this row (non-enumerable). */\n declare readonly _revealed: ReadonlySet<string>;\n\n constructor(params: {\n record: Readonly<Record<string, unknown>>;\n /** Every key to expose as a property (fields + revealed + relations). */\n expose: ReadonlySet<string>;\n revealed: ReadonlySet<string>;\n }) {\n const { record, expose, revealed } = params;\n Object.defineProperty(this, \"_revealed\", {\n value: revealed,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n for (const key of expose) {\n if (key in record) {\n this[key] = record[key];\n }\n }\n }\n\n /** Plain object WITHOUT revealed fields (what `JSON.stringify` sees), recursively. */\n toJSON(): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(this)) {\n if (this._revealed.has(key)) continue;\n const value = this[key];\n if (value instanceof ViewResult) {\n out[key] = value.toJSON();\n } else if (Array.isArray(value)) {\n out[key] = value.map((item) => (item instanceof ViewResult ? item.toJSON() : item));\n } else {\n out[key] = value;\n }\n }\n return out;\n }\n\n /** Plain object with ALL fields (view + revealed), recursively — the escape hatch. */\n $unsafe(): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const key of Object.keys(this)) {\n const value = this[key];\n if (value instanceof ViewResult) {\n out[key] = value.$unsafe();\n } else if (Array.isArray(value)) {\n out[key] = value.map((item) => (item instanceof ViewResult ? item.$unsafe() : item));\n } else {\n out[key] = value;\n }\n }\n return out;\n }\n}\n\n// ─── Definition resolution ────────────────────────────────────────\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/** One model's resolved mask: the model + its visible scalar field names. */\ntype ViewMask = {\n readonly model: ModelMeta;\n readonly fields: ReadonlySet<string>;\n};\n\n/** Definition entries resolved and validated, keyed by the model's CLIENT name. */\ntype ResolvedDefinition = ReadonlyMap<string, ViewMask>;\n\nfunction resolveDefinition(params: {\n meta: RuntimeMeta;\n name: string;\n definition: ViewDefinition;\n}): ResolvedDefinition {\n const { meta, name, definition } = params;\n if (!isPlainObject(definition)) {\n throw validationError({\n message: `view \"${name}\": definition must be an object of { modelKey: { field: true } }`,\n meta: { view: name },\n });\n }\n const resolved = new Map<string, ViewMask>();\n for (const [key, fieldSpec] of Object.entries(definition)) {\n if (fieldSpec === undefined) continue;\n const model = meta.modelByName.get(key);\n if (model === undefined) {\n throw validationError({\n message: `view \"${name}\": unknown model \"${key}\" in the definition`,\n meta: { view: name, model: key },\n });\n }\n if (!isPlainObject(fieldSpec)) {\n throw validationError({\n message: `view \"${name}\": definition.${key} must be an object of { field: true }`,\n meta: { view: name, model: model.name },\n });\n }\n const fields = new Set<string>();\n for (const [field, flag] of Object.entries(fieldSpec)) {\n if (flag === undefined || flag === false) continue;\n if (flag !== true) {\n throw validationError({\n message: `view \"${name}\": definition.${key}.${field} must be true`,\n meta: { view: name, model: model.name, field },\n });\n }\n if (!model.fieldByName.has(field)) {\n const isRelation = model.relationByName.has(field);\n throw validationError({\n message: isRelation\n ? `view \"${name}\": \"${field}\" on model \"${model.name}\" is a relation — a view definition lists scalar fields; relations are restricted through the related model's own entry`\n : `view \"${name}\": unknown field \"${field}\" on model \"${model.name}\"`,\n meta: { view: name, model: model.name, field },\n });\n }\n fields.add(field);\n }\n if (fields.size === 0) {\n throw validationError({\n message: `view \"${name}\": definition.${key} exposes no fields`,\n meta: { view: name, model: model.name },\n });\n }\n resolved.set(model.clientName, { model, fields });\n }\n if (resolved.size === 0) {\n throw validationError({\n message: `view \"${name}\": the definition names no models`,\n meta: { view: name },\n });\n }\n return resolved;\n}\n\n// ─── Args merging ─────────────────────────────────────────────────\n\n/** Per-level wrap instructions produced alongside the merged args. */\ntype WrapPlan = {\n /** Scalar keys (plus `_count` when requested) to expose on the ViewResult. */\n readonly expose: ReadonlySet<string>;\n readonly revealed: ReadonlySet<string>;\n /** Included relations: a nested plan when masked, `null` for passthrough. */\n readonly relations: ReadonlyMap<string, WrapPlan | null>;\n};\n\n/** Top-level args the merge passes through untouched. */\nconst PASSTHROUGH_ARG_KEYS: readonly string[] = [\n \"where\",\n \"orderBy\",\n \"take\",\n \"skip\",\n \"cursor\",\n \"distinct\",\n \"relationStrategy\",\n];\n\nfunction revealSet(params: {\n name: string;\n mask: ViewMask;\n reveal: unknown;\n}): Set<string> {\n const { name, mask, reveal } = params;\n const revealed = new Set<string>();\n if (reveal === undefined) return revealed;\n if (!isPlainObject(reveal)) {\n throw validationError({\n message: `view \"${name}\": reveal must be an object of { field: true }`,\n meta: { view: name, model: mask.model.name },\n });\n }\n for (const [field, flag] of Object.entries(reveal)) {\n if (flag === undefined || flag === false) continue;\n if (flag !== true) {\n throw validationError({\n message: `view \"${name}\": reveal.${field} must be true or false`,\n meta: { view: name, model: mask.model.name, field },\n });\n }\n if (!mask.model.fieldByName.has(field)) {\n throw validationError({\n message: `view \"${name}\": cannot reveal \"${field}\" — not a scalar field of model \"${mask.model.name}\"`,\n meta: { view: name, model: mask.model.name, field },\n });\n }\n // Revealing a field the view already shows is a no-op, not a reveal:\n // it stays visible in JSON output.\n if (!mask.fields.has(field)) revealed.add(field);\n }\n return revealed;\n}\n\n/**\n * Merge ONE level of user args with the view mask: the definition's fields\n * become a `select` (narrowed by the user's own select, widened by `reveal`),\n * relation entries from `include`/`select` are restricted recursively when\n * their target model is in the definition, and everything else passes through.\n */\nfunction mergeLevel(params: {\n meta: RuntimeMeta;\n name: string;\n definition: ResolvedDefinition;\n mask: ViewMask;\n args: Record<string, unknown>;\n}): { merged: Record<string, unknown>; plan: WrapPlan } {\n const { meta, name, definition, mask, args } = params;\n const model = mask.model;\n\n if (args.omit !== undefined) {\n throw validationError({\n message: `view \"${name}\": omit is not available on a view query — the definition already restricts ${model.name}'s fields`,\n meta: { view: name, model: model.name },\n });\n }\n\n const revealed = revealSet({ name, mask, reveal: args.reveal });\n\n // Scalar half of the user's select (relation keys are handled below).\n let scalars: Set<string>;\n const userSelect = args.select;\n if (userSelect !== undefined && !isPlainObject(userSelect)) {\n throw validationError({\n message: `view \"${name}\": select must be an object`,\n meta: { view: name, model: model.name },\n });\n }\n if (isPlainObject(userSelect)) {\n scalars = new Set<string>();\n for (const [key, flag] of Object.entries(userSelect)) {\n if (flag === false || flag === undefined) continue;\n // v1 semantics: select narrows WITHIN the view — outside keys are dropped.\n if (model.fieldByName.has(key) && mask.fields.has(key)) scalars.add(key);\n }\n if (scalars.size === 0) scalars = new Set(mask.fields);\n } else {\n scalars = new Set(mask.fields);\n }\n\n // Relation specs come from include and select alike (include wins on clash).\n const relationSpecs = new Map<string, unknown>();\n let countSpec: unknown;\n const collectRelations = (source: unknown, argName: string): void => {\n if (source === undefined) return;\n if (!isPlainObject(source)) {\n throw validationError({\n message: `view \"${name}\": ${argName} must be an object`,\n meta: { view: name, model: model.name },\n });\n }\n for (const [key, spec] of Object.entries(source)) {\n if (spec === false || spec === undefined) continue;\n if (key === \"_count\") {\n countSpec = spec;\n continue;\n }\n if (model.relationByName.has(key)) relationSpecs.set(key, spec);\n else if (argName === \"include\") {\n throw validationError({\n message: `view \"${name}\": unknown relation \"${key}\" on model \"${model.name}\" in include`,\n meta: { view: name, model: model.name, relation: key },\n });\n }\n }\n };\n collectRelations(args.select, \"select\");\n collectRelations(args.include, \"include\");\n\n // Effective select: scalars + revealed + relation specs (+ _count).\n const select: Record<string, unknown> = {};\n for (const key of scalars) select[key] = true;\n for (const key of revealed) select[key] = true;\n\n const relationPlans = new Map<string, WrapPlan | null>();\n for (const [relationName, spec] of relationSpecs) {\n const relation = model.relationByName.get(relationName);\n if (relation === undefined) continue; // collectRelations guaranteed presence\n const target = meta.modelByName.get(relation.targetModel);\n const targetMask = target === undefined ? undefined : definition.get(target.clientName);\n if (targetMask === undefined) {\n // Related model not in the definition — pass through unrestricted (v1).\n select[relationName] = spec;\n relationPlans.set(relationName, null);\n continue;\n }\n if (spec === true) {\n const child = mergeLevel({ meta, name, definition, mask: targetMask, args: {} });\n select[relationName] = child.merged;\n relationPlans.set(relationName, child.plan);\n continue;\n }\n if (!isPlainObject(spec)) {\n throw validationError({\n message: `view \"${name}\": include.${relationName} must be true or an object`,\n meta: { view: name, model: model.name, relation: relationName },\n });\n }\n const child = mergeLevel({ meta, name, definition, mask: targetMask, args: spec });\n select[relationName] = child.merged;\n relationPlans.set(relationName, child.plan);\n }\n\n const expose = new Set<string>(scalars);\n if (countSpec !== undefined) {\n select._count = countSpec;\n expose.add(\"_count\");\n }\n\n const merged: Record<string, unknown> = {};\n for (const key of PASSTHROUGH_ARG_KEYS) {\n if (args[key] !== undefined) merged[key] = args[key];\n }\n merged.select = select;\n\n return {\n merged,\n plan: { expose, revealed, relations: relationPlans },\n };\n}\n\n// ─── Result wrapping ──────────────────────────────────────────────\n\nfunction wrapRows(params: { rows: readonly ClientRow[]; plan: WrapPlan }): ViewResult[] {\n const { rows, plan } = params;\n return rows.map((row) => {\n const record: Record<string, unknown> = { ...row };\n const expose = new Set(plan.expose);\n for (const [relationName, childPlan] of plan.relations) {\n expose.add(relationName);\n if (childPlan === null) continue; // passthrough relation — leave rows as-is\n const value = record[relationName];\n if (Array.isArray(value)) {\n record[relationName] = wrapRows({ rows: value as ClientRow[], plan: childPlan });\n } else if (isPlainObject(value)) {\n record[relationName] = wrapRows({ rows: [value], plan: childPlan })[0];\n }\n }\n for (const key of plan.revealed) expose.add(key);\n return new ViewResult({ record, expose, revealed: plan.revealed });\n });\n}\n\n// ─── View delegates ───────────────────────────────────────────────\n\nconst VIEW_WRITE_METHODS: readonly string[] = [\n \"create\",\n \"createMany\",\n \"createManyAndReturn\",\n \"update\",\n \"updateMany\",\n \"upsert\",\n \"delete\",\n \"deleteMany\",\n];\n\nfunction createViewDelegate(params: {\n meta: RuntimeMeta;\n name: string;\n definition: ResolvedDefinition;\n mask: ViewMask;\n delegate: ModelDelegate;\n}): ViewModelDelegate {\n const { meta, name, definition, mask, delegate } = params;\n\n const merge = (args: ClientRow | undefined): { merged: Record<string, unknown>; plan: WrapPlan } => {\n const raw = args ?? {};\n if (!isPlainObject(raw)) {\n throw validationError({\n message: `view \"${name}\": query args must be an object`,\n meta: { view: name, model: mask.model.name },\n });\n }\n return mergeLevel({ meta, name, definition, mask, args: raw });\n };\n\n const wrapOne = (row: ClientRow | null, plan: WrapPlan): ViewResult | null => {\n if (row === null) return null;\n return wrapRows({ rows: [row], plan })[0] ?? null;\n };\n\n const view: Record<string, unknown> = {\n findMany: async (args?: ClientRow): Promise<ViewResult[]> => {\n const { merged, plan } = merge(args);\n return wrapRows({ rows: await delegate.findMany(merged), plan });\n },\n findFirst: async (args?: ClientRow): Promise<ViewResult | null> => {\n const { merged, plan } = merge(args);\n return wrapOne(await delegate.findFirst(merged), plan);\n },\n findFirstOrThrow: async (args?: ClientRow): Promise<ViewResult> => {\n const { merged, plan } = merge(args);\n return wrapRows({ rows: [await delegate.findFirstOrThrow(merged)], plan })[0] as ViewResult;\n },\n findUnique: async (args: ClientRow): Promise<ViewResult | null> => {\n const { merged, plan } = merge(args);\n return wrapOne(await delegate.findUnique(merged), plan);\n },\n findUniqueOrThrow: async (args: ClientRow): Promise<ViewResult> => {\n const { merged, plan } = merge(args);\n return wrapRows({ rows: [await delegate.findUniqueOrThrow(merged)], plan })[0] as ViewResult;\n },\n // Aggregations pass through untouched (v1): they return computed values,\n // not rows, so the mask has nothing to hide.\n count: (args?: ClientRow): Promise<number | Record<string, number>> => delegate.count(args),\n aggregate: (args: ClientRow): Promise<ClientRow> => delegate.aggregate(args),\n groupBy: (args: ClientRow): Promise<ClientRow[]> => delegate.groupBy(args),\n };\n\n for (const method of VIEW_WRITE_METHODS) {\n view[method] = (): never => {\n throw validationError({\n message: `view \"${name}\" is read-only — ${method}() is not available on a field-masking view; write through the base client instead`,\n meta: { view: name, model: mask.model.name, method },\n });\n };\n }\n\n return view as ViewModelDelegate;\n}\n\n// ─── Entry points ─────────────────────────────────────────────────\n\n/**\n * Build a field-masking view client over an existing client's delegates.\n *\n * @throws VibeError `VIBE_VALIDATION` on an invalid definition (unknown model,\n * unknown or relation field, empty field set).\n */\nexport function createView(params: {\n meta: RuntimeMeta;\n models: Readonly<Record<string, ModelDelegate>>;\n name: string;\n definition: ViewDefinition;\n}): ViewClientShape {\n const { meta, models, name, definition } = params;\n const resolved = resolveDefinition({ meta, name, definition });\n const view: Record<string, ViewModelDelegate> = {};\n for (const [clientName, mask] of resolved) {\n const delegate = models[clientName];\n if (delegate === undefined) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `view \"${name}\": no delegate for model \"${mask.model.name}\"`,\n meta: { view: name, model: mask.model.name },\n });\n }\n view[clientName] = createViewDelegate({ meta, name, definition: resolved, mask, delegate });\n }\n return view;\n}\n\n/**\n * Attach `$defineView` to a built client (called by `buildClient`; transaction\n * clients get their own attachment because `$transaction` rebuilds the client).\n */\nexport function attachDefineView(params: {\n client: object;\n meta: RuntimeMeta;\n models: Readonly<Record<string, ModelDelegate>>;\n}): void {\n const { client, meta, models } = params;\n const value: DefineViewFn = (options) =>\n createView({ meta, models, name: options.name, definition: options.definition });\n Object.defineProperty(client, \"$defineView\", { value, enumerable: true });\n}\n",
|
|
16
16
|
"/**\n * Opt-in write-boundary validation (EPIC 3) — Standard-Schema validators\n * mounted per model × field, run on every write path (nested creates\n * included) BEFORE the data reaches the encoder. Decode-side is deliberately\n * untouched: validation taxes writes the caller opted into, never every row\n * materialization (rule 8; board #30).\n *\n * The interface is the published Standard Schema contract\n * (https://standardschema.dev) — zod, valibot and arktype all implement it —\n * vendored as a minimal type so the runtime takes no dependency.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\n\n// ─── Standard Schema (minimal vendored contract) ─────────────────\n\n/** One validation issue as Standard Schema defines it. */\nexport type StandardIssue = {\n readonly message: string;\n readonly path?: ReadonlyArray<PropertyKey | { readonly key: PropertyKey }>;\n};\n\n/** The Standard Schema v1 contract — the only surface the runtime touches. */\nexport type StandardSchemaV1<Input = unknown, Output = Input> = {\n readonly \"~standard\": {\n readonly version: 1;\n readonly vendor: string;\n readonly validate: (\n value: unknown,\n ) => { value: Output; issues?: undefined } | { issues: readonly StandardIssue[] } | Promise<unknown>;\n };\n};\n\n/** Per-model, per-field validator config: `{ User: { settings: zodSchema } }`. */\nexport type WriteValidators = {\n readonly [model: string]: { readonly [field: string]: StandardSchemaV1 };\n};\n\n// ─── Application ─────────────────────────────────────────────────\n\nfunction validationFailed(params: {\n model: string;\n field: string;\n issues: readonly StandardIssue[];\n}): VibeError {\n return new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `validation failed for ${params.model}.${params.field}: ${params.issues[0]?.message ?? \"invalid value\"}`,\n meta: { model: params.model, field: params.field, issues: params.issues },\n });\n}\n\nfunction validateValue(params: {\n model: string;\n field: string;\n schema: StandardSchemaV1;\n value: unknown;\n}): unknown {\n const result = params.schema[\"~standard\"].validate(params.value);\n if (result instanceof Promise) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `async validator on ${params.model}.${params.field} — write validators must be synchronous (validate before calling the client for async rules)`,\n meta: { model: params.model, field: params.field },\n });\n }\n if (result.issues !== undefined) {\n throw validationFailed({ model: params.model, field: params.field, issues: result.issues });\n }\n return result.value;\n}\n\n/**\n * Validate one data row (create/update shape) for `model`, recursing into\n * nested `create`/`createMany`/`connectOrCreate.create`/`upsert.create` and\n * nested `update` bodies on related models that carry validators. Returns the\n * (possibly transformed) data — Standard Schema allows coercion.\n */\nexport function validateWriteData(params: {\n meta: RuntimeMeta;\n model: ModelMeta;\n data: Record<string, unknown>;\n validators: WriteValidators;\n}): Record<string, unknown> {\n const { meta, model, data, validators } = params;\n const fieldSchemas = validators[model.name];\n const out: Record<string, unknown> = { ...data };\n\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) continue;\n const schema = fieldSchemas?.[key];\n if (schema !== undefined) {\n // Atomic operators ({ set: v }) validate the inner value.\n const isOperator =\n typeof value === \"object\" && value !== null && !Array.isArray(value) && \"set\" in (value as object);\n if (isOperator) {\n const inner = (value as { set: unknown }).set;\n out[key] = { set: validateValue({ model: model.name, field: key, schema, value: inner }) };\n } else {\n out[key] = validateValue({ model: model.name, field: key, schema, value });\n }\n continue;\n }\n\n // Nested relation writes: recurse into bodies that CREATE or UPDATE rows.\n const relation = model.relationByName.get(key);\n if (relation === undefined || typeof value !== \"object\" || value === null) continue;\n const target = meta.modelByName.get(relation.targetModel);\n if (target === undefined || validators[target.name] === undefined) continue;\n\n const verbs = value as Record<string, unknown>;\n const recurse = (row: unknown): unknown =>\n typeof row === \"object\" && row !== null\n ? validateWriteData({ meta, model: target, data: row as Record<string, unknown>, validators })\n : row;\n const next: Record<string, unknown> = { ...verbs };\n if (verbs.create !== undefined) {\n next.create = Array.isArray(verbs.create) ? verbs.create.map(recurse) : recurse(verbs.create);\n }\n if (verbs.connectOrCreate !== undefined) {\n const entries = Array.isArray(verbs.connectOrCreate) ? verbs.connectOrCreate : [verbs.connectOrCreate];\n const mapped = entries.map((entry) => {\n const pair = entry as { where: unknown; create: unknown };\n return { ...pair, create: recurse(pair.create) };\n });\n next.connectOrCreate = Array.isArray(verbs.connectOrCreate) ? mapped : mapped[0];\n }\n if (verbs.update !== undefined && !Array.isArray(verbs.update)) {\n const body = verbs.update as { where?: unknown; data?: unknown };\n next.update = body.data !== undefined ? { ...body, data: recurse(body.data) } : recurse(body);\n }\n if (verbs.upsert !== undefined && !Array.isArray(verbs.upsert)) {\n const body = verbs.upsert as { where: unknown; create: unknown; update: unknown };\n next.upsert = { ...body, create: recurse(body.create), update: recurse(body.update) };\n }\n out[key] = next;\n }\n return out;\n}\n\n/** Rewrite a write method's args through the validators; non-write args pass through untouched. */\nexport function applyWriteValidators(params: {\n meta: RuntimeMeta;\n model: ModelMeta;\n method: string;\n args: Record<string, unknown>;\n validators: WriteValidators;\n}): Record<string, unknown> {\n const { meta, model, method, args, validators } = params;\n const validate = (row: unknown): unknown =>\n typeof row === \"object\" && row !== null\n ? validateWriteData({ meta, model, data: row as Record<string, unknown>, validators })\n : row;\n\n if (method === \"create\" || method === \"update\" || method === \"updateMany\") {\n return args.data === undefined ? args : { ...args, data: validate(args.data) };\n }\n if (method === \"createMany\" || method === \"createManyAndReturn\") {\n return Array.isArray(args.data) ? { ...args, data: args.data.map(validate) } : args;\n }\n if (method === \"upsert\") {\n return { ...args, create: validate(args.create), update: validate(args.update) };\n }\n return args;\n}\n",
|
|
17
17
|
"/**\n * Policy scoping — `$withPolicy` / `$bypassPolicy` (EPIC 4b).\n *\n * Application-level ROW scoping for models declaring `@@policy`, implemented\n * as an args-rewriting layer over the built delegates (the views.ts pattern:\n * ZERO query-builder edits — every emitted statement is a shape the catalogs\n * already pin). Complements `$defineView` (COLUMN masking) and, on postgres,\n * database RLS (the defense-in-depth backstop; see docs/migrations.md).\n *\n * Semantics:\n * - FAIL CLOSED: on a client whose schema declares any @@policy, the base\n * delegates of policied models refuse every method until the caller binds\n * a context (`$withPolicy({ tenant })`) or bypasses deliberately\n * (`$bypassPolicy()` — explicit and greppable).\n * - Reads AND the policy predicate into `where` (findUnique rewrites to\n * findFirst over the flattened unique key). Policied CHILD models are\n * scoped inside include/select at any depth.\n * - `create`/`createMany` FORCE the context value into the data (a\n * conflicting explicit value is VIBE_VALIDATION). Nested `create` on a\n * policied child is forced too.\n * - `update`/`delete`/`upsert` run as lock-read (FOR UPDATE) + write-by-PK\n * inside one transaction; a cross-context target is VIBE_NOT_FOUND.\n * - Nested verbs REFERENCING existing rows of a policied child (connect,\n * connectOrCreate, set, disconnect, nested update/delete/upsert) are\n * REFUSED from a scoped client in this first cut — fail-closed beats a\n * silent hole. `$queryRaw`/`$executeRaw` are outside policy by design.\n */\n\nimport { VibeError } from \"@vibeorm/schema\";\nimport type { ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\nimport type { BatchResult, ClientRow, DynamicClient, ModelDelegate } from \"./client.ts\";\nimport { attachDefineView } from \"./views.ts\";\n\n/** Values a policy context may bind — the scoping column's scalar shape. */\nexport type PolicyContextValue = string | number | bigint;\n\ntype PolicyContext = Readonly<Record<string, PolicyContextValue>>;\n\nfunction policyError(message: string, meta?: Record<string, unknown>): VibeError {\n return new VibeError({ code: \"VIBE_VALIDATION\", message, meta: meta ?? {} });\n}\n\nfunction policiedModels(meta: RuntimeMeta): ModelMeta[] {\n return meta.models.filter((model) => model.policy !== undefined);\n}\n\n// ─── Where / args rewriting ──────────────────────────────────────\n\nfunction mergeWhere(params: { where: unknown; field: string; value: PolicyContextValue }): ClientRow {\n const { where, field, value } = params;\n const predicate: ClientRow = { [field]: value };\n return where === undefined ? predicate : { AND: [where as ClientRow, predicate] };\n}\n\n/** Flatten a unique where ({ id } or { a_b: {...} }) into a plain filter object. */\nfunction uniqueToFilter(params: { model: ModelMeta; where: ClientRow }): ClientRow {\n const out: ClientRow = {};\n for (const [key, value] of Object.entries(params.where)) {\n const isCompound =\n typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n params.model.compoundUniques.has(key);\n if (isCompound) Object.assign(out, value as ClientRow);\n else out[key] = value;\n }\n return out;\n}\n\n/** Scope policied child models inside include/select relation args, any depth. */\nfunction scopeSelection(params: {\n meta: RuntimeMeta;\n model: ModelMeta;\n args: ClientRow;\n context: PolicyContext;\n}): ClientRow {\n const { meta, model, args, context } = params;\n const out: ClientRow = { ...args };\n for (const key of [\"include\", \"select\"] as const) {\n const block = args[key];\n if (typeof block !== \"object\" || block === null) continue;\n const next: ClientRow = { ...(block as ClientRow) };\n for (const [name, spec] of Object.entries(block as ClientRow)) {\n const relation = model.relationByName.get(name);\n if (relation === undefined) continue;\n const target = meta.modelByName.get(relation.targetModel);\n if (target?.policy === undefined) continue;\n const value = context[target.policy.context] as PolicyContextValue;\n const spec2: ClientRow = spec === true ? {} : { ...(spec as ClientRow) };\n spec2.where = mergeWhere({ where: spec2.where, field: target.policy.field, value });\n next[name] = scopeSelection({ meta, model: target, args: spec2, context });\n }\n out[key] = next;\n }\n return out;\n}\n\nconst REFERENCE_VERBS = [\"connect\", \"connectOrCreate\", \"set\", \"disconnect\", \"update\", \"updateMany\", \"delete\", \"deleteMany\", \"upsert\"];\n\n/** Force the context into create data; recurse into nested creates; refuse reference verbs on policied children. */\nfunction forceCreateData(params: {\n meta: RuntimeMeta;\n model: ModelMeta;\n data: ClientRow;\n context: PolicyContext;\n}): ClientRow {\n const { meta, model, data, context } = params;\n const out: ClientRow = { ...data };\n if (model.policy !== undefined) {\n const value = context[model.policy.context] as PolicyContextValue;\n const given = data[model.policy.field];\n if (given !== undefined && given !== value) {\n throw policyError(\n `create on ${model.name}: data.${model.policy.field} conflicts with the bound policy context`,\n { model: model.name, field: model.policy.field },\n );\n }\n out[model.policy.field] = value;\n }\n for (const [name, spec] of Object.entries(data)) {\n const relation = model.relationByName.get(name);\n if (relation === undefined || typeof spec !== \"object\" || spec === null) continue;\n const target = meta.modelByName.get(relation.targetModel);\n if (target?.policy === undefined) continue;\n const verbs = spec as ClientRow;\n for (const verb of REFERENCE_VERBS) {\n if (verbs[verb] !== undefined) {\n throw policyError(\n `nested ${verb} on policied model ${target.name} is not policy-safe from a scoped client — perform it in an explicit $transaction on the scoped delegate`,\n { model: model.name, relation: name, verb },\n );\n }\n }\n if (verbs.create !== undefined) {\n const recurse = (row: unknown): unknown =>\n forceCreateData({ meta, model: target, data: row as ClientRow, context });\n out[name] = { ...verbs, create: Array.isArray(verbs.create) ? verbs.create.map(recurse) : recurse(verbs.create) };\n }\n }\n return out;\n}\n\n// ─── Scoped delegate ─────────────────────────────────────────────\n\nfunction scopedDelegate(params: {\n meta: RuntimeMeta;\n model: ModelMeta;\n base: ModelDelegate & Record<string, unknown>;\n context: PolicyContext;\n transaction: DynamicClient[\"$transaction\"];\n}): ModelDelegate {\n const { meta, model, base, context, transaction } = params;\n const policy = model.policy as NonNullable<ModelMeta[\"policy\"]>;\n const value = context[policy.context] as PolicyContextValue;\n const pk = model.primaryKey.map((field) => field.name);\n\n const scopeFind = (args?: ClientRow): ClientRow => {\n const scoped = scopeSelection({ meta, model, args: args ?? {}, context });\n return { ...scoped, where: mergeWhere({ where: scoped.where, field: policy.field, value }) };\n };\n const scopeUnique = (args: ClientRow): ClientRow => {\n const scoped = scopeSelection({ meta, model, args, context });\n const flat = uniqueToFilter({ model, where: (args.where ?? {}) as ClientRow });\n return { ...scoped, where: mergeWhere({ where: flat, field: policy.field, value }) };\n };\n /** The client key that addresses the (possibly compound) primary key. */\n const pkClientKey = (): string => {\n for (const [key, group] of model.compoundUniques) {\n const names = group.fields.map((field) => field.name);\n if (names.length === pk.length && names.every((name) => pk.includes(name))) return key;\n }\n return pk.join(\"_\");\n };\n /**\n * Lock-read the policied row, then run `write` addressed by its PK.\n * Deliberately through tx.$bypassPolicy(): the tx client's own delegates are\n * fail-closed guards, and every filter here was ALREADY policy-merged by\n * this wrapper — the bypass unlocks the raw delegate, not the scoping.\n */\n const lockThen = <T>(args: ClientRow, write: (raw: DynamicClient, pkWhere: ClientRow) => Promise<T>): Promise<T | null> =>\n transaction(async (tx) => {\n const raw = tx.$bypassPolicy === undefined ? tx : tx.$bypassPolicy();\n const target = await (raw.$models[model.name] as ModelDelegate).findFirst({\n where: scopeUnique(args).where,\n select: Object.fromEntries(pk.map((name) => [name, true])),\n lock: \"update\",\n });\n if (target === null) return null;\n const pkWhere: ClientRow =\n pk.length === 1\n ? { [pk[0] as string]: (target as ClientRow)[pk[0] as string] }\n : { [pkClientKey()]: Object.fromEntries(pk.map((name) => [name, (target as ClientRow)[name]])) };\n return write(raw, pkWhere);\n }) as Promise<T | null>;\n const notFound = (method: string): VibeError =>\n new VibeError({ code: \"VIBE_NOT_FOUND\", message: `${method} on ${model.name}: no row matches the unique where inside the bound policy context`, meta: { model: model.name, method } });\n\n return {\n findMany: (args?: ClientRow) => base.findMany(scopeFind(args)),\n findFirst: (args?: ClientRow) => base.findFirst(scopeFind(args)),\n findFirstOrThrow: (args?: ClientRow) => base.findFirstOrThrow(scopeFind(args)),\n findUnique: (args: ClientRow) => base.findFirst(scopeUnique(args)),\n findUniqueOrThrow: (args: ClientRow) => base.findFirstOrThrow(scopeUnique(args)),\n // async on purpose: forceCreateData's refusals must surface as REJECTIONS.\n create: async (args: ClientRow) =>\n base.create({ ...args, data: forceCreateData({ meta, model, data: (args.data ?? {}) as ClientRow, context }) }),\n createMany: async (args: ClientRow) =>\n base.createMany({\n ...args,\n data: ((args.data ?? []) as ClientRow[]).map((row) => forceCreateData({ meta, model, data: row, context })),\n }),\n createManyAndReturn: async (args: ClientRow) =>\n base.createManyAndReturn({\n ...args,\n data: ((args.data ?? []) as ClientRow[]).map((row) => forceCreateData({ meta, model, data: row, context })),\n }),\n update: async (args: ClientRow) => {\n const row = await lockThen(args, (raw, pkWhere) =>\n (raw.$models[model.name] as ModelDelegate).update({ ...args, where: pkWhere }),\n );\n if (row === null) throw notFound(\"update\");\n return row;\n },\n updateMany: (args: ClientRow) =>\n base.updateMany({ ...args, where: mergeWhere({ where: args.where, field: policy.field, value }) }),\n upsert: async (args: ClientRow) => {\n const row = await lockThen(args, (raw, pkWhere) =>\n (raw.$models[model.name] as ModelDelegate).update({ where: pkWhere, data: args.update, ...(args.select === undefined ? {} : { select: args.select }) }),\n );\n if (row !== null) return row;\n // Miss inside the context → create arm (forced). A concurrent create\n // surfaces VIBE_UNIQUE_VIOLATION — documented, never hidden.\n return (await base.create({\n data: forceCreateData({ meta, model, data: (args.create ?? {}) as ClientRow, context }),\n ...(args.select === undefined ? {} : { select: args.select }),\n })) as ClientRow;\n },\n delete: async (args: ClientRow) => {\n const row = await lockThen(args, (raw, pkWhere) =>\n (raw.$models[model.name] as ModelDelegate).delete({ ...args, where: pkWhere }),\n );\n if (row === null) throw notFound(\"delete\");\n return row;\n },\n deleteMany: (args?: ClientRow) =>\n base.deleteMany({ ...(args ?? {}), where: mergeWhere({ where: args?.where, field: policy.field, value }) }) as Promise<BatchResult>,\n count: (args?: ClientRow) => base.count(scopeFind(args)),\n aggregate: (args: ClientRow) => base.aggregate(scopeFind(args)),\n groupBy: (args: ClientRow) => base.groupBy(scopeFind(args)),\n };\n}\n\n/** Wrap extension surfaces: functions taking `{ where }` get the policy AND-ed in. */\nfunction scopeExtensionProps(params: {\n base: Record<string, unknown>;\n delegate: ModelDelegate;\n field: string;\n value: PolicyContextValue;\n}): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [key, prop] of Object.entries(params.base)) {\n if (key in params.delegate) continue;\n if (typeof prop === \"function\") {\n out[key] = (args?: ClientRow) =>\n (prop as (a?: ClientRow) => unknown)({ ...(args ?? {}), where: mergeWhere({ where: args?.where, field: params.field, value: params.value }) });\n } else if (typeof prop === \"object\" && prop !== null) {\n out[key] = scopeExtensionProps({ base: prop as Record<string, unknown>, delegate: {} as ModelDelegate, field: params.field, value: params.value });\n }\n }\n return out;\n}\n\n// ─── Attach ──────────────────────────────────────────────────────\n\n/**\n * Attach `$withPolicy`/`$bypassPolicy` and fail-close the base delegates of\n * policied models. No-op on schemas without @@policy.\n */\nexport function attachPolicy(params: { client: DynamicClient; meta: RuntimeMeta }): void {\n const { client, meta } = params;\n const policied = policiedModels(meta);\n if (policied.length === 0) return;\n\n const originals = new Map<string, ModelDelegate & Record<string, unknown>>();\n for (const model of policied) {\n const original = client.$models[model.name] as ModelDelegate & Record<string, unknown>;\n // Shallow-copy BEFORE guarding: the guards mutate the live delegate in\n // place (top-level props and $models alias the same object), so the saved\n // originals must be a separate object or they would be guarded too.\n originals.set(model.name, { ...original });\n // Rejects (not throws): delegate methods promise a Promise — a sync throw\n // would bypass `.catch`/`rejects` handling in every caller.\n const guard = (method: string) => (): Promise<never> =>\n Promise.reject(\n policyError(\n `model ${model.name} declares @@policy — bind a context with $withPolicy({ ${model.policy?.context}: ... }) or bypass deliberately with $bypassPolicy()`,\n { model: model.name, method },\n ),\n );\n const guarded: Record<string, unknown> = {};\n for (const key of Object.keys(original)) {\n guarded[key] = typeof original[key] === \"function\" ? guard(key) : original[key];\n }\n Object.assign(original as object, guarded);\n }\n\n const buildScoped = (context: PolicyContext): DynamicClient => {\n for (const model of policied) {\n const key = model.policy?.context as string;\n if (context[key] === undefined || context[key] === null) {\n throw policyError(`$withPolicy: missing context value \"${key}\" (required by ${model.name})`, { context: key });\n }\n }\n const scoped = Object.create(client) as DynamicClient & Record<string, unknown>;\n const scopedModels: Record<string, ModelDelegate> = { ...client.$models };\n for (const model of policied) {\n const base = originals.get(model.name) as ModelDelegate & Record<string, unknown>;\n const value = context[model.policy?.context as string] as PolicyContextValue;\n const delegate = scopedDelegate({ meta, model, base, context, transaction: client.$transaction });\n const full = { ...delegate, ...scopeExtensionProps({ base, delegate, field: model.policy?.field as string, value }) };\n scopedModels[model.name] = full as ModelDelegate;\n scopedModels[model.clientName] = full as ModelDelegate;\n // defineProperty, not assignment: the base client's delegate props are\n // non-writable, and [[Set]] through the prototype chain honors that.\n Object.defineProperty(scoped, model.clientName, { value: full, enumerable: true });\n }\n Object.defineProperty(scoped, \"$models\", { value: scopedModels, enumerable: true });\n // The prototype's $defineView closes over the GUARDED base delegates —\n // rebuild views over the scoped map so masking composes with the policy.\n attachDefineView({ client: scoped, meta, models: scopedModels });\n Object.defineProperty(scoped, \"$transaction\", {\n value: (arg: unknown, options?: unknown) =>\n typeof arg === \"function\"\n ? client.$transaction((tx) => (arg as (t: DynamicClient) => Promise<unknown>)(buildScopedOver(tx, context)), options as never)\n : client.$transaction(arg as never, options as never),\n enumerable: true,\n });\n return scoped;\n };\n\n // Scoped view over a TRANSACTION client: same rewrite, the tx client's RAW\n // delegates underneath (its own attachPolicy has guarded them — bypass).\n const buildScopedOver = (tx: DynamicClient, context: PolicyContext): DynamicClient => {\n const rawTx = tx.$bypassPolicy === undefined ? tx : tx.$bypassPolicy();\n const inner = Object.create(tx) as DynamicClient & Record<string, unknown>;\n const scopedModels: Record<string, ModelDelegate> = { ...tx.$models };\n for (const model of policied) {\n const base = rawTx.$models[model.name] as ModelDelegate & Record<string, unknown>;\n const delegate = scopedDelegate({ meta, model, base, context, transaction: tx.$transaction });\n scopedModels[model.name] = delegate;\n scopedModels[model.clientName] = delegate;\n Object.defineProperty(inner, model.clientName, { value: delegate, enumerable: true });\n }\n Object.defineProperty(inner, \"$models\", { value: scopedModels, enumerable: true });\n attachDefineView({ client: inner, meta, models: scopedModels });\n return inner;\n };\n\n Object.defineProperty(client, \"$withPolicy\", { value: (context: PolicyContext) => buildScoped(context), enumerable: true });\n Object.defineProperty(client, \"$bypassPolicy\", {\n value: (): DynamicClient => {\n const bypass = Object.create(client) as DynamicClient & Record<string, unknown>;\n const models: Record<string, ModelDelegate> = { ...client.$models };\n for (const model of policied) {\n const original = originals.get(model.name) as ModelDelegate;\n models[model.name] = original;\n models[model.clientName] = original;\n Object.defineProperty(bypass, model.clientName, { value: original, enumerable: true });\n }\n Object.defineProperty(bypass, \"$models\", { value: models, enumerable: true });\n attachDefineView({ client: bypass, meta, models });\n return bypass;\n },\n enumerable: true,\n });\n}\n",
|
|
18
|
-
"/**\n * The dynamic client: model delegates over a `DatabaseAdapter`, built from the\n * Schema IR at runtime.\n *\n * This is the engine the generated client wraps in P2 proper. It is deliberately\n * untyped-per-model — the generator emits a `.d.ts` that declares each delegate\n * with precise argument and result types, and casts to it. Nothing about the\n * shape of a query lives here: `query-builder.ts` builds statements,\n * `@vibeorm/sql` renders them, `codecs.ts` moves values across the wire,\n * `relation-loader.ts` attaches included relations, `nested-writes.ts`\n * orchestrates relation verbs inside create/update data.\n *\n * Execution split:\n * - row-returning statements use `adapter.execute` (the cached hot path),\n * - count-returning mutations (createMany/updateMany/deleteMany) use\n * `adapter.executeUnsafe`, the only place the frozen adapter contract\n * surfaces `affectedRows`.\n */\n\nimport { VibeError, unsupportedCapability } from \"@vibeorm/schema\";\nimport type { Dialect, SchemaIR } from \"@vibeorm/schema\";\nimport { ParamCollector, getSqlDialect } from \"@vibeorm/sql\";\nimport type { SelectStatement, SqlDialect, SqlStatement } from \"@vibeorm/sql\";\nimport type { DatabaseAdapter, TransactionOptions } from \"./adapter.ts\";\nimport { decodeAggregateValue, materializeRows } from \"./codecs.ts\";\nimport { StatementRenderCache, renderStatementCached } from \"./render-cache.ts\";\nimport { buildRuntimeMeta, getModelMeta } from \"./model-meta.ts\";\nimport type { FieldMeta, ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\nimport { COUNT_ALIAS, buildQuery, resolveResultShape, upsertUsesNativeStatement } from \"./query-builder.ts\";\nimport type { AggregateSpec, QueryMethod, QueryPlan, RelationStrategy, ResortKey } from \"./query-builder.ts\";\nimport { attachLateralRelations, attachRelations } from \"./relation-loader.ts\";\nimport type { RelationExecutor } from \"./relation-loader.ts\";\nimport { createWithNested, hasNestedWrites, updateWithNested } from \"./nested-writes.ts\";\nimport type { StatementRunner, WriteContext } from \"./nested-writes.ts\";\nimport type { RelationSelection } from \"./relation-plan.ts\";\nimport { applyComputedFields, assertComputedManifest } from \"./computed.ts\";\nimport type { ClientComputedOptions } from \"./computed.ts\";\nimport {\n assertExtensionManifest,\n buildConnectHooks,\n buildExtensionOperatorMap,\n} from \"./extensions.ts\";\nimport type {\n ClientExtensionMount,\n ClientExtensionsOptions,\n ConnectHook,\n ExtensionMountContext,\n} from \"./extensions.ts\";\nimport { compileWhere } from \"./query-builder.ts\";\nimport { attachDefineView } from \"./views.ts\";\nimport type { DefineViewFn } from \"./views.ts\";\nimport { applyWriteValidators } from \"./validators.ts\";\nimport type { WriteValidators } from \"./validators.ts\";\nimport { attachPolicy } from \"./policy.ts\";\nimport type { PolicyContextValue } from \"./policy.ts\";\n\n// ─── Public types ─────────────────────────────────────────────────\n\n/** One executed statement, reported to `ClientOptions.onQuery`. */\nexport type QueryEvent = {\n /** Model name, or `null` for raw queries. */\n readonly model: string | null;\n /** ORM method, or `\"$queryRaw\"` / `\"$executeRaw\"`. */\n readonly method: string;\n readonly text: string;\n readonly values: readonly unknown[];\n readonly durationMs: number;\n};\n\nexport type ClientOptions = {\n /** Called after every statement — logging, tracing, test assertions. */\n readonly onQuery?: (event: QueryEvent) => void;\n /**\n * Default relation-loading strategy: `\"query\"` (batched WHERE-IN, portable,\n * the default) or `\"join\"` (LATERAL + JSON aggregation, postgres/pglite\n * only). A per-query `relationStrategy` argument overrides it.\n */\n readonly relationStrategy?: RelationStrategy;\n /**\n * Append the primary key to ORDER BY when a find has no explicit orderBy\n * (default false) — deterministic row order at the cost of a sort. v1 parity.\n */\n readonly defaultOrderByPk?: boolean;\n /**\n * Append the primary key as a tie-breaker to `distinct` ordering (default\n * TRUE) — without it, WHICH row represents each distinct key is unspecified.\n * v1 parity.\n */\n readonly distinctOrderByPk?: boolean;\n /**\n * Opt-in write-boundary validators (Standard Schema, per model × field):\n * `{ User: { settings: zodSchema } }`. Run on every write path (nested\n * creates included) before encoding; failure throws VIBE_VALIDATION with\n * the validator's issues in `meta`. Reads are never taxed.\n */\n readonly validate?: WriteValidators;\n};\n\n/** Rows are plain objects keyed by field name; the generated client narrows them. */\nexport type ClientRow = Record<string, unknown>;\n\n/** Result of the count-returning batch methods. */\nexport type BatchResult = { readonly count: number };\n\n/**\n * A model's methods. Arguments and results are intentionally broad here — the\n * generated `.d.ts` replaces this surface with precise per-model types, and\n * keeping the runtime free of inference is what holds the type-cost budget\n * (constitution rule 2).\n */\nexport type ModelDelegate = {\n readonly findMany: (args?: ClientRow) => Promise<ClientRow[]>;\n readonly findFirst: (args?: ClientRow) => Promise<ClientRow | null>;\n readonly findFirstOrThrow: (args?: ClientRow) => Promise<ClientRow>;\n readonly findUnique: (args: ClientRow) => Promise<ClientRow | null>;\n readonly findUniqueOrThrow: (args: ClientRow) => Promise<ClientRow>;\n readonly create: (args: ClientRow) => Promise<ClientRow | null>;\n readonly createMany: (args: ClientRow) => Promise<BatchResult>;\n readonly createManyAndReturn: (args: ClientRow) => Promise<ClientRow[]>;\n readonly update: (args: ClientRow) => Promise<ClientRow>;\n readonly updateMany: (args: ClientRow) => Promise<BatchResult>;\n readonly upsert: (args: ClientRow) => Promise<ClientRow>;\n readonly delete: (args: ClientRow) => Promise<ClientRow>;\n readonly deleteMany: (args?: ClientRow) => Promise<BatchResult>;\n /** Plain form returns a number; `{ select: { _all, field } }` returns per-key counts. */\n readonly count: (args?: ClientRow) => Promise<number | Record<string, number>>;\n readonly aggregate: (args: ClientRow) => Promise<ClientRow>;\n readonly groupBy: (args: ClientRow) => Promise<ClientRow[]>;\n};\n\n/**\n * The client. Delegates are also attached as own properties under their\n * camelCase names (`client.user.findMany()`); the type surfaces them through\n * `$models` because a plain index signature would erase the `$`-methods.\n * Model names can never collide with those: every reserved client name is\n * `$`-prefixed (see `RESERVED_CLIENT_NAMES` in @vibeorm/schema).\n */\nexport type DynamicClient = {\n /** Delegates keyed by BOTH camelCase client name and model name. */\n readonly $models: Readonly<Record<string, ModelDelegate>>;\n /**\n * Subscribe to client events (`\"query\"` fires after every statement, with\n * the same payload as `ClientOptions.onQuery` — both fire). Returns an\n * unsubscribe function. Transaction clients share the parent's listeners.\n */\n readonly $on: (event: \"query\", listener: (event: QueryEvent) => void) => () => void;\n /**\n * Run work in ONE transaction. Callback form: `fn` receives a transaction\n * client; everything it runs rides the same BEGIN/COMMIT and a throw rolls\n * back. Array form (Prisma parity): UN-AWAITED delegate calls — delegate\n * methods return LAZY query promises that only dispatch on await — run\n * SEQUENTIALLY inside one transaction, results returned positionally.\n */\n readonly $transaction: {\n <T>(fn: (tx: DynamicClient) => Promise<T>, options?: TransactionOptions): Promise<T>;\n <T extends readonly unknown[]>(\n operations: readonly [...T],\n options?: TransactionOptions,\n ): Promise<{ -readonly [K in keyof T]: Awaited<T[K]> }>;\n };\n /** Tagged template — interpolations become bound parameters, never text. */\n readonly $queryRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<ClientRow[]>;\n /** Tagged template returning the affected-row count. */\n readonly $executeRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<number>;\n readonly $queryRawUnsafe: (text: string, ...values: unknown[]) => Promise<ClientRow[]>;\n readonly $executeRawUnsafe: (text: string, ...values: unknown[]) => Promise<number>;\n readonly $connect: () => Promise<void>;\n readonly $disconnect: () => Promise<void>;\n /**\n * Field-masking views (v1 `defineView` parity, board #11) — a read-only\n * scoped client restricted to the definition's models and fields. Attached\n * by `attachDefineView` after construction (hence optional in the type);\n * it is always present on a built client, transaction clients included.\n */\n readonly $defineView?: DefineViewFn;\n /**\n * Row scoping (@@policy): bind a per-request context — the returned client\n * AND-s the policy predicate into every query on policied models and forces\n * it into creates. Attached only when the schema declares @@policy.\n */\n readonly $withPolicy?: (context: Readonly<Record<string, PolicyContextValue>>) => DynamicClient;\n /** Deliberate, greppable full-access escape from policy scoping. */\n readonly $bypassPolicy?: () => DynamicClient;\n};\n\n// ─── Errors ───────────────────────────────────────────────────────\n\nfunction notFound(params: { model: string; method: QueryMethod | string }): VibeError {\n const { model, method } = params;\n return new VibeError({\n code: \"VIBE_NOT_FOUND\",\n message: `no ${model} record matched the where clause of ${method}()`,\n meta: { model, method },\n });\n}\n\nfunction viewIsReadOnly(params: { model: string; method: string }): VibeError {\n const { model, method } = params;\n return new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `${model} is a view — ${method}() is not available on views (they are read-only); write to the underlying table instead`,\n meta: { model, method },\n });\n}\n\n// ─── Parameter binding ────────────────────────────────────────\n\n/**\n * ORM-path binding: after the codec table has encoded every parameter, the only\n * bare JS arrays left in `rendered.values` are scalar-list params — `inArray`\n * filters and list-column writes (`Json.encode` stringifies, Bytes are\n * `Uint8Array`). Their wire form is the ADAPTER's business (`= ANY($n)` needs a\n * PG array literal on bun:sql, a tagged passthrough on pg/pglite), so each one\n * is handed to `adapter.formatArrayParam` here. Reviewed as fix F1 — the raw\n * paths (`$queryRaw*`) deliberately do NOT bind: drivers take raw arrays there\n * (LEARNINGS: ORM-path vs raw-path array params differ).\n */\nfunction bindValues(params: { adapter: DatabaseAdapter; values: unknown[] }): unknown[] {\n const { adapter, values } = params;\n return values.map((value) => (Array.isArray(value) ? adapter.formatArrayParam(value) : value));\n}\n\n// ─── Row shaping ──────────────────────────────────────────────────\n\n/**\n * Narrow a row to the fields the caller selected (scalars, relation names,\n * `_count`). Mutations RETURNING the primary key and relation loading fetching\n * stitch keys both hand back more than was asked for.\n */\nfunction project(params: { row: ClientRow; fields: readonly string[] | null }): ClientRow {\n const { row, fields } = params;\n if (fields === null) return row;\n const out: ClientRow = {};\n for (const field of fields) out[field] = row[field];\n return out;\n}\n\n/**\n * The N1 re-sort comparator (`QueryPlan.resortBy`): the user's orderBy over\n * DECODED rows, with `nulls` and Decimal ranking resolved at build time to\n * mirror what the SQL order would have produced (B4: Decimal ranks\n * numerically — the SQL side ordered a number).\n */\nfunction resortComparator(keys: readonly ResortKey[]): (a: ClientRow, b: ClientRow) => number {\n const rank = (value: unknown): number | bigint | string => {\n if (typeof value === \"boolean\") return value ? 1 : 0;\n if (value instanceof Date) return value.getTime();\n return value as number | bigint | string;\n };\n return (a, b) => {\n for (const key of keys) {\n const left = a[key.field];\n const right = b[key.field];\n const leftNull = left === null || left === undefined;\n const rightNull = right === null || right === undefined;\n if (leftNull || rightNull) {\n if (leftNull && rightNull) continue;\n return leftNull === (key.nulls === \"first\") ? -1 : 1;\n }\n const rankLeft = key.decimal ? Number(left) : rank(left);\n const rankRight = key.decimal ? Number(right) : rank(right);\n if (rankLeft < rankRight) return key.direction === \"asc\" ? -1 : 1;\n if (rankLeft > rankRight) return key.direction === \"asc\" ? 1 : -1;\n }\n return 0;\n };\n}\n\n/**\n * Client-side leg of the find pipeline, in plan order: the negative-take\n * re-reverse, then the N1 distinct re-sort (the user's orderBy restored over\n * the deduplicated rows — every dialect: DISTINCT ON and the ROW_NUMBER\n * emulation both present rows grouped by the distinct key). The two never\n * combine — distinct refuses a negative take at build time.\n */\nfunction shapeRows(params: { plan: QueryPlan; rows: ClientRow[] }): ClientRow[] {\n const { plan, rows } = params;\n let out = rows;\n if (plan.reverseRows) out = [...out].reverse();\n if (plan.resortBy !== null && plan.resortBy.length > 0) {\n out = [...out].sort(resortComparator(plan.resortBy));\n }\n return out;\n}\n\n// ─── Aggregate result assembly ──────────────────────────────\n\nfunction fieldOf(params: { model: ModelMeta; name: string | null }): FieldMeta | null {\n const { model, name } = params;\n if (name === null) return null;\n return model.fieldByName.get(name) ?? null;\n}\n\n/** `{ _count: 3 | {…}, _avg: {…}, … }` from one aggregate row, by construction. */\nfunction assembleAggregates(params: {\n engine: Engine;\n model: ModelMeta;\n spec: AggregateSpec;\n row: ClientRow;\n into: ClientRow;\n}): ClientRow {\n const { engine, model, spec, row, into } = params;\n for (const selection of spec.selections) {\n const value = decodeAggregateValue({\n dialect: engine.dialect.name,\n key: selection.key,\n field: fieldOf({ model, name: selection.field }),\n value: row[selection.alias],\n });\n if (selection.key === \"_count\" && spec.countShorthand) {\n into._count = value;\n continue;\n }\n const bucket = (into[selection.key] as Record<string, unknown> | undefined) ?? {};\n bucket[selection.field ?? \"_all\"] = value;\n into[selection.key] = bucket;\n }\n return into;\n}\n\n// ─── Engine ───────────────────────────────────────────────────────\n\ntype Engine = {\n readonly meta: RuntimeMeta;\n readonly adapter: DatabaseAdapter;\n readonly dialect: SqlDialect;\n readonly options: ClientOptions;\n /** True on engines bound to an open transaction — gates `lock` (FOR UPDATE). */\n readonly inTransaction?: boolean;\n /** `$on(\"query\")` subscribers — one shared set across transaction clients. */\n readonly listeners: Set<(event: QueryEvent) => void>;\n /** Compiled-query cache (§9) — shape-keyed SQL texts, shared across transaction clients. */\n readonly renderCache: StatementRenderCache;\n /** Baked extension surface mounts (D9) — re-attached on every client build. */\n readonly extensionMounts?: readonly ClientExtensionMount[];\n /** Extension onConnect hooks — run by `$connect()`. */\n readonly connectHooks?: readonly ConnectHook[];\n};\n\nfunction report(params: {\n engine: Engine;\n model: string | null;\n method: string;\n text: string;\n values: readonly unknown[];\n started: number;\n}): void {\n const { engine, model, method, text, values, started } = params;\n const onQuery = engine.options.onQuery;\n if (onQuery === undefined && engine.listeners.size === 0) return;\n const event: QueryEvent = { model, method, text, values, durationMs: performance.now() - started };\n onQuery?.(event);\n for (const listener of engine.listeners) listener(event);\n}\n\n// ─── Lazy query promises (array $transaction) ─────────────────\n\n/** A claimed array-$transaction operation (see QueryPromise.claim). */\ntype ClaimedOperation = {\n readonly start: (target: Engine) => Promise<unknown>;\n readonly abort: (reason: unknown) => void;\n};\n\n/**\n * The promise every delegate method returns — dispatch is DEFERRED to the end\n * of the creation tick (a microtask): awaiting sooner starts it sooner, and\n * `$transaction([...])` claims still-deferred operations SYNCHRONOUSLY and\n * runs them sequentially against the transaction's own engine inside one\n * BEGIN/COMMIT. At every ordinary call site this is observably an eager\n * promise (v1's delegates were fully eager); the deferral only exists for the\n * array form, so operations must reach `$transaction` in the tick they were\n * created — later, they have already dispatched and the claim fails LOUDLY\n * (silently adopting an in-flight promise would fake atomicity, v1's flaw).\n *\n * A NATIVE Promise subclass, not a bare thenable: test matchers\n * (`expect().rejects`) and user code check `instanceof Promise`, and Bun's\n * matchers await the native state without ever calling `.then` — which is\n * also why dispatch cannot wait for a `.then` that may never come. Species is\n * pinned to the base Promise so `.then` chains produce plain promises.\n */\nclass QueryPromise<T> extends Promise<T> {\n static override get [Symbol.species](): PromiseConstructor {\n return Promise;\n }\n\n private target!: Engine;\n private dispatch!: (target: Engine) => Promise<T>;\n private settle!: { resolve: (value: T | PromiseLike<T>) => void; reject: (reason: unknown) => void };\n private started = false;\n\n /** Build a deferred operation; the constructor itself stays the native one. */\n static create<T>(params: { engine: Engine; run: (target: Engine) => Promise<T> }): QueryPromise<T> {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason: unknown) => void;\n const instance = new QueryPromise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n instance.target = params.engine;\n instance.dispatch = params.run;\n instance.settle = { resolve, reject };\n // Auto-dispatch when the creation tick's synchronous run completes —\n // unless an array $transaction claimed the operation first.\n queueMicrotask(() => {\n instance.start();\n });\n return instance;\n }\n\n private start(): void {\n if (this.started) return;\n this.started = true;\n this.dispatch(this.target).then(this.settle.resolve, this.settle.reject);\n }\n\n override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n // `catch` and `finally` route through `then` per spec — awaiting starts\n // the dispatch immediately instead of at the microtask.\n this.start();\n return super.then(onfulfilled, onrejected);\n }\n\n /**\n * The array-$transaction entry: claim the operation SYNCHRONOUSLY (before\n * the auto-dispatch microtask can fire), receiving a starter that runs it\n * against the transaction's engine and an aborter that settles it when the\n * transaction dies before its turn — a stray await on it must reject, never\n * hang.\n */\n claim(): ClaimedOperation {\n if (this.started) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n \"$transaction([...]) needs operations that have not dispatched — pass delegate calls in the same tick they are created (this one was awaited or created earlier and already executed outside the transaction)\",\n });\n }\n this.started = true;\n return {\n start: (target: Engine): Promise<unknown> => {\n const running = this.dispatch(target);\n // Settle this promise too (a caller may hold and await it), and mark\n // its rejection handled — the array runner propagates failures.\n running.then(this.settle.resolve, this.settle.reject);\n super.then(undefined, () => {});\n return running as Promise<unknown>;\n },\n abort: (reason: unknown): void => {\n this.settle.reject(reason);\n super.then(undefined, () => {});\n },\n };\n }\n}\n\n/** Render + execute a row-returning statement, decoding through the codec table. */\nasync function runRows(params: { engine: Engine; plan: QueryPlan }): Promise<ClientRow[]> {\n const { engine, plan } = params;\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: plan.statement,\n cache: engine.renderCache,\n });\n const started = performance.now();\n const rows = await engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n });\n report({\n engine,\n model: plan.model.name,\n method: plan.method,\n text: rendered.text,\n values: rendered.values,\n started,\n });\n return materializeRows({ dialect: engine.dialect.name, model: plan.model, rows, wire: engine.adapter.wire });\n}\n\n/** Execute a statement for its affected-row count (`executeUnsafe` exposes it). */\nasync function runAffected(params: { engine: Engine; plan: QueryPlan }): Promise<number> {\n const { engine, plan } = params;\n // M4/M7: a multi-statement batch (sqlite createMany groups, parameter-budget\n // chunks) runs atomically — exactly like the single statement it replaces.\n if (plan.batch !== undefined && plan.batch.length > 1) {\n const batch = plan.batch;\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n let total = 0;\n for (const statement of batch) {\n total += await runAffected({ engine: txEngine, plan: { ...plan, statement, batch: undefined } });\n }\n return total;\n });\n }\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: plan.statement,\n cache: engine.renderCache,\n });\n const started = performance.now();\n const result = await engine.adapter.executeUnsafe({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n });\n report({\n engine,\n model: plan.model.name,\n method: plan.method,\n text: rendered.text,\n values: rendered.values,\n started,\n });\n return result.affectedRows;\n}\n\nfunction plan(params: {\n engine: Engine;\n model: string;\n method: QueryMethod;\n args: ClientRow | undefined;\n}): QueryPlan {\n const { engine, model, method, args } = params;\n // `lock` is a row lock held to COMMIT — outside a transaction the lock\n // releases at statement end, a silent no-op. The engine knows which client\n // it is (the builder cannot), so the refusal lives here.\n if (args !== undefined && args[\"lock\"] !== undefined && engine.inTransaction !== true) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `lock on ${model}.${method}() requires a transaction — call it on the client $transaction hands its callback (outside one, the lock would release at statement end)`,\n meta: { model, method },\n });\n }\n return buildQuery({\n meta: engine.meta,\n dialect: engine.dialect,\n model,\n method,\n args,\n ...(engine.options.relationStrategy === undefined\n ? {}\n : { defaultRelationStrategy: engine.options.relationStrategy }),\n clientOptions: {\n ...(engine.options.defaultOrderByPk === undefined\n ? {}\n : { defaultOrderByPk: engine.options.defaultOrderByPk }),\n ...(engine.options.distinctOrderByPk === undefined\n ? {}\n : { distinctOrderByPk: engine.options.distinctOrderByPk }),\n },\n });\n}\n\n/** Re-select the row a mutation touched, on dialects without RETURNING. */\nasync function refetch(params: {\n engine: Engine;\n source: QueryPlan;\n where: Readonly<Record<string, unknown>>;\n /** `SELECT … FOR UPDATE` (where the dialect has a lock clause) — the\n * read-before-write overlays lock the row they are about to write. */\n lock?: boolean;\n}): Promise<ClientRow | null> {\n const { engine, source, where } = params;\n const selectArg = source.selectArg;\n const followUp = plan({\n engine,\n model: source.model.name,\n method: \"findUnique\",\n args: selectArg === null ? { where } : { where, select: selectArg },\n });\n const locked: QueryPlan =\n params.lock === true\n ? { ...followUp, statement: { ...(followUp.statement as SelectStatement), lockForUpdate: true } }\n : followUp;\n const rows = await runRows({ engine, plan: locked });\n return rows[0] ?? null;\n}\n\n/** Shallow record equality — \"is the overlaid refetch key the same key?\". */\nfunction sameRecord(\n a: Readonly<Record<string, unknown>>,\n b: Readonly<Record<string, unknown>>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n const left = a[key];\n const right = b[key];\n if (left === right) continue;\n if (left instanceof Date && right instanceof Date && left.getTime() === right.getTime()) continue;\n return false;\n }\n return true;\n}\n\n/**\n * The WHERE that identifies a freshly inserted row on a dialect without\n * RETURNING: the app-generated key when there is one, else the driver's\n * last-insert-id — which is why the DB-assigned-key path runs inside ONE\n * transaction (see `runSingleMutation`): `LAST_INSERT_ID()` is\n * connection-scoped, and only the transaction contract guarantees the INSERT\n * and the read-back share a connection.\n */\nasync function insertedKeyWhere(params: {\n engine: Engine;\n source: QueryPlan;\n}): Promise<Record<string, unknown>> {\n const { engine, source } = params;\n if (source.refetchWhere !== null) return { ...source.refetchWhere };\n\n const keyField = source.model.primaryKey[0];\n const lastInsertIdSql = engine.dialect.lastInsertIdSql;\n if (lastInsertIdSql === null || source.model.primaryKey.length !== 1 || keyField === undefined) {\n throw unsupportedCapability({\n dialect: engine.dialect.name,\n feature: `${source.method} on ${source.model.name} without RETURNING`,\n hint: \"this model's key is assigned by the database and cannot be read back on this dialect\",\n });\n }\n const started = performance.now();\n const result = await engine.adapter.executeUnsafe({ text: lastInsertIdSql });\n report({\n engine,\n model: source.model.name,\n method: source.method,\n text: lastInsertIdSql,\n values: [],\n started,\n });\n const id = result.rows[0]?.id;\n if (id === undefined || id === null) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `could not read back the generated key for ${source.model.name}`,\n meta: { model: source.model.name },\n });\n }\n return { [keyField.name]: id };\n}\n\n/**\n * Run a single-row mutation. On dialects with RETURNING the statement carries\n * its own result; otherwise the row is read back with a second statement — for\n * `delete` that read happens BEFORE the write, since afterwards the row is gone.\n *\n * Returns the FULL row (RETURNING includes the primary key and stitch keys);\n * the delegate narrows down to the caller's selection after relation loading.\n */\nasync function runSingleMutation(params: {\n engine: Engine;\n source: QueryPlan;\n readBeforeWrite: boolean;\n /**\n * `create({ onConflict })`: zero written rows is the SKIPPED verdict —\n * return null instead of not-found (RETURNING presence / affected count is\n * the truth of who won the conflict).\n */\n allowZeroRows?: boolean;\n}): Promise<ClientRow | null> {\n const { engine, source, readBeforeWrite } = params;\n\n // Mirrors the renderer's applyReturning verdict WITHOUT rendering — the\n // native path would otherwise render twice per mutation.\n const statement = source.statement;\n const requested = statement.kind === \"select\" ? undefined : statement.returning;\n if (requested !== undefined && requested.length > 0 && engine.dialect.capabilities.returning) {\n const rows = await runRows({ engine, plan: source });\n const row = rows[0];\n if (row === undefined) {\n if (params.allowZeroRows === true) return null;\n throw notFound({ model: source.model.name, method: source.method });\n }\n return row;\n }\n\n // RETURNING omitted (mysql): read the row around the write.\n const rendered = renderStatementCached({ dialect: engine.dialect, statement, cache: engine.renderCache });\n // `executeUnsafe` — the only adapter entry point that surfaces the\n // affected-row count, which the overlays below must check (M1/M2): a write\n // that matched nothing is a not-found, never \"re-select and hope\".\n const executeWrite = async (target: Engine): Promise<number> => {\n const started = performance.now();\n const result = await target.adapter.executeUnsafe({\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n });\n report({\n engine: target,\n model: source.model.name,\n method: source.method,\n text: rendered.text,\n values: rendered.values,\n started,\n });\n return result.affectedRows;\n };\n\n if (readBeforeWrite) {\n // delete: the read must happen BEFORE the write — and both must observe\n // ONE row: the read locks it (FOR UPDATE) inside a transaction, and a\n // DELETE that then matches nothing is a concurrent-delete not-found, not\n // a success reporting the pre-read row (M1).\n const where = source.refetchWhere;\n if (where === null) throw notFound({ model: source.model.name, method: source.method });\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const before = await refetch({ engine: txEngine, source, where, lock: true });\n if (before === null) throw notFound({ model: source.model.name, method: source.method });\n const affected = await executeWrite(txEngine);\n if (affected === 0) throw notFound({ model: source.model.name, method: source.method });\n return before;\n });\n }\n\n if (source.refetchWhere !== null) {\n const knownWhere = source.refetchWhere;\n\n if (source.method === \"upsert\") {\n // Which arm ran is only knowable from the read-back. The write and every\n // read ride ONE transaction (the only same-connection guarantee the\n // frozen adapter interface gives). In order:\n // 1. the overlaid unique where — the UPDATE arm's row answers it, and\n // so does the INSERT arm's unless the update arm rewrites the key;\n // 2. the un-overlaid where — the INSERT arm's row always answers it\n // (the B1 gate guarantees create binds the conflict target);\n // 3. LAST_INSERT_ID() — only meaningful when the ODKU statement\n // carries the `id = LAST_INSERT_ID(id)` trick (B2): the update arm\n // then names the row it addressed even when that row was matched\n // through a DIFFERENT unique key than the where names.\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n await executeWrite(txEngine);\n const byWhere = await refetch({ engine: txEngine, source, where: knownWhere });\n if (byWhere !== null) return byWhere;\n const baseWhere = source.refetchWhereBase;\n if (baseWhere !== null && !sameRecord(baseWhere, knownWhere)) {\n const byBase = await refetch({ engine: txEngine, source, where: baseWhere });\n if (byBase !== null) return byBase;\n }\n const insertStatement = source.statement;\n const hasIdTrick =\n insertStatement.kind === \"insert\" &&\n insertStatement.onConflict !== undefined &&\n !(\"doNothing\" in insertStatement.onConflict) &&\n insertStatement.onConflict.lastInsertIdColumn !== undefined;\n if (!hasIdTrick) throw notFound({ model: source.model.name, method: source.method });\n const where = await insertedKeyWhere({ engine: txEngine, source: { ...source, refetchWhere: null } });\n const after = await refetch({ engine: txEngine, source, where });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n }\n\n if (source.method === \"update\") {\n // M2: the write and its read-back observe one row inside a transaction,\n // and a write that MATCHED no row (mysql reports matched — mysql2 sets\n // CLIENT_FOUND_ROWS) is a not-found: re-selecting by the overlaid unique\n // where could otherwise resolve a wrong, unrelated row.\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const affected = await executeWrite(txEngine);\n if (affected === 0) throw notFound({ model: source.model.name, method: source.method });\n const after = await refetch({ engine: txEngine, source, where: knownWhere });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n }\n\n // create with an app-generated key: the key is known before the write.\n const affected = await executeWrite(engine);\n if (affected === 0 && params.allowZeroRows === true) return null;\n const after = await refetch({ engine, source, where: knownWhere });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n }\n\n // DB-assigned key: INSERT + LAST_INSERT_ID() + re-select must observe ONE\n // connection — the transaction contract is the only guarantee the frozen\n // adapter interface gives us (review work order #7/F5, runtime half).\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const affected = await executeWrite(txEngine);\n if (affected === 0 && params.allowZeroRows === true) return null;\n const where = await insertedKeyWhere({ engine: txEngine, source });\n const after = await refetch({ engine: txEngine, source, where });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n}\n\n/** Narrow a mutation result the caller KNOWS cannot be null (no allowZeroRows). */\nfunction requireRow(params: { row: ClientRow | null; model: string; method: string }): ClientRow {\n if (params.row === null) throw notFound({ model: params.model, method: params.method });\n return params.row;\n}\n\n/**\n * The transactional find-then-write upsert — Prisma's own fallback, used\n * whenever the create data does not bind the conflict-target columns with the\n * where's values (`upsertUsesNativeStatement`, SQL review B1): a native\n * INSERT … ON CONFLICT could never fire on the addressed row there, and on\n * postgres/sqlite would silently insert a duplicate-in-spirit row while\n * mysql's ODKU could update an unrelated one.\n *\n * Probe by the unique where (locked, where the dialect has row locks), then\n * run the UPDATE arm on a hit and the CREATE arm on a miss. Both arm plans\n * build BEFORE the transaction — validation stays earliest-moment, exactly as\n * the native statement validates both arms up front. Races stay LOUD: a\n * concurrent insert after a probe miss surfaces the unique violation, a\n * concurrent delete after a probe hit surfaces not-found.\n */\nasync function runUpsertFallback(params: {\n engine: Engine;\n model: ModelMeta;\n args: ClientRow;\n}): Promise<ClientRow> {\n const { engine, model, args } = params;\n const passthrough: ClientRow = {};\n if (args.select !== undefined) passthrough.select = args.select;\n if (args.omit !== undefined) passthrough.omit = args.omit;\n if (args.include !== undefined) passthrough.include = args.include;\n\n const probeSource = plan({ engine, model: model.name, method: \"findUnique\", args: { where: args.where } });\n const probePlan: QueryPlan = {\n ...probeSource,\n statement: { ...(probeSource.statement as SelectStatement), lockForUpdate: true },\n };\n const createSource = plan({\n engine,\n model: model.name,\n method: \"create\",\n args: { ...passthrough, data: args.create },\n });\n const updateSource = plan({\n engine,\n model: model.name,\n method: \"update\",\n args: { ...passthrough, where: args.where, data: args.update },\n });\n\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const existing = (await runRows({ engine: txEngine, plan: probePlan }))[0];\n const source = existing === undefined ? createSource : updateSource;\n return requireRow({\n row: await runSingleMutation({ engine: txEngine, source, readBeforeWrite: false }),\n model: model.name,\n method: \"upsert\",\n });\n });\n}\n\n// ─── Relation attachment + result shaping ─────────────────\n\nfunction relationExecutor(params: { engine: Engine }): RelationExecutor {\n const { engine } = params;\n return async ({ statement, model, method }) => {\n const rendered = renderStatementCached({ dialect: engine.dialect, statement, cache: engine.renderCache });\n const started = performance.now();\n const rows = await engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n });\n report({ engine, model, method, text: rendered.text, values: rendered.values, started });\n return rows;\n };\n}\n\ntype ResultShape = {\n readonly relations: RelationSelection | null;\n readonly resultFields: readonly string[] | null;\n readonly relationStrategy: RelationStrategy;\n /** Computed fields to attach before projection, or `null` (see QueryPlan.computed). */\n readonly computed: readonly string[] | null;\n};\n\n/** Attach relations (per the shape's strategy), then narrow to the caller's selection. */\nasync function finalizeRows(params: {\n engine: Engine;\n model: ModelMeta;\n shape: ResultShape;\n rows: ClientRow[];\n}): Promise<ClientRow[]> {\n const { engine, model, shape, rows } = params;\n if (shape.relations !== null && rows.length > 0) {\n const execute = relationExecutor({ engine });\n if (shape.relationStrategy === \"join\") {\n await attachLateralRelations({\n dialect: engine.dialect,\n meta: engine.meta,\n model,\n rows,\n selection: shape.relations,\n execute,\n wire: engine.adapter.wire,\n });\n } else {\n await attachRelations({\n dialect: engine.dialect,\n meta: engine.meta,\n model,\n rows,\n selection: shape.relations,\n execute,\n wire: engine.adapter.wire,\n });\n }\n }\n // Computed fields attach BEFORE projection: their `needs` are still on the\n // row here, and are narrowed away next unless selected themselves.\n if (shape.computed !== null && rows.length > 0) {\n applyComputedFields({ model, rows, names: shape.computed });\n }\n if (shape.resultFields === null) return rows;\n return rows.map((row) => project({ row, fields: shape.resultFields }));\n}\n\nasync function finalizeRow(params: {\n engine: Engine;\n model: ModelMeta;\n shape: ResultShape;\n row: ClientRow;\n}): Promise<ClientRow> {\n const { engine, model, shape, row } = params;\n const rows = await finalizeRows({ engine, model, shape, rows: [row] });\n return rows[0] as ClientRow;\n}\n\n// ─── Nested-write plumbing ────────────────────────────────────────\n\nfunction makeRunner(params: { engine: Engine }): StatementRunner {\n const { engine } = params;\n return {\n single: async ({ model, method, args }) =>\n requireRow({\n row: await runSingleMutation({\n engine,\n source: plan({ engine, model, method, args }),\n readBeforeWrite: method === \"delete\",\n }),\n model,\n method,\n }),\n rows: async ({ model, method, args }) => await runRows({ engine, plan: plan({ engine, model, method, args }) }),\n affected: async ({ model, method, args }) =>\n await runAffected({ engine, plan: plan({ engine, model, method, args }) }),\n statement: async ({ statement, model, method }) => {\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: statement as SqlStatement,\n cache: engine.renderCache,\n });\n const started = performance.now();\n const rows = await engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n });\n report({ engine, model, method, text: rendered.text, values: rendered.values, started });\n return rows;\n },\n };\n}\n\nfunction makeWriteContext(params: { engine: Engine }): WriteContext {\n const { engine } = params;\n return {\n meta: engine.meta,\n dialect: engine.dialect,\n run: makeRunner({ engine }),\n transactional: <T>(fn: (run: StatementRunner) => Promise<T>): Promise<T> =>\n engine.adapter.transaction((txAdapter) => fn(makeRunner({ engine: { ...engine, adapter: txAdapter, inTransaction: true } }))),\n };\n}\n\n// ─── Delegates ────────────────────────────────────────────────────\n\n/**\n * A view's delegate: reads pass through, every write verb is refused before a\n * statement is built. Views are read-only by construction, and leaving the\n * write verbs live is not dialect-honest — a simple projection view is\n * auto-updatable on postgres (the INSERT silently lands in the base table)\n * while sqlite/mysql raise a raw driver error. Applied once per delegate at\n * construction, so the hot path is untouched.\n */\nfunction readOnlyDelegate(params: { delegate: ModelDelegate; model: string }): ModelDelegate {\n const { delegate, model } = params;\n const refuse =\n (method: string) =>\n async (): Promise<never> => {\n throw viewIsReadOnly({ model, method });\n };\n return {\n ...delegate,\n create: refuse(\"create\"),\n createMany: refuse(\"createMany\"),\n createManyAndReturn: refuse(\"createManyAndReturn\"),\n update: refuse(\"update\"),\n updateMany: refuse(\"updateMany\"),\n upsert: refuse(\"upsert\"),\n delete: refuse(\"delete\"),\n deleteMany: refuse(\"deleteMany\"),\n };\n}\n\n/**\n * #7 (v1/Prisma parity): an update `data` object whose every key is undefined\n * is an effectively-empty write — the batch short-circuits to `{ count: 0 }`\n * BEFORE `@updatedAt` injection, so a no-op updateMany never bumps timestamps.\n */\nfunction isEffectivelyEmptyData(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) return false;\n if (Array.isArray(value) || value instanceof Date || value instanceof Uint8Array) return false;\n return Object.values(value).every((entry) => entry === undefined);\n}\n\nfunction createDelegate(params: { engine: Engine; model: string }): ModelDelegate {\n const { engine, model } = params;\n\n const shapeOf = (built: QueryPlan): ResultShape => ({\n relations: built.relations,\n resultFields: built.resultFields,\n relationStrategy: built.relationStrategy,\n computed: built.computed,\n });\n\n // ─── Implementations ───\n // Each takes the engine it runs against as a parameter: the delegate wraps\n // them in LAZY query promises bound to this client's engine, and the array\n // form of $transaction re-runs the same closure against the transaction's\n // engine instead (see QueryPromise).\n\n const findMany = async (target: Engine, args?: ClientRow): Promise<ClientRow[]> => {\n const built = plan({ engine: target, model, method: \"findMany\", args });\n const rows = shapeRows({ plan: built, rows: await runRows({ engine: target, plan: built }) });\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const findFirst = async (target: Engine, args?: ClientRow): Promise<ClientRow | null> => {\n const built = plan({ engine: target, model, method: \"findFirst\", args });\n const rows = shapeRows({ plan: built, rows: await runRows({ engine: target, plan: built }) });\n const row = rows[0];\n if (row === undefined) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const findUnique = async (target: Engine, args: ClientRow): Promise<ClientRow | null> => {\n const built = plan({ engine: target, model, method: \"findUnique\", args });\n const rows = await runRows({ engine: target, plan: built });\n const row = rows[0];\n if (row === undefined) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const create = async (target: Engine, args: ClientRow): Promise<ClientRow | null> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n // `onConflict` → insert-or-skip: zero written rows returns null (the\n // truthful \"another writer won\" verdict), never not-found.\n const skipping = args.onConflict !== undefined;\n if (hasNestedWrites({ model: modelMeta, data: args.data })) {\n if (skipping) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `onConflict cannot combine with nested writes on ${modelMeta.name}.create() — insert the parent row alone, then connect relations`,\n meta: { model: modelMeta.name },\n });\n }\n const shape = resolveResultShape({ meta: target.meta, model: modelMeta, method: \"create\", args });\n const row = await createWithNested({\n ctx: makeWriteContext({ engine: target }),\n model: modelMeta,\n data: args.data as Record<string, unknown>,\n });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"create\", args });\n const row = await runSingleMutation({\n engine: target,\n source: built,\n readBeforeWrite: false,\n ...(skipping ? { allowZeroRows: true } : {}),\n });\n if (row === null) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const update = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n if (hasNestedWrites({ model: modelMeta, data: args.data })) {\n const shape = resolveResultShape({ meta: target.meta, model: modelMeta, method: \"update\", args });\n const row = await updateWithNested({\n ctx: makeWriteContext({ engine: target }),\n model: modelMeta,\n where: args.where as Record<string, unknown>,\n data: args.data as Record<string, unknown>,\n });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"update\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: false }),\n model: built.model.name,\n method: \"update\",\n });\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const createMany = async (target: Engine, args: ClientRow): Promise<BatchResult> => {\n // #7 (v1/Prisma parity): an empty batch is a normal outcome of\n // `data: rows.filter(…)` — `{ count: 0 }`, NO statement.\n if (Array.isArray(args.data) && args.data.length === 0) return { count: 0 };\n const built = plan({ engine: target, model, method: \"createMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n const createManyAndReturn = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n // #7: empty batch → no rows, no statement.\n if (Array.isArray(args.data) && args.data.length === 0) return [];\n const built = plan({ engine: target, model, method: \"createManyAndReturn\", args });\n // M4/M7: multi-statement batches run atomically; returned rows come in\n // statement order (heterogeneous rows regroup — no input-order promise,\n // matching Prisma's own non-guarantee here).\n const rows =\n built.batch !== undefined && built.batch.length > 1\n ? await target.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...target, adapter: txAdapter };\n const collected: ClientRow[] = [];\n for (const statement of built.batch as readonly SqlStatement[]) {\n collected.push(\n ...(await runRows({ engine: txEngine, plan: { ...built, statement, batch: undefined } })),\n );\n }\n return collected;\n })\n : await runRows({ engine: target, plan: built });\n // #8: the one multi-row returning write loads relations like its siblings\n // (finalizeRows narrows to the caller's selection afterwards, exactly as\n // the bare projection did before).\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const updateMany = async (target: Engine, args: ClientRow): Promise<BatchResult> => {\n // #7 (v1 parity, old/v1 client.ts:957): short-circuit BEFORE @updatedAt\n // injection — auto-managed fields must not turn a no-op into a real UPDATE.\n if (isEffectivelyEmptyData(args.data)) return { count: 0 };\n const built = plan({ engine: target, model, method: \"updateMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n const upsert = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n if (\n hasNestedWrites({ model: modelMeta, data: args.create }) ||\n hasNestedWrites({ model: modelMeta, data: args.update })\n ) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `nested writes are not supported inside upsert arms on ${modelMeta.name} — use create()/update() with nested data`,\n meta: { model: modelMeta.name },\n });\n }\n if (!upsertUsesNativeStatement({ model: modelMeta, args: args as Record<string, unknown> })) {\n if (args.onConflict !== undefined) {\n // An explicit conflict target only exists in the native single\n // statement; the find-then-write fallback has no ON CONFLICT clause\n // to attach it to — refuse instead of silently ignoring it.\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `onConflict on ${modelMeta.name}.upsert() needs the native single-statement path — this shape (a guard field beyond the conflict target, or create data not binding the where's key) runs the find-then-write fallback, which cannot honor an explicit conflict target`,\n meta: { model: modelMeta.name },\n });\n }\n // B1: the create row does not bind the conflict target with the\n // where's values — the native statement's conflict clause could never\n // fire on the addressed row. Run the find-then-write flow instead.\n const shape = resolveResultShape({\n meta: target.meta,\n model: modelMeta,\n method: \"upsert\",\n args: args as Record<string, unknown>,\n });\n const row = await runUpsertFallback({ engine: target, model: modelMeta, args });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"upsert\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: false }),\n model: built.model.name,\n method: \"upsert\",\n });\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const deleteOne = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const built = plan({ engine: target, model, method: \"delete\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: true }),\n model: built.model.name,\n method: \"delete\",\n });\n // #25: relations load like update's — from the returned (or pre-read) row,\n // AFTER the delete: children a cascade removed come back empty.\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const deleteMany = async (target: Engine, args?: ClientRow): Promise<BatchResult> => {\n const built = plan({ engine: target, model, method: \"deleteMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n const count = async (target: Engine, args?: ClientRow): Promise<number | Record<string, number>> => {\n const built = plan({ engine: target, model, method: \"count\", args });\n const rendered = renderStatementCached({\n dialect: target.dialect,\n statement: built.statement,\n cache: target.renderCache,\n });\n const started = performance.now();\n const rows = await target.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n });\n report({\n engine: target,\n model,\n method: \"count\",\n text: rendered.text,\n values: rendered.values,\n started,\n });\n // count-with-select: aliases ARE the result keys ({ _all, field, … }).\n if (built.aggregateSpec !== null) {\n const row = rows[0] ?? {};\n const out: Record<string, number> = {};\n for (const selection of built.aggregateSpec.selections) {\n out[selection.alias] = Number(row[selection.alias] ?? 0);\n }\n return out;\n }\n // postgres returns COUNT(*) as a bigint string; Number() normalizes it.\n const raw = rows[0]?.[built.countAlias ?? COUNT_ALIAS];\n return raw === undefined || raw === null ? 0 : Number(raw);\n };\n\n const aggregate = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const built = plan({ engine: target, model, method: \"aggregate\", args });\n const rows = await runRows({ engine: target, plan: built });\n // A non-grouped aggregate always yields exactly one row — even over an\n // empty table (COUNT → 0, the others → SQL NULL → null).\n return assembleAggregates({\n engine: target,\n model: built.model,\n spec: built.aggregateSpec as AggregateSpec,\n row: rows[0] ?? {},\n into: {},\n });\n };\n\n const groupBy = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n const built = plan({ engine: target, model, method: \"groupBy\", args });\n const rows = await runRows({ engine: target, plan: built });\n const by = built.groupByFields as readonly string[];\n const spec = built.aggregateSpec as AggregateSpec;\n return rows.map((row) => {\n const out: ClientRow = {};\n for (const name of by) out[name] = row[name];\n return assembleAggregates({ engine: target, model: built.model, spec, row, into: out });\n });\n };\n\n // ─── Lazy wrappers ───\n\n const lazy = <T>(run: (target: Engine) => Promise<T>): Promise<T> => QueryPromise.create<T>({ engine, run });\n\n const delegate: ModelDelegate = {\n findMany: (args?: ClientRow): Promise<ClientRow[]> => lazy((target) => findMany(target, args)),\n findFirst: (args?: ClientRow): Promise<ClientRow | null> => lazy((target) => findFirst(target, args)),\n findUnique: (args: ClientRow): Promise<ClientRow | null> => lazy((target) => findUnique(target, args)),\n\n findFirstOrThrow: (args?: ClientRow): Promise<ClientRow> =>\n lazy(async (target) => {\n const row = await findFirst(target, args);\n if (row === null) throw notFound({ model, method: \"findFirstOrThrow\" });\n return row;\n }),\n\n findUniqueOrThrow: (args: ClientRow): Promise<ClientRow> =>\n lazy(async (target) => {\n const row = await findUnique(target, args);\n if (row === null) throw notFound({ model, method: \"findUniqueOrThrow\" });\n return row;\n }),\n\n create: (args: ClientRow): Promise<ClientRow | null> => lazy((target) => create(target, args)),\n createMany: (args: ClientRow): Promise<BatchResult> => lazy((target) => createMany(target, args)),\n createManyAndReturn: (args: ClientRow): Promise<ClientRow[]> =>\n lazy((target) => createManyAndReturn(target, args)),\n update: (args: ClientRow): Promise<ClientRow> => lazy((target) => update(target, args)),\n updateMany: (args: ClientRow): Promise<BatchResult> => lazy((target) => updateMany(target, args)),\n upsert: (args: ClientRow): Promise<ClientRow> => lazy((target) => upsert(target, args)),\n delete: (args: ClientRow): Promise<ClientRow> => lazy((target) => deleteOne(target, args)),\n deleteMany: (args?: ClientRow): Promise<BatchResult> => lazy((target) => deleteMany(target, args)),\n count: (args?: ClientRow): Promise<number | Record<string, number>> => lazy((target) => count(target, args)),\n aggregate: (args: ClientRow): Promise<ClientRow> => lazy((target) => aggregate(target, args)),\n groupBy: (args: ClientRow): Promise<ClientRow[]> => lazy((target) => groupBy(target, args)),\n };\n\n const meta = getModelMeta({ meta: engine.meta, model });\n return meta.isView ? readOnlyDelegate({ delegate, model: meta.name }) : delegate;\n}\n\n// ─── Write validation wrapper ────────────────────────────────────\n\nconst WRITE_METHODS = [\"create\", \"createMany\", \"createManyAndReturn\", \"update\", \"updateMany\", \"upsert\"] as const;\n\n/** Wrap a delegate's write methods through the Standard-Schema validators. */\nfunction withWriteValidation(params: {\n engine: Engine;\n delegate: ModelDelegate;\n model: string;\n validators: WriteValidators;\n}): ModelDelegate {\n const { engine, delegate, model, validators } = params;\n const meta = getModelMeta({ meta: engine.meta, model });\n const wrapped: Record<string, unknown> = { ...delegate };\n for (const method of WRITE_METHODS) {\n const original = delegate[method] as (args: ClientRow) => Promise<unknown>;\n wrapped[method] = (args: ClientRow): Promise<unknown> =>\n original(applyWriteValidators({ meta: engine.meta, model: meta, method, args, validators }) as ClientRow);\n }\n return wrapped as ModelDelegate;\n}\n\n// ─── Raw SQL ──────────────────────────────────────────────────────\n\n/**\n * Interleave a tagged template's literals with placeholders. Interpolated\n * values are ALWAYS bound as parameters — a template can never inject text.\n */\nfunction buildRawStatement(params: {\n dialect: SqlDialect;\n strings: TemplateStringsArray;\n values: readonly unknown[];\n}): { text: string; values: unknown[] } {\n const { dialect, strings, values } = params;\n const collector = new ParamCollector(dialect);\n let text = strings[0] ?? \"\";\n for (let index = 0; index < values.length; index++) {\n text += collector.add(values[index]) + (strings[index + 1] ?? \"\");\n }\n return { text, values: collector.values };\n}\n\n// ─── Factory ──────────────────────────────────────────────────────\n\nfunction buildClient(params: { engine: Engine }): DynamicClient {\n const { engine } = params;\n\n const models: Record<string, ModelDelegate> = {};\n for (const model of engine.meta.models) {\n let delegate = createDelegate({ engine, model: model.name });\n const validators = engine.options?.validate;\n if (validators?.[model.name] !== undefined) {\n delegate = withWriteValidation({ engine, delegate, model: model.name, validators });\n }\n models[model.name] = delegate;\n models[model.clientName] = delegate;\n }\n\n const runRaw = async (\n method: string,\n statement: { text: string; values: unknown[] },\n ): Promise<{ rows: ClientRow[]; affectedRows: number }> => {\n const started = performance.now();\n const result = await engine.adapter.executeUnsafe(statement);\n report({\n engine,\n model: null,\n method,\n text: statement.text,\n values: statement.values,\n started,\n });\n return result;\n };\n\n /**\n * The array form: claim every operation SYNCHRONOUSLY (before their\n * auto-dispatch microtask fires), then run them sequentially against ONE\n * transaction engine — statement order is array order, a throw rolls the\n * whole batch back and settles the not-yet-run operations with the same\n * failure, results return positionally. Only un-dispatched QueryPromises\n * may join: anything else is already in flight on the non-transactional\n * adapter and wrapping it would fake atomicity.\n */\n const runOperations = (operations: readonly unknown[], options?: TransactionOptions): Promise<unknown[]> => {\n const claimed: ClaimedOperation[] = [];\n let claimError: unknown = null;\n for (const operation of operations) {\n if (!(operation instanceof QueryPromise)) {\n claimError = new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n \"$transaction([...]) takes query promises from model delegate calls — a foreign promise is already running and cannot join the transaction\",\n });\n break;\n }\n try {\n claimed.push((operation as QueryPromise<unknown>).claim());\n } catch (error) {\n claimError = error;\n break;\n }\n }\n if (claimError !== null) {\n for (const entry of claimed) entry.abort(claimError);\n return Promise.reject(claimError);\n }\n return engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const results: unknown[] = [];\n let index = 0;\n try {\n for (; index < claimed.length; index++) {\n results.push(await (claimed[index] as ClaimedOperation).start(txEngine));\n }\n } catch (error) {\n for (let rest = index + 1; rest < claimed.length; rest++) {\n (claimed[rest] as ClaimedOperation).abort(error);\n }\n throw error;\n }\n return results;\n }, options);\n };\n\n const client: DynamicClient = {\n $models: models,\n\n $on: (event: \"query\", listener: (event: QueryEvent) => void): (() => void) => {\n if (event !== \"query\") {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `unknown client event \"${String(event)}\" — supported: \"query\"`,\n meta: { event },\n });\n }\n engine.listeners.add(listener);\n return () => {\n engine.listeners.delete(listener);\n };\n },\n\n $transaction: (<T>(\n fnOrOperations: ((tx: DynamicClient) => Promise<T>) | readonly unknown[],\n options?: TransactionOptions,\n ): Promise<T | unknown[]> =>\n Array.isArray(fnOrOperations)\n ? runOperations(fnOrOperations, options)\n : engine.adapter.transaction(\n (txAdapter) =>\n (fnOrOperations as (tx: DynamicClient) => Promise<T>)(\n buildClient({ engine: { ...engine, adapter: txAdapter, inTransaction: true } }),\n ),\n options,\n )) as DynamicClient[\"$transaction\"],\n\n // Raw results are NOT decoded: without a model there is no field→column\n // mapping and no codec to apply. Values arrive as the driver produced them.\n $queryRaw: async (strings: TemplateStringsArray, ...values: unknown[]): Promise<ClientRow[]> =>\n (await runRaw(\"$queryRaw\", buildRawStatement({ dialect: engine.dialect, strings, values }))).rows,\n\n $executeRaw: async (strings: TemplateStringsArray, ...values: unknown[]): Promise<number> =>\n (await runRaw(\"$executeRaw\", buildRawStatement({ dialect: engine.dialect, strings, values }))).affectedRows,\n\n $queryRawUnsafe: async (text: string, ...values: unknown[]): Promise<ClientRow[]> =>\n (await runRaw(\"$queryRawUnsafe\", { text, values })).rows,\n\n $executeRawUnsafe: async (text: string, ...values: unknown[]): Promise<number> =>\n (await runRaw(\"$executeRawUnsafe\", { text, values })).affectedRows,\n\n $connect: async (): Promise<void> => {\n await engine.adapter.connect();\n for (const hook of engine.connectHooks ?? []) {\n await hook({\n execute: (execParams) =>\n engine.adapter.execute({ text: execParams.text, values: [...(execParams.values ?? [])] }),\n });\n }\n },\n $disconnect: (): Promise<void> => engine.adapter.disconnect(),\n };\n\n // Ergonomic access (`client.user.findMany()`). The generated client declares\n // these properties with precise types; here they are attached at runtime only.\n for (const model of engine.meta.models) {\n Object.defineProperty(client, model.clientName, {\n value: models[model.clientName],\n enumerable: true,\n });\n }\n\n attachExtensionMounts({ engine, client, models });\n attachDefineView({ client, meta: engine.meta, models });\n // Policy scoping LAST: it must see the final delegates (extension mounts\n // included) so scoped extension surfaces inherit the rewrite; fail-closed\n // guards then land on the finished base client. No-op without @@policy.\n attachPolicy({ client, meta: engine.meta });\n\n return client;\n}\n\n// ─── Extension mounts (D9 — baked surfaces) ────────────────────\n\nfunction makeMountContext(params: {\n engine: Engine;\n extension: string;\n model: ModelMeta | null;\n}): ExtensionMountContext {\n const { engine, extension, model } = params;\n return {\n extension,\n dialect: engine.dialect,\n provider: engine.adapter.provider,\n meta: engine.meta,\n model,\n executeRows: async ({ text, values, method }) => {\n const started = performance.now();\n const rows = await engine.adapter.execute({\n text,\n values: bindValues({ adapter: engine.adapter, values: [...values] }),\n });\n report({\n engine,\n model: model?.name ?? null,\n method: method ?? extension,\n text,\n values,\n started,\n });\n return model === null\n ? rows\n : materializeRows({ dialect: engine.dialect.name, model, rows, wire: engine.adapter.wire });\n },\n compileWhere: ({ where, model: modelName, qualify }) => {\n const target =\n modelName === undefined\n ? model\n : getModelMeta({ meta: engine.meta, model: modelName });\n if (target === null) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `extension \"${extension}\" compiled a where with no model in scope`,\n meta: { extension },\n });\n }\n return compileWhere({\n dialect: engine.dialect,\n meta: engine.meta,\n model: target,\n where,\n ...(qualify === undefined ? {} : { qualify }),\n });\n },\n };\n}\n\n/**\n * Attach the baked extension surfaces. Runs on EVERY client build — the\n * `$transaction` path rebuilds the client over the tx adapter, so mounted\n * surfaces execute on the transaction connection like core delegates do.\n */\nfunction attachExtensionMounts(params: {\n engine: Engine;\n client: DynamicClient;\n models: Record<string, ModelDelegate>;\n}): void {\n const { engine, client, models } = params;\n const mounts = engine.extensionMounts;\n if (mounts === undefined) return;\n\n for (const mount of mounts) {\n if (mount.scope === \"model\") {\n const model = getModelMeta({ meta: engine.meta, model: mount.model ?? \"\" });\n const delegate = models[model.name];\n if (delegate === undefined || mount.property in delegate) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: `extension \"${mount.extension}\" cannot mount \"${mount.property}\" on ${model.name} — the name is taken`,\n meta: { extension: mount.extension, model: model.name, property: mount.property },\n });\n }\n const value = mount.create(makeMountContext({ engine, extension: mount.extension, model }));\n Object.defineProperty(delegate, mount.property, { value, enumerable: true });\n continue;\n }\n\n if (!mount.property.startsWith(\"$\") || mount.property in client) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: `extension \"${mount.extension}\" cannot mount client property \"${mount.property}\" — root mounts are $-prefixed and must not collide`,\n meta: { extension: mount.extension, property: mount.property },\n });\n }\n const value = mount.create(makeMountContext({ engine, extension: mount.extension, model: null }));\n Object.defineProperty(client, mount.property, { value, enumerable: true });\n }\n}\n\n/**\n * Build a client for a schema over an adapter.\n *\n * The adapter chooses the dialect: the same IR runs on postgres, sqlite or\n * mysql, and every dialect difference is resolved by `@vibeorm/sql` and the\n * codec table rather than by branching here.\n *\n * @example\n * const db = createClient({ schema, adapter });\n * const users = await db.$models.user.findMany({ where: { active: true } });\n */\nexport function createClient(params: {\n schema: SchemaIR;\n adapter: DatabaseAdapter;\n options?: ClientOptions;\n /** Extension wiring — baked mounts + manifest from the generated client, live instances from the caller. */\n extensions?: ClientExtensionsOptions;\n /** Computed-field wiring — baked manifest from the generated client, live specs from the caller. */\n computed?: ClientComputedOptions;\n}): DynamicClient {\n const { schema, adapter, options, extensions, computed } = params;\n const dialectName: Dialect = adapter.dialect;\n\n // Staleness gate (extensions.md §3.2): a baked manifest must match the live\n // extension list BEFORE any query runs.\n if (extensions?.manifest !== undefined) {\n assertExtensionManifest({ manifest: extensions.manifest, instances: extensions.instances });\n }\n // Same gate for computed fields: the generated .d.ts promised these types.\n if (computed?.manifest !== undefined) {\n assertComputedManifest({ manifest: computed.manifest, specs: computed.specs });\n }\n // A client generated WITHOUT computed fields spreads a stray `computed`\n // option into ClientOptions — refuse it instead of silently ignoring it.\n if (\n computed === undefined &&\n options !== undefined &&\n (options as Record<string, unknown>)[\"computed\"] !== undefined\n ) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message:\n \"this client was generated without computed fields — declare them in vibeorm.config.ts and re-run vibeorm generate\",\n meta: {},\n });\n }\n\n const instances = extensions?.instances ?? [];\n const operatorMap =\n instances.length === 0\n ? null\n : buildExtensionOperatorMap({ instances, dialect: dialectName, provider: adapter.provider });\n const connectHooks =\n instances.length === 0\n ? []\n : buildConnectHooks({ instances, dialect: dialectName, provider: adapter.provider });\n\n const baseMeta = buildRuntimeMeta({\n schema,\n ...(computed?.specs === undefined ? {} : { computed: computed.specs }),\n });\n const meta: RuntimeMeta =\n operatorMap === null ? baseMeta : { ...baseMeta, extensionOperators: operatorMap };\n\n return buildClient({\n engine: {\n meta,\n adapter,\n dialect: getSqlDialect({ dialect: dialectName }),\n options: options ?? {},\n listeners: new Set(),\n renderCache: new StatementRenderCache(),\n ...(extensions?.mounts === undefined ? {} : { extensionMounts: extensions.mounts }),\n ...(connectHooks.length === 0 ? {} : { connectHooks }),\n },\n });\n}\n",
|
|
18
|
+
"/**\n * Tenant scoping — `$scoped` (framework handoff: one scoped handle per request).\n *\n * A CALLER-CONFIGURED row-scoping layer: the base client plus a total\n * per-model tenancy map plus a scope value produce a NEW handle whose every\n * query is structurally confined to that tenant. Complements `@@policy`\n * (schema-declared, fail-closed) — the two do NOT combine: `$scoped` refuses\n * on a client whose schema declares any `@@policy`.\n *\n * Implemented as PURE args rewriting over the built delegates (the views.ts /\n * policy.ts pattern — ZERO query-builder edits; every emitted statement is a\n * shape the catalogs already pin). The rewrite relies on three verified\n * builder properties:\n * 1. findUnique/connect wheres compile their FULL where object — extra\n * fields and `AND` groups become filters (query-builder findUnique,\n * nested-writes resolveTargetKey), so injecting the tenant predicate\n * into a unique where IS the verified lookup, inside whatever\n * transaction the write already runs.\n * 2. A guard field beyond the conflict target forces upsert onto the\n * transactional find-then-write fallback (PG-2), whose probe honors the\n * full where — so an injected upsert can never fire ON CONFLICT against\n * another tenant's row.\n * 3. Cursors compile from caller-supplied values only (no row lookup), so\n * cursor pagination needs no rewrite to stay leak-free.\n *\n * Deny-by-default: every argument node that touches a scoped model either\n * gets the predicate injected where semantics allow, or the call REFUSES with\n * a typed `ScopedQueryError { model, path, reason }` before any SQL runs.\n * Raw SQL is absent from the scoped surface; the deliberate escape is the\n * BASE client, which this layer never mutates.\n */\n\nimport { ScopedQueryError, VibeError } from \"@vibeorm/schema\";\nimport type { RelationIR, ScopedRefusalReason } from \"@vibeorm/schema\";\nimport { getModelMeta } from \"./model-meta.ts\";\nimport type { FieldMeta, ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\nimport { resolveRelationLink } from \"./relation-plan.ts\";\nimport type { BatchResult, ClientRow, DynamicClient, ModelDelegate } from \"./client.ts\";\nimport { attachDefineView } from \"./views.ts\";\n\n// ─── Public types ─────────────────────────────────────────────────\n\n/** Scope values a tenant column can carry (matches String / Int / BigInt columns). */\nexport type ScopeValue = string | number | bigint;\n\n/**\n * What happens when a scoped model appears as a CHILD inside another model's\n * nested write: `\"verify\"` (default) rewrites reference verbs into\n * tenant-verified lookups; `\"refuse\"` rejects every reference verb (nested\n * `create` stays allowed under both — it is forced into the tenant).\n */\nexport type ScopedNestedMode = \"verify\" | \"refuse\";\n\n/** One model's classification in the tenancy map. */\nexport type ScopedModelEntry =\n | \"none\"\n | { readonly column: string; readonly nested?: ScopedNestedMode }\n | { readonly through: string; readonly nested?: ScopedNestedMode };\n\n/** The per-model tenancy map — must classify EVERY model (totality). */\nexport type ScopedModelsMap = Readonly<Record<string, ScopedModelEntry>>;\n\n/** The `$scoped` argument. */\nexport type ScopedClientConfig = {\n readonly scope: ScopeValue | null;\n readonly models: ScopedModelsMap;\n};\n\n// ─── Resolution ───────────────────────────────────────────────────\n\ntype ResolvedEntry =\n | { readonly kind: \"none\" }\n | { readonly kind: \"column\"; readonly field: FieldMeta; readonly nested: ScopedNestedMode }\n | {\n readonly kind: \"through\";\n readonly relation: RelationIR;\n readonly targetModel: string;\n readonly nested: ScopedNestedMode;\n };\n\ntype ResolvedScopedModels = ReadonlyMap<string, ResolvedEntry>;\n\nfunction refusal(params: {\n model: string;\n path: string;\n reason: ScopedRefusalReason;\n message: string;\n}): ScopedQueryError {\n return new ScopedQueryError(params);\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n !(value instanceof Date) &&\n !(value instanceof Uint8Array)\n );\n}\n\nconst SCOPEABLE_COLUMN_TYPES: readonly string[] = [\"String\", \"Int\", \"BigInt\"];\n\n/** Cache: models-map object identity × runtime meta → resolved classification. */\nconst resolvedCache = new WeakMap<ScopedModelsMap, WeakMap<RuntimeMeta, ResolvedScopedModels>>();\n\nfunction nestedModeOf(params: { entry: Record<string, unknown>; model: string }): ScopedNestedMode {\n const raw = params.entry.nested;\n if (raw === undefined) return \"verify\";\n if (raw === \"verify\" || raw === \"refuse\") return raw;\n throw refusal({\n model: params.model,\n path: \"models\",\n reason: \"invalid_entry\",\n message: `$scoped: models.${params.model}.nested must be \"verify\" or \"refuse\", got ${String(raw)}`,\n });\n}\n\n/**\n * Validate the models map against the runtime meta: totality, known\n * columns/relations, scopeable column types, acyclic through-chains ending on\n * a { column } model. Cached by (map, meta) object identity — the framework\n * holds one map constant and calls `$scoped` per request.\n */\nexport function resolveScopedModels(params: {\n meta: RuntimeMeta;\n models: ScopedModelsMap;\n}): ResolvedScopedModels {\n const { meta, models } = params;\n const byMap = resolvedCache.get(models) ?? new WeakMap<RuntimeMeta, ResolvedScopedModels>();\n const cached = byMap.get(meta);\n if (cached !== undefined) return cached;\n\n // Unknown keys refuse first — a typo must never silently unscope a model.\n for (const key of Object.keys(models)) {\n if (!meta.modelByName.has(key)) {\n throw refusal({\n model: key,\n path: \"models\",\n reason: \"unknown_model\",\n message: `$scoped: models map names unknown model \"${key}\"`,\n });\n }\n }\n\n const resolved = new Map<string, ResolvedEntry>();\n const missing: string[] = [];\n for (const model of meta.models) {\n const entry = models[model.name] ?? models[model.clientName];\n if (entry === undefined) {\n missing.push(model.name);\n continue;\n }\n if (entry === \"none\") {\n resolved.set(model.name, { kind: \"none\" });\n continue;\n }\n if (!isPlainObject(entry)) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"invalid_entry\",\n message: `$scoped: models.${model.name} must be \"none\", { column } or { through }`,\n });\n }\n const keys = Object.keys(entry).filter((key) => entry[key as keyof typeof entry] !== undefined);\n const extras = keys.filter((key) => key !== \"column\" && key !== \"through\" && key !== \"nested\");\n if (extras.length > 0 || (\"column\" in entry) === (\"through\" in entry)) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"invalid_entry\",\n message: `$scoped: models.${model.name} must carry exactly one of column/through (plus optional nested)${\n extras.length > 0 ? ` — unknown propert${extras.length === 1 ? \"y\" : \"ies\"}: ${extras.join(\", \")}` : \"\"\n }`,\n });\n }\n const nested = nestedModeOf({ entry, model: model.name });\n if (\"column\" in entry) {\n const field = model.fieldByName.get(String(entry.column));\n if (field === undefined) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"unknown_column\",\n message: `$scoped: models.${model.name}.column names unknown field \"${String(entry.column)}\"`,\n });\n }\n if (field.isList || field.scalarType === null || !SCOPEABLE_COLUMN_TYPES.includes(field.scalarType)) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"column_not_scopeable\",\n message: `$scoped: models.${model.name}.column \"${field.name}\" must be a non-list String, Int or BigInt field`,\n });\n }\n resolved.set(model.name, { kind: \"column\", field, nested });\n continue;\n }\n const relation = model.relationByName.get(String(entry.through));\n if (relation === undefined || relation.isList) {\n throw refusal({\n model: model.name,\n path: \"models\",\n reason: \"unknown_relation\",\n message: `$scoped: models.${model.name}.through must name a to-one relation — \"${String(entry.through)}\" ${\n relation === undefined ? \"does not exist\" : \"is a list relation\"\n }`,\n });\n }\n // Resolvability check now (fails loudly at construction, not mid-write).\n resolveRelationLink({ meta, model, relation });\n resolved.set(model.name, { kind: \"through\", relation, targetModel: relation.targetModel, nested });\n }\n\n if (missing.length > 0) {\n throw refusal({\n model: missing[0] as string,\n path: \"models\",\n reason: \"unclassified_model\",\n message: `$scoped: the models map must classify EVERY model — missing: ${missing.join(\", \")} (use \"none\" for global models)`,\n });\n }\n\n // Through-chains must terminate on a { column } model without cycling.\n for (const [name, entry] of resolved) {\n if (entry.kind !== \"through\") continue;\n const seen = new Set<string>([name]);\n let current: ResolvedEntry = entry;\n while (current.kind === \"through\") {\n const nextName: string = current.targetModel;\n if (seen.has(nextName)) {\n throw refusal({\n model: name,\n path: \"models\",\n reason: \"through_chain_invalid\",\n message: `$scoped: models.${name} through-chain cycles (${[...seen, nextName].join(\" → \")})`,\n });\n }\n seen.add(nextName);\n const next = resolved.get(nextName);\n if (next === undefined || next.kind === \"none\") {\n throw refusal({\n model: name,\n path: \"models\",\n reason: \"through_chain_invalid\",\n message: `$scoped: models.${name} through-chain must end on a { column } model — \"${nextName}\" is ${\n next === undefined ? \"unclassified\" : '\"none\"'\n }`,\n });\n }\n current = next;\n }\n }\n\n byMap.set(meta, resolved);\n resolvedCache.set(models, byMap);\n return resolved;\n}\n\n/** Assert the scope value's runtime type matches every scoped column's declared type. */\nfunction assertScopeType(params: {\n meta: RuntimeMeta;\n resolved: ResolvedScopedModels;\n scope: ScopeValue;\n}): void {\n const { resolved, scope } = params;\n for (const [name, entry] of resolved) {\n if (entry.kind !== \"column\") continue;\n const scalar = entry.field.scalarType;\n const ok =\n scalar === \"String\"\n ? typeof scope === \"string\"\n : scalar === \"Int\"\n ? typeof scope === \"number\"\n : typeof scope === \"bigint\" || typeof scope === \"number\"; // BigInt columns take both\n if (!ok) {\n throw refusal({\n model: name,\n path: \"scope\",\n reason: \"scope_type_mismatch\",\n message: `$scoped: scope value (${typeof scope}) does not match ${name}.${entry.field.name} (${scalar})`,\n });\n }\n }\n}\n\n// ─── Rewrite context ──────────────────────────────────────────────\n\ntype ScopeContext = {\n readonly meta: RuntimeMeta;\n readonly resolved: ResolvedScopedModels;\n readonly scope: ScopeValue | null;\n /** Per-model tenant predicate as a where object; `null` for \"none\" models. */\n readonly preds: ReadonlyMap<string, ClientRow | null>;\n};\n\nfunction buildPreds(params: {\n meta: RuntimeMeta;\n resolved: ResolvedScopedModels;\n scope: ScopeValue;\n}): ReadonlyMap<string, ClientRow | null> {\n const { resolved, scope } = params;\n const preds = new Map<string, ClientRow | null>();\n const predOf = (name: string): ClientRow | null => {\n const known = preds.get(name);\n if (known !== undefined) return known;\n const entry = resolved.get(name) as ResolvedEntry;\n const value: ClientRow | null =\n entry.kind === \"none\"\n ? null\n : entry.kind === \"column\"\n ? { [entry.field.name]: scope }\n : { [entry.relation.name]: predOf(entry.targetModel) as ClientRow };\n preds.set(name, value);\n return value;\n };\n for (const name of resolved.keys()) predOf(name);\n return preds;\n}\n\nfunction entryOf(ctx: ScopeContext, model: ModelMeta): ResolvedEntry {\n return ctx.resolved.get(model.name) as ResolvedEntry;\n}\n\n/** The tenant predicate for a SCOPED model — refuses on a null scope (fail closed). */\nfunction requirePred(params: { ctx: ScopeContext; model: ModelMeta; path: string }): ClientRow {\n const { ctx, model, path } = params;\n if (ctx.scope === null) {\n throw refusal({\n model: model.name,\n path,\n reason: \"null_scope\",\n message: `$scoped: scope is null — calls touching scoped model ${model.name} refuse until a scope is bound`,\n });\n }\n return ctx.preds.get(model.name) as ClientRow;\n}\n\n/** AND-merge a (possibly absent) where with the tenant predicate. */\nfunction mergeWhere(params: { where: unknown; pred: ClientRow }): ClientRow {\n const { where, pred } = params;\n if (where === undefined) return pred;\n return { AND: [where as ClientRow, pred] };\n}\n\n/**\n * Inject the predicate into a UNIQUE where without disturbing its top-level\n * unique members (assertUniqueWhere reads them there): the predicate joins an\n * `AND` group, which the builder compiles as an extra filter.\n */\nfunction injectUniqueWhere(params: { where: unknown; pred: ClientRow }): ClientRow {\n const { where, pred } = params;\n if (!isPlainObject(where)) return { AND: [pred] };\n const existing = where.AND === undefined ? [] : Array.isArray(where.AND) ? where.AND : [where.AND];\n return { ...where, AND: [...existing, pred] };\n}\n\n/** Flatten compound-key sugar ({ a_b: {…} }) into a plain filter object. */\nfunction flattenUniqueWhere(params: { model: ModelMeta; where: ClientRow }): ClientRow {\n const { model, where } = params;\n if (model.compoundUniques.size === 0) return where;\n const out: ClientRow = {};\n for (const [key, value] of Object.entries(where)) {\n if (isPlainObject(value) && model.compoundUniques.has(key)) Object.assign(out, value);\n else out[key] = value;\n }\n return out;\n}\n\n/**\n * Is `relation` (on `model`, targeting a through-scoped model) the INVERSE of\n * that target's tenancy edge? Then every child reachable through it derives\n * its tenancy from THIS parent row — implicit-target verbs and unfiltered\n * counts are safe on exactly these edges. Pairing follows the one shared\n * rule: same model pair, symmetric relation name, self-pair excluded.\n */\nfunction isTenancyInverse(params: { ctx: ScopeContext; model: ModelMeta; relation: RelationIR }): boolean {\n const { ctx, model, relation } = params;\n const targetEntry = ctx.resolved.get(relation.targetModel);\n if (targetEntry === undefined || targetEntry.kind !== \"through\") return false;\n const through = targetEntry.relation;\n return (\n through.targetModel === model.name &&\n (through.relationName ?? null) === (relation.relationName ?? null) &&\n !(relation.model === relation.targetModel && through.name === relation.name)\n );\n}\n\n// ─── WHERE walking ────────────────────────────────────────────────\n\n/**\n * Rewrite a filter where: recurse boolean groups, and inject the tenant\n * predicate into every relation filter that targets a scoped model so other\n * tenants' rows are as-if-nonexistent on every operator:\n * some p → some (p ∧ t) none p → none (p ∧ t)\n * every p → none (t ∧ ¬p) is p → is (p ∧ t)\n * isNot p → isNot (p ∧ t) is null → isNot t isNot null → is t\n * Scalar filters pass through; unknown shapes are left for the builder's own\n * loud refusal (never silently unscoped — the predicate needs no injection\n * where no scoped model is referenced).\n */\nfunction walkWhere(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n where: ClientRow;\n path: string;\n}): ClientRow {\n const { ctx, model, where, path } = params;\n const out: ClientRow = {};\n const extra: ClientRow[] = [];\n\n const walkGroup = (value: unknown, key: string): unknown => {\n const walkItem = (item: unknown): unknown =>\n isPlainObject(item) ? walkWhere({ ctx, model, where: item, path: `${path}.${key}` }) : item;\n return Array.isArray(value) ? value.map(walkItem) : walkItem(value);\n };\n\n for (const [key, value] of Object.entries(where)) {\n if (value === undefined) continue;\n if (key === \"AND\" || key === \"OR\" || key === \"NOT\") {\n out[key] = walkGroup(value, key);\n continue;\n }\n const relation = model.relationByName.get(key);\n if (relation === undefined) {\n out[key] = value;\n continue;\n }\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n const scoped = targetEntry.kind !== \"none\";\n const childPath = `${path}.${key}`;\n const pred = (): ClientRow => requirePred({ ctx, model: target, path: childPath });\n const walkChild = (child: unknown, op: string): unknown =>\n isPlainObject(child) ? walkWhere({ ctx, model: target, where: child, path: `${childPath}.${op}` }) : child;\n\n /** Collect single-op filter parts; colliding keys spill into a where-level AND. */\n const parts: ClientRow[] = [];\n\n if (relation.isList) {\n if (!isPlainObject(value)) {\n out[key] = value; // builder refuses the shape\n continue;\n }\n for (const [op, operand] of Object.entries(value)) {\n if (operand === undefined) continue;\n if (op === \"some\" || op === \"none\") {\n const walked = walkChild(operand, op);\n parts.push({ [op]: scoped ? { AND: [walked, pred()] } : walked });\n } else if (op === \"every\") {\n const walked = walkChild(operand, op);\n parts.push(scoped ? { none: { AND: [pred(), { NOT: [walked] }] } } : { every: walked });\n } else {\n parts.push({ [op]: operand }); // unknown operator — builder refuses\n }\n }\n } else {\n const arms: Array<{ arm: \"is\" | \"isNot\"; operand: unknown }> = [];\n if (value === null) {\n arms.push({ arm: \"is\", operand: null });\n } else if (isPlainObject(value) && (\"is\" in value || \"isNot\" in value)) {\n let mixed = false;\n for (const [op, operand] of Object.entries(value)) {\n if (operand === undefined) continue;\n if (op === \"is\" || op === \"isNot\") arms.push({ arm: op, operand });\n else mixed = true;\n }\n if (mixed) {\n out[key] = value; // builder refuses mixing is/isNot with other keys\n continue;\n }\n } else if (isPlainObject(value)) {\n arms.push({ arm: \"is\", operand: value });\n } else {\n out[key] = value; // builder refuses the shape\n continue;\n }\n for (const { arm, operand } of arms) {\n if (operand === null) {\n // Null checks flip onto the predicate: \"no VISIBLE parent\" / \"a VISIBLE parent exists\".\n parts.push(scoped ? (arm === \"is\" ? { isNot: pred() } : { is: pred() }) : { [arm]: null });\n } else {\n const walked = walkChild(operand, arm);\n parts.push({ [arm]: scoped ? { AND: [walked, pred()] } : walked });\n }\n }\n }\n\n if (parts.length === 0) {\n out[key] = value;\n continue;\n }\n const combined: ClientRow = {};\n for (const part of parts) {\n const opKey = Object.keys(part)[0] as string;\n if (opKey in combined) extra.push({ [key]: part });\n else combined[opKey] = part[opKey];\n }\n out[key] = combined;\n }\n\n if (extra.length > 0) {\n const existing = out.AND === undefined ? [] : Array.isArray(out.AND) ? out.AND : [out.AND];\n out.AND = [...existing, ...extra];\n }\n return out;\n}\n\n// ─── ORDER BY walking ─────────────────────────────────────────────\n\n/**\n * Refuse orderBy terms that reach INTO a scoped model through a relation —\n * a correlated order subquery would leak a foreign row's values into row\n * ordering. The one safe edge is a through-scoped model ordering by its OWN\n * tenancy parent (a visible row's through-parent is in-tenant by definition).\n */\nfunction walkOrderTerm(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n term: ClientRow;\n path: string;\n}): void {\n const { ctx, model, term, path } = params;\n const entry = entryOf(ctx, model);\n for (const [key, spec] of Object.entries(term)) {\n if (spec === undefined) continue;\n const relation = model.relationByName.get(key);\n if (relation === undefined) continue;\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n const tenancyEdge = entry.kind === \"through\" && entry.relation.name === key;\n if (targetEntry.kind !== \"none\" && !tenancyEdge) {\n throw refusal({\n model: target.name,\n path: `${path}.${key}`,\n reason: \"relation_orderby_on_scoped\",\n message: `$scoped: orderBy through ${model.name}.${key} reaches scoped model ${target.name} — ordering by a foreign row's values would leak; order by own columns instead`,\n });\n }\n if (isPlainObject(spec)) {\n walkOrderTerm({ ctx, model: target, term: spec, path: `${path}.${key}` });\n }\n }\n}\n\nfunction walkOrderBy(params: { ctx: ScopeContext; model: ModelMeta; orderBy: unknown; path: string }): void {\n const { ctx, model, orderBy, path } = params;\n const terms = Array.isArray(orderBy) ? orderBy : [orderBy];\n for (const term of terms) {\n if (isPlainObject(term)) walkOrderTerm({ ctx, model, term, path });\n }\n}\n\n// ─── Selection (include/select/_count) walking ────────────────────\n\nfunction walkCountSpec(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n spec: unknown;\n path: string;\n}): void {\n const { ctx, model, spec, path } = params;\n const guard = (relation: RelationIR): void => {\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n if (targetEntry.kind === \"none\") return;\n if (isTenancyInverse({ ctx, model, relation })) return; // children ARE this row's tenants\n throw refusal({\n model: target.name,\n path: `${path}.${relation.name}`,\n reason: \"count_on_scoped_relation\",\n message: `$scoped: _count of ${model.name}.${relation.name} would count ${target.name} rows across tenants (relation counts take no filter) — select the relation with a where instead`,\n });\n };\n if (spec === true) {\n for (const relation of model.relations) {\n if (relation.isList) guard(relation);\n }\n return;\n }\n if (!isPlainObject(spec) || !isPlainObject(spec.select)) return; // builder validates shape\n for (const [name, flag] of Object.entries(spec.select)) {\n if (flag === undefined || flag === false) continue;\n const relation = model.relationByName.get(name);\n if (relation !== undefined) guard(relation);\n }\n}\n\n/**\n * Rewrite include/select so every scoped CHILD model loads with the tenant\n * predicate AND-ed into its relation args, at any depth.\n */\nfunction walkSelection(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n args: ClientRow;\n path: string;\n}): void {\n const { ctx, model, args, path } = params;\n for (const blockKey of [\"include\", \"select\"] as const) {\n const block = args[blockKey];\n if (!isPlainObject(block)) continue;\n const next: ClientRow = { ...block };\n for (const [name, spec] of Object.entries(block)) {\n if (spec === undefined || spec === false) continue;\n const blockPath = `${path}.${blockKey}`;\n if (name === \"_count\") {\n walkCountSpec({ ctx, model, spec, path: `${blockPath}._count` });\n continue;\n }\n const relation = model.relationByName.get(name);\n if (relation === undefined) continue;\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n const scoped = targetEntry.kind !== \"none\";\n const childPath = `${blockPath}.${name}`;\n if (spec === true && !scoped) continue;\n const child: ClientRow = spec === true ? {} : isPlainObject(spec) ? { ...spec } : (spec as ClientRow);\n if (!isPlainObject(child)) continue; // builder refuses the shape\n const walkedWhere = isPlainObject(child.where)\n ? walkWhere({ ctx, model: target, where: child.where, path: `${childPath}.where` })\n : child.where;\n if (scoped) {\n child.where = mergeWhere({ where: walkedWhere, pred: requirePred({ ctx, model: target, path: childPath }) });\n } else if (walkedWhere !== undefined) {\n child.where = walkedWhere;\n }\n if (child.orderBy !== undefined) {\n walkOrderBy({ ctx, model: target, orderBy: child.orderBy, path: `${childPath}.orderBy` });\n }\n walkSelection({ ctx, model: target, args: child, path: childPath });\n next[name] = child;\n }\n args[blockKey] = next;\n }\n}\n\n// ─── Write-data walking ───────────────────────────────────────────\n\nconst REFERENCE_VERBS: readonly string[] = [\n \"connect\",\n \"connectOrCreate\",\n \"set\",\n \"disconnect\",\n \"update\",\n \"updateMany\",\n \"upsert\",\n \"delete\",\n \"deleteMany\",\n];\n\nfunction nestedModeFor(entry: ResolvedEntry): ScopedNestedMode {\n return entry.kind === \"none\" ? \"verify\" : entry.nested;\n}\n\n/** items normalizer that PRESERVES the original single-vs-array shape. */\nfunction mapItems(value: unknown, fn: (item: unknown) => unknown): unknown {\n return Array.isArray(value) ? value.map(fn) : fn(value);\n}\n\n/**\n * Rewrite create data: force the tenant column, guard the through edge, and\n * recurse into nested relation verbs — connects become tenant-verified\n * lookups (the injected predicate rides the existing resolution query, inside\n * the write's own transaction), creates are forced recursively.\n *\n * `viaTenancyEdge`: this data creates a child whose tenancy DERIVES from the\n * parent being written (nested create under the through-inverse relation) —\n * the through-parent requirement is satisfied structurally there.\n */\nfunction walkCreateData(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n data: unknown;\n path: string;\n viaTenancyEdge?: boolean;\n}): unknown {\n const { ctx, model, data, path } = params;\n if (!isPlainObject(data)) return data; // builder refuses the shape\n const entry = entryOf(ctx, model);\n const out: ClientRow = { ...data };\n\n if (entry.kind === \"column\") {\n requirePred({ ctx, model, path }); // null-scope fails closed before any force\n const given = out[entry.field.name];\n if (given !== undefined && given !== ctx.scope) {\n throw refusal({\n model: model.name,\n path: `${path}.${entry.field.name}`,\n reason: \"explicit_scope_mismatch\",\n message: `$scoped: create on ${model.name} sets ${entry.field.name} to ${given === null ? \"null\" : \"a different tenant\"} — the scoped handle owns that column`,\n });\n }\n out[entry.field.name] = ctx.scope;\n }\n\n if (entry.kind === \"through\" && params.viaTenancyEdge !== true) {\n requirePred({ ctx, model, path });\n const link = resolveRelationLink({ meta: ctx.meta, model, relation: entry.relation });\n if (link.kind === \"toOneOwner\" && out[link.parentKey.name] !== undefined) {\n throw refusal({\n model: model.name,\n path: `${path}.${link.parentKey.name}`,\n reason: \"through_fk_write\",\n message: `$scoped: writing ${model.name}.${link.parentKey.name} directly would bypass tenant verification — use ${entry.relation.name}: { connect: … } instead`,\n });\n }\n if (out[entry.relation.name] === undefined) {\n throw refusal({\n model: model.name,\n path,\n reason: \"through_fk_write\",\n message: `$scoped: create on ${model.name} must bind its tenancy parent — provide ${entry.relation.name}: { connect | create | connectOrCreate: … }`,\n });\n }\n }\n\n for (const [key, value] of Object.entries(out)) {\n const relation = model.relationByName.get(key);\n if (relation === undefined || !isPlainObject(value)) continue;\n out[key] = walkNestedVerbs({ ctx, model, relation, verbs: value, path: `${path}.${key}`, phase: \"create\" });\n }\n return out;\n}\n\n/** Rewrite update data: tenant-column writes verified, nested verbs classified. */\nfunction walkUpdateData(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n data: unknown;\n path: string;\n}): unknown {\n const { ctx, model, data, path } = params;\n if (!isPlainObject(data)) return data;\n const entry = entryOf(ctx, model);\n const out: ClientRow = { ...data };\n\n if (entry.kind === \"column\") {\n const given = out[entry.field.name];\n if (given !== undefined) {\n const setValue = isPlainObject(given) && Object.keys(given).length === 1 ? given.set : given;\n if (setValue !== ctx.scope) {\n throw refusal({\n model: model.name,\n path: `${path}.${entry.field.name}`,\n reason: \"explicit_scope_mismatch\",\n message: `$scoped: update on ${model.name} writes ${entry.field.name} — a scoped handle cannot move rows between tenants`,\n });\n }\n }\n }\n\n if (entry.kind === \"through\") {\n const link = resolveRelationLink({ meta: ctx.meta, model, relation: entry.relation });\n if (link.kind === \"toOneOwner\" && out[link.parentKey.name] !== undefined) {\n throw refusal({\n model: model.name,\n path: `${path}.${link.parentKey.name}`,\n reason: \"through_fk_write\",\n message: `$scoped: writing ${model.name}.${link.parentKey.name} directly would bypass tenant verification — use ${entry.relation.name}: { connect: … } instead`,\n });\n }\n }\n\n for (const [key, value] of Object.entries(out)) {\n const relation = model.relationByName.get(key);\n if (relation === undefined || !isPlainObject(value)) continue;\n out[key] = walkNestedVerbs({ ctx, model, relation, verbs: value, path: `${path}.${key}`, phase: \"update\" });\n }\n return out;\n}\n\n/**\n * Classify + rewrite ONE relation's nested-write verbs.\n *\n * Explicit-where verbs (connect, connectOrCreate, set/disconnect/delete/\n * update/upsert items, updateMany/deleteMany filters) get the predicate\n * injected — the existing resolution/filter queries then ARE the verification.\n * Implicit-target verbs (to-one update/delete/upsert/disconnect without a\n * where; non-M2M set's clearing phase) write rows this layer cannot filter,\n * so they are allowed ONLY on tenancy edges (where the target's tenant is the\n * row being written, by definition) and refused everywhere else. M2M `set`\n * refuses: its clearing phase would silently unlink foreign children.\n *\n * Unscoped (\"none\") targets skip injection and guards but their payloads and\n * wheres are STILL walked — a relation filter buried in a nested where can\n * reach a scoped model from anywhere.\n */\nfunction walkNestedVerbs(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n relation: RelationIR;\n verbs: Record<string, unknown>;\n path: string;\n phase: \"create\" | \"update\";\n}): ClientRow {\n const { ctx, model, relation, verbs, path, phase } = params;\n const target = ctx.meta.modelByName.get(relation.targetModel) as ModelMeta;\n const targetEntry = entryOf(ctx, target);\n const scoped = targetEntry.kind !== \"none\";\n const modelEntry = entryOf(ctx, model);\n /** Parent→child tenancy edge (children derive tenancy from this row)… */\n const pairedDown = scoped && isTenancyInverse({ ctx, model, relation });\n /** …or child→parent tenancy edge (this relation IS the model's own through edge). */\n const tenancyEdge = modelEntry.kind === \"through\" && modelEntry.relation.name === relation.name;\n const implicitSafe = pairedDown || tenancyEdge;\n const mode = nestedModeFor(targetEntry);\n const out: ClientRow = { ...verbs };\n\n const pred = (verbPath: string): ClientRow => requirePred({ ctx, model: target, path: verbPath });\n const refuse = (verb: string, why: string): never => {\n throw refusal({\n model: target.name,\n path: `${path}.${verb}`,\n reason: \"nested_refused\",\n message: `$scoped: nested \"${verb}\" on ${model.name}.${relation.name} (${target.name}) ${why}`,\n });\n };\n /** Walk a where object against the target model (relation filters inside get injected). */\n const walkTargetWhere = (where: unknown, verbPath: string): unknown =>\n isPlainObject(where) ? walkWhere({ ctx, model: target, where, path: verbPath }) : where;\n /** Unique-where treatment: walk, then AND the predicate in when the target is scoped. */\n const uniqueWhere = (where: unknown, verbPath: string): unknown => {\n const walked = walkTargetWhere(where, verbPath);\n return scoped ? injectUniqueWhere({ where: walked, pred: pred(verbPath) }) : walked;\n };\n /** Filter-where treatment for updateMany/deleteMany operands. */\n const filterWhere = (where: unknown, verbPath: string): unknown => {\n const walked = walkTargetWhere(where, verbPath);\n return scoped ? mergeWhere({ where: walked ?? {}, pred: pred(verbPath) }) : walked;\n };\n const walkChildCreate = (item: unknown, verbPath: string): unknown =>\n walkCreateData({ ctx, model: target, data: item, path: verbPath, viaTenancyEdge: pairedDown });\n const walkChildUpdate = (item: unknown, verbPath: string): unknown =>\n walkUpdateData({ ctx, model: target, data: item, path: verbPath });\n const link = (): ReturnType<typeof resolveRelationLink> =>\n resolveRelationLink({ meta: ctx.meta, model, relation });\n\n for (const [verb, operand] of Object.entries(verbs)) {\n if (operand === undefined) continue;\n const verbPath = `${path}.${verb}`;\n\n if (verb === \"create\") {\n out[verb] = mapItems(operand, (item) => walkChildCreate(item, verbPath));\n continue;\n }\n\n if (scoped && mode === \"refuse\" && REFERENCE_VERBS.includes(verb)) {\n refuse(verb, `is disabled — ${target.name} is configured nested: \"refuse\"; go through the base client or its own delegate`);\n }\n\n switch (verb) {\n case \"connect\":\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item) ? uniqueWhere(item, verbPath) : item,\n );\n break;\n case \"connectOrCreate\":\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item)\n ? { ...item, where: uniqueWhere(item.where, verbPath), create: walkChildCreate(item.create, verbPath) }\n : item,\n );\n break;\n case \"set\": {\n if (phase === \"create\") break; // not a create-phase verb; builder refuses\n if (scoped) {\n const kind = link().kind;\n if (kind === \"manyToMany\") refuse(verb, \"clears the whole join set — unlinking other tenants' rows cannot be verified; disconnect explicit rows instead\");\n if (!implicitSafe) refuse(verb, \"first detaches EVERY current child, which cannot be tenant-filtered on this edge; disconnect explicit rows instead\");\n }\n out[verb] = mapItems(operand ?? [], (item) =>\n isPlainObject(item) ? uniqueWhere(item, verbPath) : item,\n );\n break;\n }\n case \"disconnect\": {\n if (!relation.isList) {\n if (scoped) {\n const kind = link().kind;\n if (kind === \"toOneOwner\") {\n if (tenancyEdge) {\n refuse(verb, \"would orphan the row out of its tenant (through-parent set to null) — delete it or connect a replacement\");\n }\n // Writes only this row's own FK — safe.\n } else if (!implicitSafe) {\n refuse(verb, \"targets whatever row currently points here — not tenant-verifiable on this edge\");\n }\n }\n break;\n }\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item) ? uniqueWhere(item, verbPath) : item,\n );\n break;\n }\n case \"delete\": {\n if (!relation.isList) {\n if (scoped && !implicitSafe) {\n refuse(verb, \"targets whatever row is currently connected — not tenant-verifiable on this edge\");\n }\n break;\n }\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item) ? uniqueWhere(item, verbPath) : item,\n );\n break;\n }\n case \"update\": {\n if (!relation.isList) {\n if (scoped && !implicitSafe) {\n refuse(verb, \"targets whatever row is currently connected — not tenant-verifiable on this edge; update it through its own delegate\");\n }\n out[verb] = isPlainObject(operand)\n ? \"data\" in operand && isPlainObject(operand.data)\n ? { ...operand, data: walkChildUpdate(operand.data, verbPath) }\n : walkChildUpdate(operand, verbPath)\n : operand;\n break;\n }\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item)\n ? { ...item, where: uniqueWhere(item.where, verbPath), data: walkChildUpdate(item.data, verbPath) }\n : item,\n );\n break;\n }\n case \"updateMany\":\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item)\n ? { ...item, where: filterWhere(item.where, verbPath), data: walkChildUpdate(item.data, verbPath) }\n : item,\n );\n break;\n case \"deleteMany\":\n out[verb] = mapItems(operand, (item) => filterWhere(item, verbPath));\n break;\n case \"upsert\": {\n if (!relation.isList) {\n if (scoped && !implicitSafe) {\n refuse(verb, \"updates whatever row is currently connected — not tenant-verifiable on this edge\");\n }\n out[verb] = isPlainObject(operand)\n ? {\n ...operand,\n create: walkChildCreate(operand.create, verbPath),\n update: walkChildUpdate(operand.update, verbPath),\n }\n : operand;\n break;\n }\n out[verb] = mapItems(operand, (item) =>\n isPlainObject(item)\n ? {\n ...item,\n where: uniqueWhere(item.where, verbPath),\n create: walkChildCreate(item.create, verbPath),\n update: walkChildUpdate(item.update, verbPath),\n }\n : item,\n );\n break;\n }\n default:\n break; // unknown verbs: nested-writes refuses loudly\n }\n }\n return out;\n}\n\n// ─── The pure per-call rewriter ───────────────────────────────────\n\n/** A rewritten call: which base-delegate method to run, with which args. */\nexport type RewrittenScopedCall = {\n readonly model: string;\n readonly method: string;\n readonly args: ClientRow | undefined;\n};\n\n/** A validated, scope-bound rewriter — the pure core a binding's tests drive. */\nexport type ScopeRewriter = {\n readonly rewrite: (call: { model: string; method: string; args?: ClientRow }) => RewrittenScopedCall;\n};\n\n/**\n * Validate a models map + scope against the runtime meta and return the pure\n * per-call rewriter (`ScopedQueryError` on refusals). This is `$scoped`'s\n * engine without the client plumbing — conformance rewrite-vectors run here.\n */\nexport function createScopeRewriter(params: {\n meta: RuntimeMeta;\n models: ScopedModelsMap;\n scope: ScopeValue | null;\n}): ScopeRewriter {\n const { meta, models, scope } = params;\n const resolved = resolveScopedModels({ meta, models });\n if (scope !== null) assertScopeType({ meta, resolved, scope });\n const preds =\n scope === null ? new Map<string, ClientRow | null>() : buildPreds({ meta, resolved, scope });\n return {\n rewrite: (call) =>\n rewriteScopedCall({\n meta,\n resolved,\n scope,\n preds,\n model: call.model,\n method: call.method,\n args: call.args,\n }),\n };\n}\n\nconst FIND_LIKE: readonly string[] = [\"findMany\", \"findFirst\", \"findFirstOrThrow\", \"count\", \"aggregate\", \"groupBy\"];\n\n/**\n * Rewrite ONE delegate call for a scoped handle — pure: same inputs, same\n * output; refusals throw `ScopedQueryError` before any SQL could run. This is\n * the function the conformance rewrite-vectors pin.\n */\nexport function rewriteScopedCall(params: {\n meta: RuntimeMeta;\n resolved: ResolvedScopedModels;\n scope: ScopeValue | null;\n preds: ReadonlyMap<string, ClientRow | null>;\n model: string;\n method: string;\n args: ClientRow | undefined;\n}): RewrittenScopedCall {\n const { meta, resolved, scope, preds, method } = params;\n const ctx: ScopeContext = { meta, resolved, scope, preds };\n const model = getModelMeta({ meta, model: params.model });\n const entry = entryOf(ctx, model);\n const scoped = entry.kind !== \"none\";\n const root = `${model.clientName}.${method}`;\n const args: ClientRow = { ...(params.args ?? {}) };\n const ownPred = (): ClientRow => requirePred({ ctx, model, path: root });\n\n const walkOwnWhere = (where: unknown, path: string): unknown =>\n isPlainObject(where) ? walkWhere({ ctx, model, where, path }) : where;\n\n if (FIND_LIKE.includes(method)) {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n if (scoped) args.where = mergeWhere({ where: walked, pred: ownPred() });\n else if (walked !== undefined) args.where = walked;\n if (args.orderBy !== undefined) walkOrderBy({ ctx, model, orderBy: args.orderBy, path: `${root}.orderBy` });\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n switch (method) {\n case \"findUnique\":\n case \"findUniqueOrThrow\": {\n walkSelection({ ctx, model, args, path: root });\n if (!scoped) {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n if (walked !== undefined) args.where = walked;\n return { model: model.name, method, args };\n }\n // Contract: rewritten to findFirst over the flattened key + predicate —\n // a foreign row is indistinguishable from a missing one.\n const flat = isPlainObject(args.where)\n ? flattenUniqueWhere({ model, where: args.where })\n : (args.where as ClientRow);\n const walked = isPlainObject(flat) ? walkWhere({ ctx, model, where: flat, path: `${root}.where` }) : flat;\n args.where = mergeWhere({ where: walked, pred: ownPred() });\n return {\n model: model.name,\n method: method === \"findUnique\" ? \"findFirst\" : \"findFirstOrThrow\",\n args,\n };\n }\n\n case \"create\": {\n args.data = walkCreateData({ ctx, model, data: args.data ?? {}, path: `${root}.data` });\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"createMany\":\n case \"createManyAndReturn\": {\n const rows = args.data;\n args.data = Array.isArray(rows)\n ? rows.map((row) => walkCreateData({ ctx, model, data: row, path: `${root}.data` }))\n : walkCreateData({ ctx, model, data: rows ?? {}, path: `${root}.data` });\n if (method === \"createManyAndReturn\") walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"update\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n args.where = scoped ? injectUniqueWhere({ where: walked, pred: ownPred() }) : (walked as ClientRow);\n args.data = walkUpdateData({ ctx, model, data: args.data ?? {}, path: `${root}.data` });\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"updateMany\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n if (scoped) args.where = mergeWhere({ where: walked, pred: ownPred() });\n else if (walked !== undefined) args.where = walked;\n args.data = walkUpdateData({ ctx, model, data: args.data ?? {}, path: `${root}.data` });\n return { model: model.name, method, args };\n }\n\n case \"upsert\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n // The injected predicate is a guard field beyond the conflict target —\n // the client's find-then-write fallback probes with the FULL where, so\n // the update arm can only ever address an in-tenant row.\n args.where = scoped ? injectUniqueWhere({ where: walked, pred: ownPred() }) : (walked as ClientRow);\n args.create = walkCreateData({ ctx, model, data: args.create ?? {}, path: `${root}.create` });\n args.update = walkUpdateData({ ctx, model, data: args.update ?? {}, path: `${root}.update` });\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"delete\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n args.where = scoped ? injectUniqueWhere({ where: walked, pred: ownPred() }) : (walked as ClientRow);\n walkSelection({ ctx, model, args, path: root });\n return { model: model.name, method, args };\n }\n\n case \"deleteMany\": {\n const walked = walkOwnWhere(args.where, `${root}.where`);\n if (scoped) args.where = mergeWhere({ where: walked, pred: ownPred() });\n else if (walked !== undefined) args.where = walked;\n return { model: model.name, method, args };\n }\n\n default:\n return { model: model.name, method, args: params.args };\n }\n}\n\n// ─── Scoped delegates + client assembly ───────────────────────────\n\ntype AnyFn = (...args: unknown[]) => unknown;\n\nfunction scopedDelegate(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n base: ModelDelegate & Record<string, unknown>;\n}): ModelDelegate {\n const { ctx, model, base } = params;\n\n const run = <T>(method: string, args: ClientRow | undefined): Promise<T> => {\n let rewritten: RewrittenScopedCall;\n try {\n rewritten = rewriteScopedCall({\n meta: ctx.meta,\n resolved: ctx.resolved,\n scope: ctx.scope,\n preds: ctx.preds,\n model: model.name,\n method,\n args,\n });\n } catch (error) {\n // Reject (not throw): delegate methods promise a Promise, and a lazy\n // QueryPromise from the base delegate stays claimable by $transaction([...]).\n return Promise.reject(error);\n }\n const target = base[rewritten.method] as (a?: ClientRow) => Promise<T>;\n return target(rewritten.args);\n };\n\n return {\n findMany: (args?: ClientRow) => run(\"findMany\", args),\n findFirst: (args?: ClientRow) => run(\"findFirst\", args),\n findFirstOrThrow: (args?: ClientRow) => run(\"findFirstOrThrow\", args),\n findUnique: (args: ClientRow) => run(\"findUnique\", args),\n findUniqueOrThrow: (args: ClientRow) => run(\"findUniqueOrThrow\", args),\n create: (args: ClientRow) => run(\"create\", args),\n createMany: (args: ClientRow) => run<BatchResult>(\"createMany\", args),\n createManyAndReturn: (args: ClientRow) => run(\"createManyAndReturn\", args),\n update: (args: ClientRow) => run(\"update\", args),\n updateMany: (args: ClientRow) => run<BatchResult>(\"updateMany\", args),\n upsert: (args: ClientRow) => run(\"upsert\", args),\n delete: (args: ClientRow) => run(\"delete\", args),\n deleteMany: (args?: ClientRow) => run<BatchResult>(\"deleteMany\", args),\n count: (args?: ClientRow) => run(\"count\", args),\n aggregate: (args: ClientRow) => run(\"aggregate\", args),\n groupBy: (args: ClientRow) => run(\"groupBy\", args),\n } as ModelDelegate;\n}\n\n/**\n * Wrap extension surfaces (search/vector/… mounted per model): functions\n * taking `{ where }` get the tenant predicate AND-ed in and the where walked;\n * nested namespaces recurse.\n */\nfunction scopeExtensionProps(params: {\n ctx: ScopeContext;\n model: ModelMeta;\n base: Record<string, unknown>;\n delegate: ModelDelegate;\n}): Record<string, unknown> {\n const { ctx, model, base, delegate } = params;\n const entry = entryOf(ctx, model);\n const out: Record<string, unknown> = {};\n for (const [key, prop] of Object.entries(base)) {\n if (key in delegate) continue;\n if (typeof prop === \"function\") {\n out[key] = (args?: ClientRow): unknown => {\n try {\n const path = `${model.clientName}.${key}`;\n const walked = isPlainObject(args?.where)\n ? walkWhere({ ctx, model, where: args.where, path: `${path}.where` })\n : args?.where;\n const where =\n entry.kind === \"none\"\n ? walked\n : mergeWhere({ where: walked, pred: requirePred({ ctx, model, path }) });\n return (prop as AnyFn)({ ...(args ?? {}), ...(where === undefined ? {} : { where }) });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n } else if (isPlainObject(prop)) {\n out[key] = scopeExtensionProps({\n ctx,\n model,\n base: prop as Record<string, unknown>,\n delegate: {} as ModelDelegate,\n });\n }\n }\n return out;\n}\n\nfunction forbidden(params: { method: string }): ScopedQueryError {\n return refusal({\n model: \"*\",\n path: params.method,\n reason: \"raw_forbidden\",\n message: `$scoped: ${params.method} is not available on a scoped handle — raw SQL cannot be tenant-verified; run it on the BASE client (the deliberate unscoped escape)`,\n });\n}\n\nconst RAW_METHODS: readonly string[] = [\"$queryRaw\", \"$executeRaw\", \"$queryRawUnsafe\", \"$executeRawUnsafe\"];\n\n/** Build the scoped view over one underlying client (base or transaction). */\nfunction buildScopedOver(params: { ctx: ScopeContext; client: DynamicClient }): DynamicClient {\n const { ctx, client } = params;\n const scoped = Object.create(client) as DynamicClient & Record<string, unknown>;\n const scopedModels: Record<string, ModelDelegate> = { ...client.$models };\n\n for (const model of ctx.meta.models) {\n const base = client.$models[model.name] as ModelDelegate & Record<string, unknown>;\n const delegate = scopedDelegate({ ctx, model, base });\n const full = { ...delegate, ...scopeExtensionProps({ ctx, model, base, delegate }) };\n scopedModels[model.name] = full as ModelDelegate;\n scopedModels[model.clientName] = full as ModelDelegate;\n Object.defineProperty(scoped, model.clientName, { value: full, enumerable: true });\n }\n Object.defineProperty(scoped, \"$models\", { value: scopedModels, enumerable: true });\n attachDefineView({ client: scoped, meta: ctx.meta, models: scopedModels });\n\n Object.defineProperty(scoped, \"$transaction\", {\n value: (arg: unknown, options?: unknown) =>\n typeof arg === \"function\"\n ? client.$transaction(\n (tx) => (arg as (t: DynamicClient) => Promise<unknown>)(buildScopedOver({ ctx, client: tx })),\n options as never,\n )\n : // Array form: the operations came from SCOPED delegates, so their\n // args are already rewritten — the underlying client claims and\n // runs them in one transaction exactly like unscoped operations.\n client.$transaction(arg as never, options as never),\n enumerable: true,\n });\n\n for (const method of RAW_METHODS) {\n Object.defineProperty(scoped, method, {\n value: (): Promise<never> => Promise.reject(forbidden({ method })),\n enumerable: true,\n });\n }\n Object.defineProperty(scoped, \"$scoped\", {\n value: (): never => {\n throw refusal({\n model: \"*\",\n path: \"$scoped\",\n reason: \"rescope_forbidden\",\n message: \"$scoped: this handle is already scoped — build a differently-scoped handle from the BASE client\",\n });\n },\n enumerable: true,\n });\n\n return scoped;\n}\n\n/**\n * Attach `$scoped` to a built client. Validation happens per call:\n * `@@policy` schemas refuse (the two scoping layers do not combine), the\n * models map is resolved against the schema (cached by object identity), and\n * the scope value is type-checked against every scoped column.\n */\nexport function attachScoped(params: { client: DynamicClient; meta: RuntimeMeta }): void {\n const { client, meta } = params;\n Object.defineProperty(client, \"$scoped\", {\n value: (config: ScopedClientConfig): DynamicClient => {\n if (!isPlainObject(config) || !isPlainObject(config.models)) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: \"$scoped takes { scope: string | number | bigint | null, models: { <Model>: … } }\",\n });\n }\n const policied = meta.models.filter((model) => model.policy !== undefined);\n if (policied.length > 0) {\n throw refusal({\n model: policied[0]?.name as string,\n path: \"$scoped\",\n reason: \"policy_conflict\",\n message: `$scoped: the schema declares @@policy on ${policied\n .map((model) => model.name)\n .join(\", \")} — use $withPolicy for policied schemas; the two scoping layers do not combine`,\n });\n }\n const scope = config.scope;\n if (scope !== null && typeof scope !== \"string\" && typeof scope !== \"number\" && typeof scope !== \"bigint\") {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `$scoped: scope must be a string, number, bigint or null — got ${typeof scope}`,\n });\n }\n const resolved = resolveScopedModels({ meta, models: config.models });\n if (scope !== null) assertScopeType({ meta, resolved, scope });\n const preds =\n scope === null\n ? new Map<string, ClientRow | null>()\n : buildPreds({ meta, resolved, scope });\n const ctx: ScopeContext = { meta, resolved, scope, preds };\n return buildScopedOver({ ctx, client });\n },\n enumerable: true,\n });\n}\n",
|
|
19
|
+
"/**\n * The dynamic client: model delegates over a `DatabaseAdapter`, built from the\n * Schema IR at runtime.\n *\n * This is the engine the generated client wraps in P2 proper. It is deliberately\n * untyped-per-model — the generator emits a `.d.ts` that declares each delegate\n * with precise argument and result types, and casts to it. Nothing about the\n * shape of a query lives here: `query-builder.ts` builds statements,\n * `@vibeorm/sql` renders them, `codecs.ts` moves values across the wire,\n * `relation-loader.ts` attaches included relations, `nested-writes.ts`\n * orchestrates relation verbs inside create/update data.\n *\n * Execution split:\n * - row-returning statements use `adapter.execute` (the cached hot path),\n * - count-returning mutations (createMany/updateMany/deleteMany) use\n * `adapter.executeUnsafe`, the only place the frozen adapter contract\n * surfaces `affectedRows`.\n */\n\nimport { VibeError, unsupportedCapability } from \"@vibeorm/schema\";\nimport type { Dialect, SchemaIR } from \"@vibeorm/schema\";\nimport { ParamCollector, getSqlDialect } from \"@vibeorm/sql\";\nimport type { SelectStatement, SqlDialect, SqlStatement } from \"@vibeorm/sql\";\nimport type { DatabaseAdapter, TransactionOptions } from \"./adapter.ts\";\nimport { decodeAggregateValue, materializeRows } from \"./codecs.ts\";\nimport { StatementRenderCache, renderStatementCached } from \"./render-cache.ts\";\nimport { buildRuntimeMeta, getModelMeta } from \"./model-meta.ts\";\nimport type { FieldMeta, ModelMeta, RuntimeMeta } from \"./model-meta.ts\";\nimport { COUNT_ALIAS, buildQuery, resolveResultShape, upsertUsesNativeStatement } from \"./query-builder.ts\";\nimport type { AggregateSpec, QueryMethod, QueryPlan, RelationStrategy, ResortKey } from \"./query-builder.ts\";\nimport { attachLateralRelations, attachRelations } from \"./relation-loader.ts\";\nimport type { RelationExecutor } from \"./relation-loader.ts\";\nimport { createWithNested, hasNestedWrites, updateWithNested } from \"./nested-writes.ts\";\nimport type { StatementRunner, WriteContext } from \"./nested-writes.ts\";\nimport type { RelationSelection } from \"./relation-plan.ts\";\nimport { applyComputedFields, assertComputedManifest } from \"./computed.ts\";\nimport type { ClientComputedOptions } from \"./computed.ts\";\nimport {\n assertExtensionManifest,\n buildConnectHooks,\n buildExtensionOperatorMap,\n} from \"./extensions.ts\";\nimport type {\n ClientExtensionMount,\n ClientExtensionsOptions,\n ConnectHook,\n ExtensionMountContext,\n} from \"./extensions.ts\";\nimport { compileWhere } from \"./query-builder.ts\";\nimport { attachDefineView } from \"./views.ts\";\nimport type { DefineViewFn } from \"./views.ts\";\nimport { applyWriteValidators } from \"./validators.ts\";\nimport type { WriteValidators } from \"./validators.ts\";\nimport { attachPolicy } from \"./policy.ts\";\nimport type { PolicyContextValue } from \"./policy.ts\";\nimport { attachScoped } from \"./scoped.ts\";\nimport type { ScopedClientConfig } from \"./scoped.ts\";\n\n// ─── Public types ─────────────────────────────────────────────────\n\n/** One executed statement, reported to `ClientOptions.onQuery`. */\nexport type QueryEvent = {\n /** Model name, or `null` for raw queries. */\n readonly model: string | null;\n /** ORM method, or `\"$queryRaw\"` / `\"$executeRaw\"`. */\n readonly method: string;\n readonly text: string;\n readonly values: readonly unknown[];\n readonly durationMs: number;\n};\n\nexport type ClientOptions = {\n /** Called after every statement — logging, tracing, test assertions. */\n readonly onQuery?: (event: QueryEvent) => void;\n /**\n * Default relation-loading strategy: `\"query\"` (batched WHERE-IN, portable,\n * the default) or `\"join\"` (LATERAL + JSON aggregation, postgres/pglite\n * only). A per-query `relationStrategy` argument overrides it.\n */\n readonly relationStrategy?: RelationStrategy;\n /**\n * Append the primary key to ORDER BY when a find has no explicit orderBy\n * (default false) — deterministic row order at the cost of a sort. v1 parity.\n */\n readonly defaultOrderByPk?: boolean;\n /**\n * Append the primary key as a tie-breaker to `distinct` ordering (default\n * TRUE) — without it, WHICH row represents each distinct key is unspecified.\n * v1 parity.\n */\n readonly distinctOrderByPk?: boolean;\n /**\n * Opt-in write-boundary validators (Standard Schema, per model × field):\n * `{ User: { settings: zodSchema } }`. Run on every write path (nested\n * creates included) before encoding; failure throws VIBE_VALIDATION with\n * the validator's issues in `meta`. Reads are never taxed.\n */\n readonly validate?: WriteValidators;\n};\n\n/** Rows are plain objects keyed by field name; the generated client narrows them. */\nexport type ClientRow = Record<string, unknown>;\n\n/** Result of the count-returning batch methods. */\nexport type BatchResult = { readonly count: number };\n\n/**\n * A model's methods. Arguments and results are intentionally broad here — the\n * generated `.d.ts` replaces this surface with precise per-model types, and\n * keeping the runtime free of inference is what holds the type-cost budget\n * (constitution rule 2).\n */\nexport type ModelDelegate = {\n readonly findMany: (args?: ClientRow) => Promise<ClientRow[]>;\n readonly findFirst: (args?: ClientRow) => Promise<ClientRow | null>;\n readonly findFirstOrThrow: (args?: ClientRow) => Promise<ClientRow>;\n readonly findUnique: (args: ClientRow) => Promise<ClientRow | null>;\n readonly findUniqueOrThrow: (args: ClientRow) => Promise<ClientRow>;\n readonly create: (args: ClientRow) => Promise<ClientRow | null>;\n readonly createMany: (args: ClientRow) => Promise<BatchResult>;\n readonly createManyAndReturn: (args: ClientRow) => Promise<ClientRow[]>;\n readonly update: (args: ClientRow) => Promise<ClientRow>;\n readonly updateMany: (args: ClientRow) => Promise<BatchResult>;\n readonly upsert: (args: ClientRow) => Promise<ClientRow>;\n readonly delete: (args: ClientRow) => Promise<ClientRow>;\n readonly deleteMany: (args?: ClientRow) => Promise<BatchResult>;\n /** Plain form returns a number; `{ select: { _all, field } }` returns per-key counts. */\n readonly count: (args?: ClientRow) => Promise<number | Record<string, number>>;\n readonly aggregate: (args: ClientRow) => Promise<ClientRow>;\n readonly groupBy: (args: ClientRow) => Promise<ClientRow[]>;\n};\n\n/**\n * The client. Delegates are also attached as own properties under their\n * camelCase names (`client.user.findMany()`); the type surfaces them through\n * `$models` because a plain index signature would erase the `$`-methods.\n * Model names can never collide with those: every reserved client name is\n * `$`-prefixed (see `RESERVED_CLIENT_NAMES` in @vibeorm/schema).\n */\nexport type DynamicClient = {\n /** Delegates keyed by BOTH camelCase client name and model name. */\n readonly $models: Readonly<Record<string, ModelDelegate>>;\n /**\n * Subscribe to client events (`\"query\"` fires after every statement, with\n * the same payload as `ClientOptions.onQuery` — both fire). Returns an\n * unsubscribe function. Transaction clients share the parent's listeners.\n */\n readonly $on: (event: \"query\", listener: (event: QueryEvent) => void) => () => void;\n /**\n * Run work in ONE transaction. Callback form: `fn` receives a transaction\n * client; everything it runs rides the same BEGIN/COMMIT and a throw rolls\n * back. Array form (Prisma parity): UN-AWAITED delegate calls — delegate\n * methods return LAZY query promises that only dispatch on await — run\n * SEQUENTIALLY inside one transaction, results returned positionally.\n */\n readonly $transaction: {\n <T>(fn: (tx: DynamicClient) => Promise<T>, options?: TransactionOptions): Promise<T>;\n <T extends readonly unknown[]>(\n operations: readonly [...T],\n options?: TransactionOptions,\n ): Promise<{ -readonly [K in keyof T]: Awaited<T[K]> }>;\n };\n /** Tagged template — interpolations become bound parameters, never text. */\n readonly $queryRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<ClientRow[]>;\n /** Tagged template returning the affected-row count. */\n readonly $executeRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<number>;\n readonly $queryRawUnsafe: (text: string, ...values: unknown[]) => Promise<ClientRow[]>;\n readonly $executeRawUnsafe: (text: string, ...values: unknown[]) => Promise<number>;\n readonly $connect: () => Promise<void>;\n readonly $disconnect: () => Promise<void>;\n /**\n * Field-masking views (v1 `defineView` parity, board #11) — a read-only\n * scoped client restricted to the definition's models and fields. Attached\n * by `attachDefineView` after construction (hence optional in the type);\n * it is always present on a built client, transaction clients included.\n */\n readonly $defineView?: DefineViewFn;\n /**\n * Row scoping (@@policy): bind a per-request context — the returned client\n * AND-s the policy predicate into every query on policied models and forces\n * it into creates. Attached only when the schema declares @@policy.\n */\n readonly $withPolicy?: (context: Readonly<Record<string, PolicyContextValue>>) => DynamicClient;\n /** Deliberate, greppable full-access escape from policy scoping. */\n readonly $bypassPolicy?: () => DynamicClient;\n /**\n * Tenant scoping (framework handoff): base client + total per-model tenancy\n * map + scope value → a NEW handle whose every call is confined to that\n * tenant (raw SQL refused). Always attached; refuses on @@policy schemas.\n */\n readonly $scoped?: (config: ScopedClientConfig) => DynamicClient;\n};\n\n// ─── Errors ───────────────────────────────────────────────────────\n\nfunction notFound(params: { model: string; method: QueryMethod | string }): VibeError {\n const { model, method } = params;\n return new VibeError({\n code: \"VIBE_NOT_FOUND\",\n message: `no ${model} record matched the where clause of ${method}()`,\n meta: { model, method },\n });\n}\n\nfunction viewIsReadOnly(params: { model: string; method: string }): VibeError {\n const { model, method } = params;\n return new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `${model} is a view — ${method}() is not available on views (they are read-only); write to the underlying table instead`,\n meta: { model, method },\n });\n}\n\n// ─── Parameter binding ────────────────────────────────────────\n\n/**\n * ORM-path binding: after the codec table has encoded every parameter, the only\n * bare JS arrays left in `rendered.values` are scalar-list params — `inArray`\n * filters and list-column writes (`Json.encode` stringifies, Bytes are\n * `Uint8Array`). Their wire form is the ADAPTER's business (`= ANY($n)` needs a\n * PG array literal on bun:sql, a tagged passthrough on pg/pglite), so each one\n * is handed to `adapter.formatArrayParam` here. Reviewed as fix F1 — the raw\n * paths (`$queryRaw*`) deliberately do NOT bind: drivers take raw arrays there\n * (LEARNINGS: ORM-path vs raw-path array params differ).\n */\nfunction bindValues(params: { adapter: DatabaseAdapter; values: unknown[] }): unknown[] {\n const { adapter, values } = params;\n return values.map((value) => (Array.isArray(value) ? adapter.formatArrayParam(value) : value));\n}\n\n// ─── Row shaping ──────────────────────────────────────────────────\n\n/**\n * Narrow a row to the fields the caller selected (scalars, relation names,\n * `_count`). Mutations RETURNING the primary key and relation loading fetching\n * stitch keys both hand back more than was asked for.\n */\nfunction project(params: { row: ClientRow; fields: readonly string[] | null }): ClientRow {\n const { row, fields } = params;\n if (fields === null) return row;\n const out: ClientRow = {};\n for (const field of fields) out[field] = row[field];\n return out;\n}\n\n/**\n * The N1 re-sort comparator (`QueryPlan.resortBy`): the user's orderBy over\n * DECODED rows, with `nulls` and Decimal ranking resolved at build time to\n * mirror what the SQL order would have produced (B4: Decimal ranks\n * numerically — the SQL side ordered a number).\n */\nfunction resortComparator(keys: readonly ResortKey[]): (a: ClientRow, b: ClientRow) => number {\n const rank = (value: unknown): number | bigint | string => {\n if (typeof value === \"boolean\") return value ? 1 : 0;\n if (value instanceof Date) return value.getTime();\n return value as number | bigint | string;\n };\n return (a, b) => {\n for (const key of keys) {\n const left = a[key.field];\n const right = b[key.field];\n const leftNull = left === null || left === undefined;\n const rightNull = right === null || right === undefined;\n if (leftNull || rightNull) {\n if (leftNull && rightNull) continue;\n return leftNull === (key.nulls === \"first\") ? -1 : 1;\n }\n const rankLeft = key.decimal ? Number(left) : rank(left);\n const rankRight = key.decimal ? Number(right) : rank(right);\n if (rankLeft < rankRight) return key.direction === \"asc\" ? -1 : 1;\n if (rankLeft > rankRight) return key.direction === \"asc\" ? 1 : -1;\n }\n return 0;\n };\n}\n\n/**\n * Client-side leg of the find pipeline, in plan order: the negative-take\n * re-reverse, then the N1 distinct re-sort (the user's orderBy restored over\n * the deduplicated rows — every dialect: DISTINCT ON and the ROW_NUMBER\n * emulation both present rows grouped by the distinct key). The two never\n * combine — distinct refuses a negative take at build time.\n */\nfunction shapeRows(params: { plan: QueryPlan; rows: ClientRow[] }): ClientRow[] {\n const { plan, rows } = params;\n let out = rows;\n if (plan.reverseRows) out = [...out].reverse();\n if (plan.resortBy !== null && plan.resortBy.length > 0) {\n out = [...out].sort(resortComparator(plan.resortBy));\n }\n return out;\n}\n\n// ─── Aggregate result assembly ──────────────────────────────\n\nfunction fieldOf(params: { model: ModelMeta; name: string | null }): FieldMeta | null {\n const { model, name } = params;\n if (name === null) return null;\n return model.fieldByName.get(name) ?? null;\n}\n\n/** `{ _count: 3 | {…}, _avg: {…}, … }` from one aggregate row, by construction. */\nfunction assembleAggregates(params: {\n engine: Engine;\n model: ModelMeta;\n spec: AggregateSpec;\n row: ClientRow;\n into: ClientRow;\n}): ClientRow {\n const { engine, model, spec, row, into } = params;\n for (const selection of spec.selections) {\n const value = decodeAggregateValue({\n dialect: engine.dialect.name,\n key: selection.key,\n field: fieldOf({ model, name: selection.field }),\n value: row[selection.alias],\n });\n if (selection.key === \"_count\" && spec.countShorthand) {\n into._count = value;\n continue;\n }\n const bucket = (into[selection.key] as Record<string, unknown> | undefined) ?? {};\n bucket[selection.field ?? \"_all\"] = value;\n into[selection.key] = bucket;\n }\n return into;\n}\n\n// ─── Engine ───────────────────────────────────────────────────────\n\ntype Engine = {\n readonly meta: RuntimeMeta;\n readonly adapter: DatabaseAdapter;\n readonly dialect: SqlDialect;\n readonly options: ClientOptions;\n /** True on engines bound to an open transaction — gates `lock` (FOR UPDATE). */\n readonly inTransaction?: boolean;\n /** `$on(\"query\")` subscribers — one shared set across transaction clients. */\n readonly listeners: Set<(event: QueryEvent) => void>;\n /** Compiled-query cache (§9) — shape-keyed SQL texts, shared across transaction clients. */\n readonly renderCache: StatementRenderCache;\n /** Baked extension surface mounts (D9) — re-attached on every client build. */\n readonly extensionMounts?: readonly ClientExtensionMount[];\n /** Extension onConnect hooks — run by `$connect()`. */\n readonly connectHooks?: readonly ConnectHook[];\n};\n\nfunction report(params: {\n engine: Engine;\n model: string | null;\n method: string;\n text: string;\n values: readonly unknown[];\n started: number;\n}): void {\n const { engine, model, method, text, values, started } = params;\n const onQuery = engine.options.onQuery;\n if (onQuery === undefined && engine.listeners.size === 0) return;\n const event: QueryEvent = { model, method, text, values, durationMs: performance.now() - started };\n onQuery?.(event);\n for (const listener of engine.listeners) listener(event);\n}\n\n// ─── Lazy query promises (array $transaction) ─────────────────\n\n/** A claimed array-$transaction operation (see QueryPromise.claim). */\ntype ClaimedOperation = {\n readonly start: (target: Engine) => Promise<unknown>;\n readonly abort: (reason: unknown) => void;\n};\n\n/**\n * The promise every delegate method returns — dispatch is DEFERRED to the end\n * of the creation tick (a microtask): awaiting sooner starts it sooner, and\n * `$transaction([...])` claims still-deferred operations SYNCHRONOUSLY and\n * runs them sequentially against the transaction's own engine inside one\n * BEGIN/COMMIT. At every ordinary call site this is observably an eager\n * promise (v1's delegates were fully eager); the deferral only exists for the\n * array form, so operations must reach `$transaction` in the tick they were\n * created — later, they have already dispatched and the claim fails LOUDLY\n * (silently adopting an in-flight promise would fake atomicity, v1's flaw).\n *\n * A NATIVE Promise subclass, not a bare thenable: test matchers\n * (`expect().rejects`) and user code check `instanceof Promise`, and Bun's\n * matchers await the native state without ever calling `.then` — which is\n * also why dispatch cannot wait for a `.then` that may never come. Species is\n * pinned to the base Promise so `.then` chains produce plain promises.\n */\nclass QueryPromise<T> extends Promise<T> {\n static override get [Symbol.species](): PromiseConstructor {\n return Promise;\n }\n\n private target!: Engine;\n private dispatch!: (target: Engine) => Promise<T>;\n private settle!: { resolve: (value: T | PromiseLike<T>) => void; reject: (reason: unknown) => void };\n private started = false;\n\n /** Build a deferred operation; the constructor itself stays the native one. */\n static create<T>(params: { engine: Engine; run: (target: Engine) => Promise<T> }): QueryPromise<T> {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason: unknown) => void;\n const instance = new QueryPromise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n instance.target = params.engine;\n instance.dispatch = params.run;\n instance.settle = { resolve, reject };\n // Auto-dispatch when the creation tick's synchronous run completes —\n // unless an array $transaction claimed the operation first.\n queueMicrotask(() => {\n instance.start();\n });\n return instance;\n }\n\n private start(): void {\n if (this.started) return;\n this.started = true;\n this.dispatch(this.target).then(this.settle.resolve, this.settle.reject);\n }\n\n override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n // `catch` and `finally` route through `then` per spec — awaiting starts\n // the dispatch immediately instead of at the microtask.\n this.start();\n return super.then(onfulfilled, onrejected);\n }\n\n /**\n * The array-$transaction entry: claim the operation SYNCHRONOUSLY (before\n * the auto-dispatch microtask can fire), receiving a starter that runs it\n * against the transaction's engine and an aborter that settles it when the\n * transaction dies before its turn — a stray await on it must reject, never\n * hang.\n */\n claim(): ClaimedOperation {\n if (this.started) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n \"$transaction([...]) needs operations that have not dispatched — pass delegate calls in the same tick they are created (this one was awaited or created earlier and already executed outside the transaction)\",\n });\n }\n this.started = true;\n return {\n start: (target: Engine): Promise<unknown> => {\n const running = this.dispatch(target);\n // Settle this promise too (a caller may hold and await it), and mark\n // its rejection handled — the array runner propagates failures.\n running.then(this.settle.resolve, this.settle.reject);\n super.then(undefined, () => {});\n return running as Promise<unknown>;\n },\n abort: (reason: unknown): void => {\n this.settle.reject(reason);\n super.then(undefined, () => {});\n },\n };\n }\n}\n\n/** Render + execute a row-returning statement, decoding through the codec table. */\nasync function runRows(params: { engine: Engine; plan: QueryPlan }): Promise<ClientRow[]> {\n const { engine, plan } = params;\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: plan.statement,\n cache: engine.renderCache,\n });\n const started = performance.now();\n const rows = await engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n });\n report({\n engine,\n model: plan.model.name,\n method: plan.method,\n text: rendered.text,\n values: rendered.values,\n started,\n });\n return materializeRows({ dialect: engine.dialect.name, model: plan.model, rows, wire: engine.adapter.wire });\n}\n\n/** Execute a statement for its affected-row count (`executeUnsafe` exposes it). */\nasync function runAffected(params: { engine: Engine; plan: QueryPlan }): Promise<number> {\n const { engine, plan } = params;\n // M4/M7: a multi-statement batch (sqlite createMany groups, parameter-budget\n // chunks) runs atomically — exactly like the single statement it replaces.\n if (plan.batch !== undefined && plan.batch.length > 1) {\n const batch = plan.batch;\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n let total = 0;\n for (const statement of batch) {\n total += await runAffected({ engine: txEngine, plan: { ...plan, statement, batch: undefined } });\n }\n return total;\n });\n }\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: plan.statement,\n cache: engine.renderCache,\n });\n const started = performance.now();\n const result = await engine.adapter.executeUnsafe({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n });\n report({\n engine,\n model: plan.model.name,\n method: plan.method,\n text: rendered.text,\n values: rendered.values,\n started,\n });\n return result.affectedRows;\n}\n\nfunction plan(params: {\n engine: Engine;\n model: string;\n method: QueryMethod;\n args: ClientRow | undefined;\n}): QueryPlan {\n const { engine, model, method, args } = params;\n // `lock` is a row lock held to COMMIT — outside a transaction the lock\n // releases at statement end, a silent no-op. The engine knows which client\n // it is (the builder cannot), so the refusal lives here.\n if (args !== undefined && args[\"lock\"] !== undefined && engine.inTransaction !== true) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `lock on ${model}.${method}() requires a transaction — call it on the client $transaction hands its callback (outside one, the lock would release at statement end)`,\n meta: { model, method },\n });\n }\n return buildQuery({\n meta: engine.meta,\n dialect: engine.dialect,\n model,\n method,\n args,\n ...(engine.options.relationStrategy === undefined\n ? {}\n : { defaultRelationStrategy: engine.options.relationStrategy }),\n clientOptions: {\n ...(engine.options.defaultOrderByPk === undefined\n ? {}\n : { defaultOrderByPk: engine.options.defaultOrderByPk }),\n ...(engine.options.distinctOrderByPk === undefined\n ? {}\n : { distinctOrderByPk: engine.options.distinctOrderByPk }),\n },\n });\n}\n\n/** Re-select the row a mutation touched, on dialects without RETURNING. */\nasync function refetch(params: {\n engine: Engine;\n source: QueryPlan;\n where: Readonly<Record<string, unknown>>;\n /** `SELECT … FOR UPDATE` (where the dialect has a lock clause) — the\n * read-before-write overlays lock the row they are about to write. */\n lock?: boolean;\n}): Promise<ClientRow | null> {\n const { engine, source, where } = params;\n const selectArg = source.selectArg;\n const followUp = plan({\n engine,\n model: source.model.name,\n method: \"findUnique\",\n args: selectArg === null ? { where } : { where, select: selectArg },\n });\n const locked: QueryPlan =\n params.lock === true\n ? { ...followUp, statement: { ...(followUp.statement as SelectStatement), lockForUpdate: true } }\n : followUp;\n const rows = await runRows({ engine, plan: locked });\n return rows[0] ?? null;\n}\n\n/** Shallow record equality — \"is the overlaid refetch key the same key?\". */\nfunction sameRecord(\n a: Readonly<Record<string, unknown>>,\n b: Readonly<Record<string, unknown>>,\n): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n const left = a[key];\n const right = b[key];\n if (left === right) continue;\n if (left instanceof Date && right instanceof Date && left.getTime() === right.getTime()) continue;\n return false;\n }\n return true;\n}\n\n/**\n * The WHERE that identifies a freshly inserted row on a dialect without\n * RETURNING: the app-generated key when there is one, else the driver's\n * last-insert-id — which is why the DB-assigned-key path runs inside ONE\n * transaction (see `runSingleMutation`): `LAST_INSERT_ID()` is\n * connection-scoped, and only the transaction contract guarantees the INSERT\n * and the read-back share a connection.\n */\nasync function insertedKeyWhere(params: {\n engine: Engine;\n source: QueryPlan;\n}): Promise<Record<string, unknown>> {\n const { engine, source } = params;\n if (source.refetchWhere !== null) return { ...source.refetchWhere };\n\n const keyField = source.model.primaryKey[0];\n const lastInsertIdSql = engine.dialect.lastInsertIdSql;\n if (lastInsertIdSql === null || source.model.primaryKey.length !== 1 || keyField === undefined) {\n throw unsupportedCapability({\n dialect: engine.dialect.name,\n feature: `${source.method} on ${source.model.name} without RETURNING`,\n hint: \"this model's key is assigned by the database and cannot be read back on this dialect\",\n });\n }\n const started = performance.now();\n const result = await engine.adapter.executeUnsafe({ text: lastInsertIdSql });\n report({\n engine,\n model: source.model.name,\n method: source.method,\n text: lastInsertIdSql,\n values: [],\n started,\n });\n const id = result.rows[0]?.id;\n if (id === undefined || id === null) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `could not read back the generated key for ${source.model.name}`,\n meta: { model: source.model.name },\n });\n }\n return { [keyField.name]: id };\n}\n\n/**\n * Run a single-row mutation. On dialects with RETURNING the statement carries\n * its own result; otherwise the row is read back with a second statement — for\n * `delete` that read happens BEFORE the write, since afterwards the row is gone.\n *\n * Returns the FULL row (RETURNING includes the primary key and stitch keys);\n * the delegate narrows down to the caller's selection after relation loading.\n */\nasync function runSingleMutation(params: {\n engine: Engine;\n source: QueryPlan;\n readBeforeWrite: boolean;\n /**\n * `create({ onConflict })`: zero written rows is the SKIPPED verdict —\n * return null instead of not-found (RETURNING presence / affected count is\n * the truth of who won the conflict).\n */\n allowZeroRows?: boolean;\n}): Promise<ClientRow | null> {\n const { engine, source, readBeforeWrite } = params;\n\n // Mirrors the renderer's applyReturning verdict WITHOUT rendering — the\n // native path would otherwise render twice per mutation.\n const statement = source.statement;\n const requested = statement.kind === \"select\" ? undefined : statement.returning;\n if (requested !== undefined && requested.length > 0 && engine.dialect.capabilities.returning) {\n const rows = await runRows({ engine, plan: source });\n const row = rows[0];\n if (row === undefined) {\n if (params.allowZeroRows === true) return null;\n throw notFound({ model: source.model.name, method: source.method });\n }\n return row;\n }\n\n // RETURNING omitted (mysql): read the row around the write.\n const rendered = renderStatementCached({ dialect: engine.dialect, statement, cache: engine.renderCache });\n // `executeUnsafe` — the only adapter entry point that surfaces the\n // affected-row count, which the overlays below must check (M1/M2): a write\n // that matched nothing is a not-found, never \"re-select and hope\".\n const executeWrite = async (target: Engine): Promise<number> => {\n const started = performance.now();\n const result = await target.adapter.executeUnsafe({\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n });\n report({\n engine: target,\n model: source.model.name,\n method: source.method,\n text: rendered.text,\n values: rendered.values,\n started,\n });\n return result.affectedRows;\n };\n\n if (readBeforeWrite) {\n // delete: the read must happen BEFORE the write — and both must observe\n // ONE row: the read locks it (FOR UPDATE) inside a transaction, and a\n // DELETE that then matches nothing is a concurrent-delete not-found, not\n // a success reporting the pre-read row (M1).\n const where = source.refetchWhere;\n if (where === null) throw notFound({ model: source.model.name, method: source.method });\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const before = await refetch({ engine: txEngine, source, where, lock: true });\n if (before === null) throw notFound({ model: source.model.name, method: source.method });\n const affected = await executeWrite(txEngine);\n if (affected === 0) throw notFound({ model: source.model.name, method: source.method });\n return before;\n });\n }\n\n if (source.refetchWhere !== null) {\n const knownWhere = source.refetchWhere;\n\n if (source.method === \"upsert\") {\n // Which arm ran is only knowable from the read-back. The write and every\n // read ride ONE transaction (the only same-connection guarantee the\n // frozen adapter interface gives). In order:\n // 1. the overlaid unique where — the UPDATE arm's row answers it, and\n // so does the INSERT arm's unless the update arm rewrites the key;\n // 2. the un-overlaid where — the INSERT arm's row always answers it\n // (the B1 gate guarantees create binds the conflict target);\n // 3. LAST_INSERT_ID() — only meaningful when the ODKU statement\n // carries the `id = LAST_INSERT_ID(id)` trick (B2): the update arm\n // then names the row it addressed even when that row was matched\n // through a DIFFERENT unique key than the where names.\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n await executeWrite(txEngine);\n const byWhere = await refetch({ engine: txEngine, source, where: knownWhere });\n if (byWhere !== null) return byWhere;\n const baseWhere = source.refetchWhereBase;\n if (baseWhere !== null && !sameRecord(baseWhere, knownWhere)) {\n const byBase = await refetch({ engine: txEngine, source, where: baseWhere });\n if (byBase !== null) return byBase;\n }\n const insertStatement = source.statement;\n const hasIdTrick =\n insertStatement.kind === \"insert\" &&\n insertStatement.onConflict !== undefined &&\n !(\"doNothing\" in insertStatement.onConflict) &&\n insertStatement.onConflict.lastInsertIdColumn !== undefined;\n if (!hasIdTrick) throw notFound({ model: source.model.name, method: source.method });\n const where = await insertedKeyWhere({ engine: txEngine, source: { ...source, refetchWhere: null } });\n const after = await refetch({ engine: txEngine, source, where });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n }\n\n if (source.method === \"update\") {\n // M2: the write and its read-back observe one row inside a transaction,\n // and a write that MATCHED no row (mysql reports matched — mysql2 sets\n // CLIENT_FOUND_ROWS) is a not-found: re-selecting by the overlaid unique\n // where could otherwise resolve a wrong, unrelated row.\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const affected = await executeWrite(txEngine);\n if (affected === 0) throw notFound({ model: source.model.name, method: source.method });\n const after = await refetch({ engine: txEngine, source, where: knownWhere });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n }\n\n // create with an app-generated key: the key is known before the write.\n const affected = await executeWrite(engine);\n if (affected === 0 && params.allowZeroRows === true) return null;\n const after = await refetch({ engine, source, where: knownWhere });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n }\n\n // DB-assigned key: INSERT + LAST_INSERT_ID() + re-select must observe ONE\n // connection — the transaction contract is the only guarantee the frozen\n // adapter interface gives us (review work order #7/F5, runtime half).\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const affected = await executeWrite(txEngine);\n if (affected === 0 && params.allowZeroRows === true) return null;\n const where = await insertedKeyWhere({ engine: txEngine, source });\n const after = await refetch({ engine: txEngine, source, where });\n if (after === null) throw notFound({ model: source.model.name, method: source.method });\n return after;\n });\n}\n\n/** Narrow a mutation result the caller KNOWS cannot be null (no allowZeroRows). */\nfunction requireRow(params: { row: ClientRow | null; model: string; method: string }): ClientRow {\n if (params.row === null) throw notFound({ model: params.model, method: params.method });\n return params.row;\n}\n\n/**\n * The transactional find-then-write upsert — Prisma's own fallback, used\n * whenever the create data does not bind the conflict-target columns with the\n * where's values (`upsertUsesNativeStatement`, SQL review B1): a native\n * INSERT … ON CONFLICT could never fire on the addressed row there, and on\n * postgres/sqlite would silently insert a duplicate-in-spirit row while\n * mysql's ODKU could update an unrelated one.\n *\n * Probe by the unique where (locked, where the dialect has row locks), then\n * run the UPDATE arm on a hit and the CREATE arm on a miss. Both arm plans\n * build BEFORE the transaction — validation stays earliest-moment, exactly as\n * the native statement validates both arms up front. Races stay LOUD: a\n * concurrent insert after a probe miss surfaces the unique violation, a\n * concurrent delete after a probe hit surfaces not-found.\n */\nasync function runUpsertFallback(params: {\n engine: Engine;\n model: ModelMeta;\n args: ClientRow;\n}): Promise<ClientRow> {\n const { engine, model, args } = params;\n const passthrough: ClientRow = {};\n if (args.select !== undefined) passthrough.select = args.select;\n if (args.omit !== undefined) passthrough.omit = args.omit;\n if (args.include !== undefined) passthrough.include = args.include;\n\n const probeSource = plan({ engine, model: model.name, method: \"findUnique\", args: { where: args.where } });\n const probePlan: QueryPlan = {\n ...probeSource,\n statement: { ...(probeSource.statement as SelectStatement), lockForUpdate: true },\n };\n const createSource = plan({\n engine,\n model: model.name,\n method: \"create\",\n args: { ...passthrough, data: args.create },\n });\n const updateSource = plan({\n engine,\n model: model.name,\n method: \"update\",\n args: { ...passthrough, where: args.where, data: args.update },\n });\n\n return await engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const existing = (await runRows({ engine: txEngine, plan: probePlan }))[0];\n const source = existing === undefined ? createSource : updateSource;\n return requireRow({\n row: await runSingleMutation({ engine: txEngine, source, readBeforeWrite: false }),\n model: model.name,\n method: \"upsert\",\n });\n });\n}\n\n// ─── Relation attachment + result shaping ─────────────────\n\nfunction relationExecutor(params: { engine: Engine }): RelationExecutor {\n const { engine } = params;\n return async ({ statement, model, method }) => {\n const rendered = renderStatementCached({ dialect: engine.dialect, statement, cache: engine.renderCache });\n const started = performance.now();\n const rows = await engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n });\n report({ engine, model, method, text: rendered.text, values: rendered.values, started });\n return rows;\n };\n}\n\ntype ResultShape = {\n readonly relations: RelationSelection | null;\n readonly resultFields: readonly string[] | null;\n readonly relationStrategy: RelationStrategy;\n /** Computed fields to attach before projection, or `null` (see QueryPlan.computed). */\n readonly computed: readonly string[] | null;\n};\n\n/** Attach relations (per the shape's strategy), then narrow to the caller's selection. */\nasync function finalizeRows(params: {\n engine: Engine;\n model: ModelMeta;\n shape: ResultShape;\n rows: ClientRow[];\n}): Promise<ClientRow[]> {\n const { engine, model, shape, rows } = params;\n if (shape.relations !== null && rows.length > 0) {\n const execute = relationExecutor({ engine });\n if (shape.relationStrategy === \"join\") {\n await attachLateralRelations({\n dialect: engine.dialect,\n meta: engine.meta,\n model,\n rows,\n selection: shape.relations,\n execute,\n wire: engine.adapter.wire,\n });\n } else {\n await attachRelations({\n dialect: engine.dialect,\n meta: engine.meta,\n model,\n rows,\n selection: shape.relations,\n execute,\n wire: engine.adapter.wire,\n });\n }\n }\n // Computed fields attach BEFORE projection: their `needs` are still on the\n // row here, and are narrowed away next unless selected themselves.\n if (shape.computed !== null && rows.length > 0) {\n applyComputedFields({ model, rows, names: shape.computed });\n }\n if (shape.resultFields === null) return rows;\n return rows.map((row) => project({ row, fields: shape.resultFields }));\n}\n\nasync function finalizeRow(params: {\n engine: Engine;\n model: ModelMeta;\n shape: ResultShape;\n row: ClientRow;\n}): Promise<ClientRow> {\n const { engine, model, shape, row } = params;\n const rows = await finalizeRows({ engine, model, shape, rows: [row] });\n return rows[0] as ClientRow;\n}\n\n// ─── Nested-write plumbing ────────────────────────────────────────\n\nfunction makeRunner(params: { engine: Engine }): StatementRunner {\n const { engine } = params;\n return {\n single: async ({ model, method, args }) =>\n requireRow({\n row: await runSingleMutation({\n engine,\n source: plan({ engine, model, method, args }),\n readBeforeWrite: method === \"delete\",\n }),\n model,\n method,\n }),\n rows: async ({ model, method, args }) => await runRows({ engine, plan: plan({ engine, model, method, args }) }),\n affected: async ({ model, method, args }) =>\n await runAffected({ engine, plan: plan({ engine, model, method, args }) }),\n statement: async ({ statement, model, method }) => {\n const rendered = renderStatementCached({\n dialect: engine.dialect,\n statement: statement as SqlStatement,\n cache: engine.renderCache,\n });\n const started = performance.now();\n const rows = await engine.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: engine.adapter, values: rendered.values }),\n });\n report({ engine, model, method, text: rendered.text, values: rendered.values, started });\n return rows;\n },\n };\n}\n\nfunction makeWriteContext(params: { engine: Engine }): WriteContext {\n const { engine } = params;\n return {\n meta: engine.meta,\n dialect: engine.dialect,\n run: makeRunner({ engine }),\n transactional: <T>(fn: (run: StatementRunner) => Promise<T>): Promise<T> =>\n engine.adapter.transaction((txAdapter) => fn(makeRunner({ engine: { ...engine, adapter: txAdapter, inTransaction: true } }))),\n };\n}\n\n// ─── Delegates ────────────────────────────────────────────────────\n\n/**\n * A view's delegate: reads pass through, every write verb is refused before a\n * statement is built. Views are read-only by construction, and leaving the\n * write verbs live is not dialect-honest — a simple projection view is\n * auto-updatable on postgres (the INSERT silently lands in the base table)\n * while sqlite/mysql raise a raw driver error. Applied once per delegate at\n * construction, so the hot path is untouched.\n */\nfunction readOnlyDelegate(params: { delegate: ModelDelegate; model: string }): ModelDelegate {\n const { delegate, model } = params;\n const refuse =\n (method: string) =>\n async (): Promise<never> => {\n throw viewIsReadOnly({ model, method });\n };\n return {\n ...delegate,\n create: refuse(\"create\"),\n createMany: refuse(\"createMany\"),\n createManyAndReturn: refuse(\"createManyAndReturn\"),\n update: refuse(\"update\"),\n updateMany: refuse(\"updateMany\"),\n upsert: refuse(\"upsert\"),\n delete: refuse(\"delete\"),\n deleteMany: refuse(\"deleteMany\"),\n };\n}\n\n/**\n * #7 (v1/Prisma parity): an update `data` object whose every key is undefined\n * is an effectively-empty write — the batch short-circuits to `{ count: 0 }`\n * BEFORE `@updatedAt` injection, so a no-op updateMany never bumps timestamps.\n */\nfunction isEffectivelyEmptyData(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) return false;\n if (Array.isArray(value) || value instanceof Date || value instanceof Uint8Array) return false;\n return Object.values(value).every((entry) => entry === undefined);\n}\n\nfunction createDelegate(params: { engine: Engine; model: string }): ModelDelegate {\n const { engine, model } = params;\n\n const shapeOf = (built: QueryPlan): ResultShape => ({\n relations: built.relations,\n resultFields: built.resultFields,\n relationStrategy: built.relationStrategy,\n computed: built.computed,\n });\n\n // ─── Implementations ───\n // Each takes the engine it runs against as a parameter: the delegate wraps\n // them in LAZY query promises bound to this client's engine, and the array\n // form of $transaction re-runs the same closure against the transaction's\n // engine instead (see QueryPromise).\n\n const findMany = async (target: Engine, args?: ClientRow): Promise<ClientRow[]> => {\n const built = plan({ engine: target, model, method: \"findMany\", args });\n const rows = shapeRows({ plan: built, rows: await runRows({ engine: target, plan: built }) });\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const findFirst = async (target: Engine, args?: ClientRow): Promise<ClientRow | null> => {\n const built = plan({ engine: target, model, method: \"findFirst\", args });\n const rows = shapeRows({ plan: built, rows: await runRows({ engine: target, plan: built }) });\n const row = rows[0];\n if (row === undefined) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const findUnique = async (target: Engine, args: ClientRow): Promise<ClientRow | null> => {\n const built = plan({ engine: target, model, method: \"findUnique\", args });\n const rows = await runRows({ engine: target, plan: built });\n const row = rows[0];\n if (row === undefined) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const create = async (target: Engine, args: ClientRow): Promise<ClientRow | null> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n // `onConflict` → insert-or-skip: zero written rows returns null (the\n // truthful \"another writer won\" verdict), never not-found.\n const skipping = args.onConflict !== undefined;\n if (hasNestedWrites({ model: modelMeta, data: args.data })) {\n if (skipping) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `onConflict cannot combine with nested writes on ${modelMeta.name}.create() — insert the parent row alone, then connect relations`,\n meta: { model: modelMeta.name },\n });\n }\n const shape = resolveResultShape({ meta: target.meta, model: modelMeta, method: \"create\", args });\n const row = await createWithNested({\n ctx: makeWriteContext({ engine: target }),\n model: modelMeta,\n data: args.data as Record<string, unknown>,\n });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"create\", args });\n const row = await runSingleMutation({\n engine: target,\n source: built,\n readBeforeWrite: false,\n ...(skipping ? { allowZeroRows: true } : {}),\n });\n if (row === null) return null;\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const update = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n if (hasNestedWrites({ model: modelMeta, data: args.data })) {\n const shape = resolveResultShape({ meta: target.meta, model: modelMeta, method: \"update\", args });\n const row = await updateWithNested({\n ctx: makeWriteContext({ engine: target }),\n model: modelMeta,\n where: args.where as Record<string, unknown>,\n data: args.data as Record<string, unknown>,\n });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"update\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: false }),\n model: built.model.name,\n method: \"update\",\n });\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const createMany = async (target: Engine, args: ClientRow): Promise<BatchResult> => {\n // #7 (v1/Prisma parity): an empty batch is a normal outcome of\n // `data: rows.filter(…)` — `{ count: 0 }`, NO statement.\n if (Array.isArray(args.data) && args.data.length === 0) return { count: 0 };\n const built = plan({ engine: target, model, method: \"createMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n const createManyAndReturn = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n // #7: empty batch → no rows, no statement.\n if (Array.isArray(args.data) && args.data.length === 0) return [];\n const built = plan({ engine: target, model, method: \"createManyAndReturn\", args });\n // M4/M7: multi-statement batches run atomically; returned rows come in\n // statement order (heterogeneous rows regroup — no input-order promise,\n // matching Prisma's own non-guarantee here).\n const rows =\n built.batch !== undefined && built.batch.length > 1\n ? await target.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...target, adapter: txAdapter };\n const collected: ClientRow[] = [];\n for (const statement of built.batch as readonly SqlStatement[]) {\n collected.push(\n ...(await runRows({ engine: txEngine, plan: { ...built, statement, batch: undefined } })),\n );\n }\n return collected;\n })\n : await runRows({ engine: target, plan: built });\n // #8: the one multi-row returning write loads relations like its siblings\n // (finalizeRows narrows to the caller's selection afterwards, exactly as\n // the bare projection did before).\n return await finalizeRows({ engine: target, model: built.model, shape: shapeOf(built), rows });\n };\n\n const updateMany = async (target: Engine, args: ClientRow): Promise<BatchResult> => {\n // #7 (v1 parity, old/v1 client.ts:957): short-circuit BEFORE @updatedAt\n // injection — auto-managed fields must not turn a no-op into a real UPDATE.\n if (isEffectivelyEmptyData(args.data)) return { count: 0 };\n const built = plan({ engine: target, model, method: \"updateMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n const upsert = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const modelMeta = getModelMeta({ meta: target.meta, model });\n if (\n hasNestedWrites({ model: modelMeta, data: args.create }) ||\n hasNestedWrites({ model: modelMeta, data: args.update })\n ) {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `nested writes are not supported inside upsert arms on ${modelMeta.name} — use create()/update() with nested data`,\n meta: { model: modelMeta.name },\n });\n }\n if (!upsertUsesNativeStatement({ model: modelMeta, args: args as Record<string, unknown> })) {\n if (args.onConflict !== undefined) {\n // An explicit conflict target only exists in the native single\n // statement; the find-then-write fallback has no ON CONFLICT clause\n // to attach it to — refuse instead of silently ignoring it.\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `onConflict on ${modelMeta.name}.upsert() needs the native single-statement path — this shape (a guard field beyond the conflict target, or create data not binding the where's key) runs the find-then-write fallback, which cannot honor an explicit conflict target`,\n meta: { model: modelMeta.name },\n });\n }\n // B1: the create row does not bind the conflict target with the\n // where's values — the native statement's conflict clause could never\n // fire on the addressed row. Run the find-then-write flow instead.\n const shape = resolveResultShape({\n meta: target.meta,\n model: modelMeta,\n method: \"upsert\",\n args: args as Record<string, unknown>,\n });\n const row = await runUpsertFallback({ engine: target, model: modelMeta, args });\n return await finalizeRow({\n engine: target,\n model: modelMeta,\n shape: { ...shape, relationStrategy: \"query\" },\n row,\n });\n }\n const built = plan({ engine: target, model, method: \"upsert\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: false }),\n model: built.model.name,\n method: \"upsert\",\n });\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const deleteOne = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const built = plan({ engine: target, model, method: \"delete\", args });\n const row = requireRow({\n row: await runSingleMutation({ engine: target, source: built, readBeforeWrite: true }),\n model: built.model.name,\n method: \"delete\",\n });\n // #25: relations load like update's — from the returned (or pre-read) row,\n // AFTER the delete: children a cascade removed come back empty.\n return await finalizeRow({ engine: target, model: built.model, shape: shapeOf(built), row });\n };\n\n const deleteMany = async (target: Engine, args?: ClientRow): Promise<BatchResult> => {\n const built = plan({ engine: target, model, method: \"deleteMany\", args });\n return { count: await runAffected({ engine: target, plan: built }) };\n };\n\n const count = async (target: Engine, args?: ClientRow): Promise<number | Record<string, number>> => {\n const built = plan({ engine: target, model, method: \"count\", args });\n const rendered = renderStatementCached({\n dialect: target.dialect,\n statement: built.statement,\n cache: target.renderCache,\n });\n const started = performance.now();\n const rows = await target.adapter.execute({\n text: rendered.text,\n values: bindValues({ adapter: target.adapter, values: rendered.values }),\n });\n report({\n engine: target,\n model,\n method: \"count\",\n text: rendered.text,\n values: rendered.values,\n started,\n });\n // count-with-select: aliases ARE the result keys ({ _all, field, … }).\n if (built.aggregateSpec !== null) {\n const row = rows[0] ?? {};\n const out: Record<string, number> = {};\n for (const selection of built.aggregateSpec.selections) {\n out[selection.alias] = Number(row[selection.alias] ?? 0);\n }\n return out;\n }\n // postgres returns COUNT(*) as a bigint string; Number() normalizes it.\n const raw = rows[0]?.[built.countAlias ?? COUNT_ALIAS];\n return raw === undefined || raw === null ? 0 : Number(raw);\n };\n\n const aggregate = async (target: Engine, args: ClientRow): Promise<ClientRow> => {\n const built = plan({ engine: target, model, method: \"aggregate\", args });\n const rows = await runRows({ engine: target, plan: built });\n // A non-grouped aggregate always yields exactly one row — even over an\n // empty table (COUNT → 0, the others → SQL NULL → null).\n return assembleAggregates({\n engine: target,\n model: built.model,\n spec: built.aggregateSpec as AggregateSpec,\n row: rows[0] ?? {},\n into: {},\n });\n };\n\n const groupBy = async (target: Engine, args: ClientRow): Promise<ClientRow[]> => {\n const built = plan({ engine: target, model, method: \"groupBy\", args });\n const rows = await runRows({ engine: target, plan: built });\n const by = built.groupByFields as readonly string[];\n const spec = built.aggregateSpec as AggregateSpec;\n return rows.map((row) => {\n const out: ClientRow = {};\n for (const name of by) out[name] = row[name];\n return assembleAggregates({ engine: target, model: built.model, spec, row, into: out });\n });\n };\n\n // ─── Lazy wrappers ───\n\n const lazy = <T>(run: (target: Engine) => Promise<T>): Promise<T> => QueryPromise.create<T>({ engine, run });\n\n const delegate: ModelDelegate = {\n findMany: (args?: ClientRow): Promise<ClientRow[]> => lazy((target) => findMany(target, args)),\n findFirst: (args?: ClientRow): Promise<ClientRow | null> => lazy((target) => findFirst(target, args)),\n findUnique: (args: ClientRow): Promise<ClientRow | null> => lazy((target) => findUnique(target, args)),\n\n findFirstOrThrow: (args?: ClientRow): Promise<ClientRow> =>\n lazy(async (target) => {\n const row = await findFirst(target, args);\n if (row === null) throw notFound({ model, method: \"findFirstOrThrow\" });\n return row;\n }),\n\n findUniqueOrThrow: (args: ClientRow): Promise<ClientRow> =>\n lazy(async (target) => {\n const row = await findUnique(target, args);\n if (row === null) throw notFound({ model, method: \"findUniqueOrThrow\" });\n return row;\n }),\n\n create: (args: ClientRow): Promise<ClientRow | null> => lazy((target) => create(target, args)),\n createMany: (args: ClientRow): Promise<BatchResult> => lazy((target) => createMany(target, args)),\n createManyAndReturn: (args: ClientRow): Promise<ClientRow[]> =>\n lazy((target) => createManyAndReturn(target, args)),\n update: (args: ClientRow): Promise<ClientRow> => lazy((target) => update(target, args)),\n updateMany: (args: ClientRow): Promise<BatchResult> => lazy((target) => updateMany(target, args)),\n upsert: (args: ClientRow): Promise<ClientRow> => lazy((target) => upsert(target, args)),\n delete: (args: ClientRow): Promise<ClientRow> => lazy((target) => deleteOne(target, args)),\n deleteMany: (args?: ClientRow): Promise<BatchResult> => lazy((target) => deleteMany(target, args)),\n count: (args?: ClientRow): Promise<number | Record<string, number>> => lazy((target) => count(target, args)),\n aggregate: (args: ClientRow): Promise<ClientRow> => lazy((target) => aggregate(target, args)),\n groupBy: (args: ClientRow): Promise<ClientRow[]> => lazy((target) => groupBy(target, args)),\n };\n\n const meta = getModelMeta({ meta: engine.meta, model });\n return meta.isView ? readOnlyDelegate({ delegate, model: meta.name }) : delegate;\n}\n\n// ─── Write validation wrapper ────────────────────────────────────\n\nconst WRITE_METHODS = [\"create\", \"createMany\", \"createManyAndReturn\", \"update\", \"updateMany\", \"upsert\"] as const;\n\n/** Wrap a delegate's write methods through the Standard-Schema validators. */\nfunction withWriteValidation(params: {\n engine: Engine;\n delegate: ModelDelegate;\n model: string;\n validators: WriteValidators;\n}): ModelDelegate {\n const { engine, delegate, model, validators } = params;\n const meta = getModelMeta({ meta: engine.meta, model });\n const wrapped: Record<string, unknown> = { ...delegate };\n for (const method of WRITE_METHODS) {\n const original = delegate[method] as (args: ClientRow) => Promise<unknown>;\n wrapped[method] = (args: ClientRow): Promise<unknown> =>\n original(applyWriteValidators({ meta: engine.meta, model: meta, method, args, validators }) as ClientRow);\n }\n return wrapped as ModelDelegate;\n}\n\n// ─── Raw SQL ──────────────────────────────────────────────────────\n\n/**\n * Interleave a tagged template's literals with placeholders. Interpolated\n * values are ALWAYS bound as parameters — a template can never inject text.\n */\nfunction buildRawStatement(params: {\n dialect: SqlDialect;\n strings: TemplateStringsArray;\n values: readonly unknown[];\n}): { text: string; values: unknown[] } {\n const { dialect, strings, values } = params;\n const collector = new ParamCollector(dialect);\n let text = strings[0] ?? \"\";\n for (let index = 0; index < values.length; index++) {\n text += collector.add(values[index]) + (strings[index + 1] ?? \"\");\n }\n return { text, values: collector.values };\n}\n\n// ─── Factory ──────────────────────────────────────────────────────\n\nfunction buildClient(params: { engine: Engine }): DynamicClient {\n const { engine } = params;\n\n const models: Record<string, ModelDelegate> = {};\n for (const model of engine.meta.models) {\n let delegate = createDelegate({ engine, model: model.name });\n const validators = engine.options?.validate;\n if (validators?.[model.name] !== undefined) {\n delegate = withWriteValidation({ engine, delegate, model: model.name, validators });\n }\n models[model.name] = delegate;\n models[model.clientName] = delegate;\n }\n\n const runRaw = async (\n method: string,\n statement: { text: string; values: unknown[] },\n ): Promise<{ rows: ClientRow[]; affectedRows: number }> => {\n const started = performance.now();\n const result = await engine.adapter.executeUnsafe(statement);\n report({\n engine,\n model: null,\n method,\n text: statement.text,\n values: statement.values,\n started,\n });\n return result;\n };\n\n /**\n * The array form: claim every operation SYNCHRONOUSLY (before their\n * auto-dispatch microtask fires), then run them sequentially against ONE\n * transaction engine — statement order is array order, a throw rolls the\n * whole batch back and settles the not-yet-run operations with the same\n * failure, results return positionally. Only un-dispatched QueryPromises\n * may join: anything else is already in flight on the non-transactional\n * adapter and wrapping it would fake atomicity.\n */\n const runOperations = (operations: readonly unknown[], options?: TransactionOptions): Promise<unknown[]> => {\n const claimed: ClaimedOperation[] = [];\n let claimError: unknown = null;\n for (const operation of operations) {\n if (!(operation instanceof QueryPromise)) {\n claimError = new VibeError({\n code: \"VIBE_VALIDATION\",\n message:\n \"$transaction([...]) takes query promises from model delegate calls — a foreign promise is already running and cannot join the transaction\",\n });\n break;\n }\n try {\n claimed.push((operation as QueryPromise<unknown>).claim());\n } catch (error) {\n claimError = error;\n break;\n }\n }\n if (claimError !== null) {\n for (const entry of claimed) entry.abort(claimError);\n return Promise.reject(claimError);\n }\n return engine.adapter.transaction(async (txAdapter) => {\n const txEngine: Engine = { ...engine, adapter: txAdapter, inTransaction: true };\n const results: unknown[] = [];\n let index = 0;\n try {\n for (; index < claimed.length; index++) {\n results.push(await (claimed[index] as ClaimedOperation).start(txEngine));\n }\n } catch (error) {\n for (let rest = index + 1; rest < claimed.length; rest++) {\n (claimed[rest] as ClaimedOperation).abort(error);\n }\n throw error;\n }\n return results;\n }, options);\n };\n\n const client: DynamicClient = {\n $models: models,\n\n $on: (event: \"query\", listener: (event: QueryEvent) => void): (() => void) => {\n if (event !== \"query\") {\n throw new VibeError({\n code: \"VIBE_VALIDATION\",\n message: `unknown client event \"${String(event)}\" — supported: \"query\"`,\n meta: { event },\n });\n }\n engine.listeners.add(listener);\n return () => {\n engine.listeners.delete(listener);\n };\n },\n\n $transaction: (<T>(\n fnOrOperations: ((tx: DynamicClient) => Promise<T>) | readonly unknown[],\n options?: TransactionOptions,\n ): Promise<T | unknown[]> =>\n Array.isArray(fnOrOperations)\n ? runOperations(fnOrOperations, options)\n : engine.adapter.transaction(\n (txAdapter) =>\n (fnOrOperations as (tx: DynamicClient) => Promise<T>)(\n buildClient({ engine: { ...engine, adapter: txAdapter, inTransaction: true } }),\n ),\n options,\n )) as DynamicClient[\"$transaction\"],\n\n // Raw results are NOT decoded: without a model there is no field→column\n // mapping and no codec to apply. Values arrive as the driver produced them.\n $queryRaw: async (strings: TemplateStringsArray, ...values: unknown[]): Promise<ClientRow[]> =>\n (await runRaw(\"$queryRaw\", buildRawStatement({ dialect: engine.dialect, strings, values }))).rows,\n\n $executeRaw: async (strings: TemplateStringsArray, ...values: unknown[]): Promise<number> =>\n (await runRaw(\"$executeRaw\", buildRawStatement({ dialect: engine.dialect, strings, values }))).affectedRows,\n\n $queryRawUnsafe: async (text: string, ...values: unknown[]): Promise<ClientRow[]> =>\n (await runRaw(\"$queryRawUnsafe\", { text, values })).rows,\n\n $executeRawUnsafe: async (text: string, ...values: unknown[]): Promise<number> =>\n (await runRaw(\"$executeRawUnsafe\", { text, values })).affectedRows,\n\n $connect: async (): Promise<void> => {\n await engine.adapter.connect();\n for (const hook of engine.connectHooks ?? []) {\n await hook({\n execute: (execParams) =>\n engine.adapter.execute({ text: execParams.text, values: [...(execParams.values ?? [])] }),\n });\n }\n },\n $disconnect: (): Promise<void> => engine.adapter.disconnect(),\n };\n\n // Ergonomic access (`client.user.findMany()`). The generated client declares\n // these properties with precise types; here they are attached at runtime only.\n for (const model of engine.meta.models) {\n Object.defineProperty(client, model.clientName, {\n value: models[model.clientName],\n enumerable: true,\n });\n }\n\n attachExtensionMounts({ engine, client, models });\n attachDefineView({ client, meta: engine.meta, models });\n // Tenant scoping ($scoped) reads client.$models lazily at CALL time, so it\n // sees the final delegates too; on @@policy schemas it refuses outright,\n // which keeps the two scoping layers from ever composing silently.\n attachScoped({ client, meta: engine.meta });\n // Policy scoping LAST: it must see the final delegates (extension mounts\n // included) so scoped extension surfaces inherit the rewrite; fail-closed\n // guards then land on the finished base client. No-op without @@policy.\n attachPolicy({ client, meta: engine.meta });\n\n return client;\n}\n\n// ─── Extension mounts (D9 — baked surfaces) ────────────────────\n\nfunction makeMountContext(params: {\n engine: Engine;\n extension: string;\n model: ModelMeta | null;\n}): ExtensionMountContext {\n const { engine, extension, model } = params;\n return {\n extension,\n dialect: engine.dialect,\n provider: engine.adapter.provider,\n meta: engine.meta,\n model,\n executeRows: async ({ text, values, method }) => {\n const started = performance.now();\n const rows = await engine.adapter.execute({\n text,\n values: bindValues({ adapter: engine.adapter, values: [...values] }),\n });\n report({\n engine,\n model: model?.name ?? null,\n method: method ?? extension,\n text,\n values,\n started,\n });\n return model === null\n ? rows\n : materializeRows({ dialect: engine.dialect.name, model, rows, wire: engine.adapter.wire });\n },\n compileWhere: ({ where, model: modelName, qualify }) => {\n const target =\n modelName === undefined\n ? model\n : getModelMeta({ meta: engine.meta, model: modelName });\n if (target === null) {\n throw new VibeError({\n code: \"VIBE_INTERNAL\",\n message: `extension \"${extension}\" compiled a where with no model in scope`,\n meta: { extension },\n });\n }\n return compileWhere({\n dialect: engine.dialect,\n meta: engine.meta,\n model: target,\n where,\n ...(qualify === undefined ? {} : { qualify }),\n });\n },\n };\n}\n\n/**\n * Attach the baked extension surfaces. Runs on EVERY client build — the\n * `$transaction` path rebuilds the client over the tx adapter, so mounted\n * surfaces execute on the transaction connection like core delegates do.\n */\nfunction attachExtensionMounts(params: {\n engine: Engine;\n client: DynamicClient;\n models: Record<string, ModelDelegate>;\n}): void {\n const { engine, client, models } = params;\n const mounts = engine.extensionMounts;\n if (mounts === undefined) return;\n\n for (const mount of mounts) {\n if (mount.scope === \"model\") {\n const model = getModelMeta({ meta: engine.meta, model: mount.model ?? \"\" });\n const delegate = models[model.name];\n if (delegate === undefined || mount.property in delegate) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: `extension \"${mount.extension}\" cannot mount \"${mount.property}\" on ${model.name} — the name is taken`,\n meta: { extension: mount.extension, model: model.name, property: mount.property },\n });\n }\n const value = mount.create(makeMountContext({ engine, extension: mount.extension, model }));\n Object.defineProperty(delegate, mount.property, { value, enumerable: true });\n continue;\n }\n\n if (!mount.property.startsWith(\"$\") || mount.property in client) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message: `extension \"${mount.extension}\" cannot mount client property \"${mount.property}\" — root mounts are $-prefixed and must not collide`,\n meta: { extension: mount.extension, property: mount.property },\n });\n }\n const value = mount.create(makeMountContext({ engine, extension: mount.extension, model: null }));\n Object.defineProperty(client, mount.property, { value, enumerable: true });\n }\n}\n\n/**\n * Build a client for a schema over an adapter.\n *\n * The adapter chooses the dialect: the same IR runs on postgres, sqlite or\n * mysql, and every dialect difference is resolved by `@vibeorm/sql` and the\n * codec table rather than by branching here.\n *\n * @example\n * const db = createClient({ schema, adapter });\n * const users = await db.$models.user.findMany({ where: { active: true } });\n */\nexport function createClient(params: {\n schema: SchemaIR;\n adapter: DatabaseAdapter;\n options?: ClientOptions;\n /** Extension wiring — baked mounts + manifest from the generated client, live instances from the caller. */\n extensions?: ClientExtensionsOptions;\n /** Computed-field wiring — baked manifest from the generated client, live specs from the caller. */\n computed?: ClientComputedOptions;\n}): DynamicClient {\n const { schema, adapter, options, extensions, computed } = params;\n const dialectName: Dialect = adapter.dialect;\n\n // Staleness gate (extensions.md §3.2): a baked manifest must match the live\n // extension list BEFORE any query runs.\n if (extensions?.manifest !== undefined) {\n assertExtensionManifest({ manifest: extensions.manifest, instances: extensions.instances });\n }\n // Same gate for computed fields: the generated .d.ts promised these types.\n if (computed?.manifest !== undefined) {\n assertComputedManifest({ manifest: computed.manifest, specs: computed.specs });\n }\n // A client generated WITHOUT computed fields spreads a stray `computed`\n // option into ClientOptions — refuse it instead of silently ignoring it.\n if (\n computed === undefined &&\n options !== undefined &&\n (options as Record<string, unknown>)[\"computed\"] !== undefined\n ) {\n throw new VibeError({\n code: \"VIBE_CONFIG\",\n message:\n \"this client was generated without computed fields — declare them in vibeorm.config.ts and re-run vibeorm generate\",\n meta: {},\n });\n }\n\n const instances = extensions?.instances ?? [];\n const operatorMap =\n instances.length === 0\n ? null\n : buildExtensionOperatorMap({ instances, dialect: dialectName, provider: adapter.provider });\n const connectHooks =\n instances.length === 0\n ? []\n : buildConnectHooks({ instances, dialect: dialectName, provider: adapter.provider });\n\n const baseMeta = buildRuntimeMeta({\n schema,\n ...(computed?.specs === undefined ? {} : { computed: computed.specs }),\n });\n const meta: RuntimeMeta =\n operatorMap === null ? baseMeta : { ...baseMeta, extensionOperators: operatorMap };\n\n return buildClient({\n engine: {\n meta,\n adapter,\n dialect: getSqlDialect({ dialect: dialectName }),\n options: options ?? {},\n listeners: new Set(),\n renderCache: new StatementRenderCache(),\n ...(extensions?.mounts === undefined ? {} : { extensionMounts: extensions.mounts }),\n ...(connectHooks.length === 0 ? {} : { connectHooks }),\n },\n });\n}\n",
|
|
19
20
|
"/**\n * The compiled-query cache — §9's \"query-shape cache (structural hash → SQL\n * skeleton)\", constitution rule 8 (perf) under rule 3's constraint: the SQL\n * text is ALWAYS the renderer's, byte-identical — this module never builds SQL.\n *\n * How it works: a statement AST is walked ONCE, producing (a) a structural key\n * covering everything that affects the rendered text — kinds, identifiers,\n * operators, flags, literal LIMIT/OFFSET, arity where a dialect expands\n * placeholders per element — and (b) the parameter values in exactly the\n * renderer's collection order. A key hit reuses the cached text with the fresh\n * values; a miss renders for real and caches the text.\n *\n * SAFETY: the walk mirrors @vibeorm/sql's render traversal. Two guards keep a\n * divergence from ever mis-binding parameters:\n * 1. every MISS cross-checks the walked values against the renderer's\n * collected values (element-wise); a mismatch poisons the key so that\n * shape renders uncached forever, and\n * 2. constructs with dialect-conditional value branching that is not worth\n * mirroring (jsonFilter) are declared uncacheable outright.\n * The cache is invalidation-free by construction: the key IS the shape, and\n * equal shapes render equal text (shape-purity). Statement ASTs are treated as\n * immutable by the whole runtime, so cached texts can never go stale.\n */\n\nimport { isDbNowMarker, isListSetOperation, isSetOperation, isSqlDefaultCell, renderStatement, strictMatchPattern } from \"@vibeorm/sql\";\nimport type {\n AggRef,\n ColRef,\n DeleteStatement,\n InsertStatement,\n OrderTerm,\n RenderedQuery,\n SelectStatement,\n SqlDialect,\n SqlExpr,\n SqlStatement,\n TableRef,\n UpdateStatement,\n} from \"@vibeorm/sql\";\n\n// ─── Cache ────────────────────────────────────────────────────────\n\ntype CachedText = {\n readonly text: string;\n readonly returning: \"native\" | \"omitted\" | \"none\";\n};\n\n/** `null` = poisoned: this shape verified unsafe once — never cache it. */\ntype CacheSlot = CachedText | null;\n\nconst MAX_ENTRIES = 512;\n\n/** One per client (dialect-stable); shared across its transaction clients. */\nexport class StatementRenderCache {\n private readonly entries: Map<string, CacheSlot> = new Map();\n\n get(key: string): CacheSlot | undefined {\n return this.entries.get(key);\n }\n\n set(key: string, slot: CacheSlot): void {\n // Crude cap: shape-pure workloads have a few dozen shapes; a runaway\n // (adversarial keys) just degrades to render-per-call after a clear.\n if (this.entries.size >= MAX_ENTRIES && !this.entries.has(key)) this.entries.clear();\n this.entries.set(key, slot);\n }\n}\n\n// ─── Shape walk (key + values, in render order) ───────────────────\n\ntype Walk = {\n key: string;\n readonly values: unknown[];\n};\n\n/** Length-prefixed so adjacent names can never collide across boundaries. */\nfunction addIdent(walk: Walk, name: string): void {\n walk.key += `§${name.length}~${name}`;\n}\n\nfunction addCol(walk: Walk, column: ColRef): void {\n if (column.table !== undefined) addIdent(walk, column.table);\n walk.key += \".\";\n addIdent(walk, column.name);\n // B3/B4 wire transforms change the rendered text — part of the shape.\n if (column.transform !== undefined) walk.key += column.transform === \"castText\" ? \"^t\" : \"^b\";\n if (column.castReal === true) walk.key += \"^r\";\n // Projection alias (`… AS \"__vibe_parent\"`) is rendered text — shape.\n if (column.alias !== undefined) {\n walk.key += \"^a\";\n addIdent(walk, column.alias);\n }\n}\n\nfunction addTable(walk: Walk, table: TableRef): void {\n addIdent(walk, table.name);\n if (table.alias !== undefined) {\n walk.key += \"@\";\n addIdent(walk, table.alias);\n }\n}\n\nfunction addAgg(walk: Walk, agg: AggRef): void {\n walk.key += agg.fn;\n if (agg.fn !== \"countAll\") addCol(walk, agg.column);\n}\n\n/** SET/DO UPDATE SET entry — mirrors renderAssignments' value forms. */\nfunction addSetEntry(walk: Walk, name: string, value: unknown): void {\n if (isSetOperation(value)) {\n walk.key += `=o${value.__op}`;\n addIdent(walk, name);\n walk.values.push(value.value);\n return;\n }\n if (isDbNowMarker(value)) {\n // Text differs between zero and non-zero offsets; only the non-zero form\n // binds the offset as a parameter.\n walk.key += value.offsetSeconds === 0 ? \"=N0\" : \"=N1\";\n addIdent(walk, name);\n if (value.offsetSeconds !== 0) walk.values.push(value.offsetSeconds);\n return;\n }\n if (isListSetOperation(value)) {\n walk.key += `=l${value.__listOp}`;\n addIdent(walk, name);\n walk.values.push(value.value);\n return;\n }\n walk.key += \"=v\";\n addIdent(walk, name);\n walk.values.push(value);\n}\n\nfunction addReturning(walk: Walk, returning: readonly string[] | undefined): void {\n if (returning === undefined || returning.length === 0) {\n walk.key += \"r0\";\n return;\n }\n walk.key += \"r(\";\n for (const name of returning) addIdent(walk, name);\n walk.key += \")\";\n}\n\n/** Mirrors renderExpr; returns false when the expression is uncacheable. */\nfunction walkExpr(walk: Walk, dialect: SqlDialect, expr: SqlExpr): boolean {\n switch (expr.kind) {\n case \"cmp\":\n if (isDbNowMarker(expr.value)) {\n walk.key += `cN${expr.op}${expr.value.offsetSeconds === 0 ? \"0\" : \"1\"}`;\n addCol(walk, expr.column);\n if (expr.value.offsetSeconds !== 0) walk.values.push(expr.value.offsetSeconds);\n return true;\n }\n walk.key += `c${expr.op}`;\n addCol(walk, expr.column);\n walk.values.push(expr.value);\n return true;\n\n case \"cmpCol\":\n walk.key += `k${expr.op}`;\n addCol(walk, expr.left);\n addCol(walk, expr.right);\n return true;\n\n case \"isNull\":\n walk.key += expr.negate === true ? \"n1\" : \"n0\";\n addCol(walk, expr.column);\n return true;\n\n case \"inArray\": {\n if (expr.values.length === 0) {\n walk.key += expr.negate === true ? \"z1\" : \"z0\";\n return true;\n }\n walk.key += expr.negate === true ? \"i1\" : \"i0\";\n addCol(walk, expr.column);\n if (dialect.inArrayStrategy === \"any\") {\n // One array parameter — the renderer copies, so the walk copies too.\n walk.values.push([...expr.values]);\n } else {\n // Expanded placeholders: arity is part of the text.\n walk.key += `#${expr.values.length}`;\n for (const value of expr.values) walk.values.push(value);\n }\n return true;\n }\n\n case \"like\":\n walk.key += `L${expr.insensitive === true ? \"i\" : \"s\"}${expr.negate === true ? \"n\" : \"p\"}`;\n addCol(walk, expr.column);\n walk.values.push(expr.pattern);\n return true;\n\n case \"strictMatch\":\n // #20 — mirrors the renderer's strictMatch case: the text depends on op\n // + strategy (both in the key via op; strategy is fixed per dialect,\n // and the cache is per dialect instance), and the BOUND value is the\n // DERIVED pattern for pattern ops — the shared strictMatchPattern\n // helper keeps this mirror and the renderer from drifting.\n walk.key += `S${expr.op}${expr.negate === true ? \"n\" : \"p\"}`;\n addCol(walk, expr.column);\n walk.values.push(\n expr.op === \"equals\"\n ? expr.value\n : strictMatchPattern({ strategy: dialect.strictMatchStrategy, op: expr.op, value: expr.value }),\n );\n return true;\n\n case \"and\":\n case \"or\": {\n walk.key += `${expr.kind === \"and\" ? \"A\" : \"O\"}${expr.operands.length}(`;\n for (const operand of expr.operands) {\n if (!walkExpr(walk, dialect, operand)) return false;\n }\n walk.key += \")\";\n return true;\n }\n\n case \"not\":\n walk.key += \"!(\";\n if (!walkExpr(walk, dialect, expr.operand)) return false;\n walk.key += \")\";\n return true;\n\n case \"exists\":\n walk.key += expr.negate === true ? \"E1(\" : \"E0(\";\n if (!walkSelect(walk, dialect, expr.select)) return false;\n walk.key += \")\";\n return true;\n\n case \"aggCmp\":\n walk.key += `g${expr.op}`;\n addAgg(walk, expr.agg);\n walk.values.push(expr.value);\n return true;\n\n case \"arrayHas\":\n walk.key += expr.negate === true ? \"h1\" : \"h0\";\n addCol(walk, expr.column);\n walk.values.push(expr.value);\n return true;\n\n case \"arrayContainsAll\":\n walk.key += \"H\";\n addCol(walk, expr.column);\n walk.values.push([...expr.values]);\n return true;\n\n case \"arrayOverlaps\":\n walk.key += \"V\";\n addCol(walk, expr.column);\n walk.values.push([...expr.values]);\n return true;\n\n case \"arrayIsEmpty\":\n walk.key += expr.empty ? \"e1\" : \"e0\";\n addCol(walk, expr.column);\n return true;\n\n case \"jsonFilter\":\n // Value collection branches on dialect json mode AND operand type —\n // deliberately uncacheable rather than mirrored (see module docs).\n return false;\n\n case \"fragment\":\n // Extension-defined part streams (extensions.md §3) — uncacheable, the\n // fragment owns its own text/param interleaving.\n return false;\n\n case \"raw\":\n // Text-only fragment: the text IS the shape.\n walk.key += \"R(\";\n addIdent(walk, expr.text);\n walk.key += \")\";\n return true;\n }\n}\n\n/** One ORDER BY term — column, aggregate, or correlated subquery (relation orderBy). */\nfunction walkOrderTerm(walk: Walk, dialect: SqlDialect, term: OrderTerm): boolean {\n if (\"agg\" in term) {\n walk.key += \"a\";\n addAgg(walk, term.agg);\n } else if (\"select\" in term) {\n // Correlated subquery term: its parameters land in the shared sequence in\n // render order — walk the whole subselect.\n walk.key += \"q(\";\n if (!walkSelect(walk, dialect, term.select)) return false;\n walk.key += \")\";\n } else {\n addCol(walk, term.column);\n walk.key += term.nulls === undefined ? \"-\" : term.nulls === \"first\" ? \"^\" : \"$\";\n }\n walk.key += term.direction === \"asc\" ? \"+\" : \"~\";\n return true;\n}\n\n/**\n * Mirrors renderSelect. Value order there: rowNumber OVER-order subqueries\n * (projection renders first) → fromSelect → lateralJoins → where → having →\n * orderBy subqueries (everything else is parameter-free; LIMIT/OFFSET are\n * literals and therefore live in the KEY).\n */\nfunction walkSelect(walk: Walk, dialect: SqlDialect, statement: SelectStatement): boolean {\n walk.key += \"S{\";\n if (statement.distinctOn !== undefined && statement.distinctOn.length > 0) {\n walk.key += \"d(\";\n for (const column of statement.distinctOn) addCol(walk, column);\n walk.key += \")\";\n }\n walk.key += \"p(\";\n for (const column of statement.columns) addCol(walk, column);\n walk.key += \")\";\n if (statement.selectExpr !== undefined) {\n if (statement.selectExpr.kind === \"one\") {\n walk.key += \"x1\";\n } else {\n walk.key += \"xc\";\n if (statement.selectExpr.alias !== undefined) addIdent(walk, statement.selectExpr.alias);\n }\n }\n if (statement.aggregates !== undefined) {\n for (const selection of statement.aggregates) {\n walk.key += \"a\";\n addAgg(walk, selection.agg);\n addIdent(walk, selection.alias);\n }\n }\n if (statement.rowNumber !== undefined) {\n walk.key += \"W(\";\n for (const column of statement.rowNumber.partitionBy) addCol(walk, column);\n walk.key += \":\";\n for (const term of statement.rowNumber.orderBy) {\n if (!walkOrderTerm(walk, dialect, term)) return false;\n }\n addIdent(walk, statement.rowNumber.alias);\n walk.key += \")\";\n }\n walk.key += \"f\";\n addTable(walk, statement.table);\n if (statement.fromSelect !== undefined) {\n walk.key += \"F(\";\n if (!walkSelect(walk, dialect, statement.fromSelect)) return false;\n walk.key += \")\";\n }\n if (statement.innerJoins !== undefined && statement.innerJoins.length > 0) {\n for (const join of statement.innerJoins) {\n walk.key += \"J(\";\n addTable(walk, join.table);\n for (const pair of join.on) {\n addCol(walk, pair.left);\n walk.key += \"=\";\n addCol(walk, pair.right);\n }\n walk.key += \")\";\n }\n }\n if (statement.lateralJoins !== undefined && statement.lateralJoins.length > 0) {\n for (const join of statement.lateralJoins) {\n walk.key += join.agg === \"jsonArray\" ? \"Ja(\" : \"Jo(\";\n if (!walkSelect(walk, dialect, join.select)) return false;\n addIdent(walk, join.columnAlias);\n addIdent(walk, join.alias);\n walk.key += \")\";\n }\n }\n if (statement.where !== undefined) {\n walk.key += \"w\";\n if (!walkExpr(walk, dialect, statement.where)) return false;\n }\n if (statement.groupBy !== undefined && statement.groupBy.length > 0) {\n walk.key += \"b(\";\n for (const column of statement.groupBy) addCol(walk, column);\n walk.key += \")\";\n }\n if (statement.having !== undefined) {\n walk.key += \"v\";\n if (!walkExpr(walk, dialect, statement.having)) return false;\n }\n if (statement.orderBy !== undefined && statement.orderBy.length > 0) {\n walk.key += \"o(\";\n for (const term of statement.orderBy) {\n if (!walkOrderTerm(walk, dialect, term)) return false;\n }\n walk.key += \")\";\n }\n if (statement.limit !== undefined) walk.key += `t${statement.limit}`;\n if (statement.offset !== undefined) walk.key += `s${statement.offset}`;\n if (statement.lockForUpdate === true) walk.key += \"u\";\n walk.key += \"}\";\n return true;\n}\n\n/** Mirrors renderInsert: values row-major, then ON CONFLICT update entries. */\nfunction walkInsert(walk: Walk, dialect: SqlDialect, statement: InsertStatement): boolean {\n walk.key += \"I{\";\n addTable(walk, statement.table);\n walk.key += \"c(\";\n for (const name of statement.columns) addIdent(walk, name);\n walk.key += `)r${statement.rows.length}`;\n const arity = statement.columns.length;\n for (let rowIndex = 0; rowIndex < statement.rows.length; rowIndex++) {\n const row = statement.rows[rowIndex] as readonly unknown[];\n // A malformed row must reach the renderer's own arity error — never a hit.\n if (row.length !== arity) return false;\n for (let cell = 0; cell < row.length; cell++) {\n const value = row[cell];\n // M4: a DEFAULT cell is TEXT, not a parameter — its POSITION is shape.\n if (isSqlDefaultCell(value)) walk.key += `D${rowIndex}:${cell};`;\n else if (isDbNowMarker(value)) {\n // Database-clock cell: expression text (zero offset) or one bound param.\n walk.key += `T${rowIndex}:${cell}:${value.offsetSeconds === 0 ? \"0\" : \"1\"};`;\n if (value.offsetSeconds !== 0) walk.values.push(value.offsetSeconds);\n } else walk.values.push(value);\n }\n }\n const onConflict = statement.onConflict;\n if (onConflict !== undefined) {\n if (\"doNothing\" in onConflict) {\n walk.key += \"N(\";\n if (onConflict.constraint !== undefined) {\n walk.key += \"K\";\n addIdent(walk, onConflict.constraint);\n }\n if (onConflict.columns !== undefined) {\n for (const name of onConflict.columns) addIdent(walk, name);\n }\n if (onConflict.conflictWhere !== undefined) {\n // Raw predicate text — part of the SHAPE, no parameters.\n walk.key += \"w\";\n addIdent(walk, onConflict.conflictWhere);\n }\n walk.key += \")\";\n } else {\n walk.key += \"U(\";\n if (onConflict.constraint !== undefined) {\n walk.key += \"K\";\n addIdent(walk, onConflict.constraint);\n }\n for (const name of onConflict.columns) addIdent(walk, name);\n walk.key += \":\";\n for (const [name, value] of Object.entries(onConflict.update)) addSetEntry(walk, name, value);\n if (onConflict.lastInsertIdColumn !== undefined) {\n walk.key += \"@\";\n addIdent(walk, onConflict.lastInsertIdColumn);\n }\n walk.key += \")\";\n }\n }\n addReturning(walk, statement.returning);\n walk.key += \"}\";\n return true;\n}\n\n/** Mirrors renderUpdate: SET entries, then WHERE. */\nfunction walkUpdate(walk: Walk, dialect: SqlDialect, statement: UpdateStatement): boolean {\n walk.key += \"U{\";\n addTable(walk, statement.table);\n for (const [name, value] of Object.entries(statement.set)) addSetEntry(walk, name, value);\n if (statement.where !== undefined) {\n walk.key += \"w\";\n if (!walkExpr(walk, dialect, statement.where)) return false;\n }\n addReturning(walk, statement.returning);\n walk.key += \"}\";\n return true;\n}\n\nfunction walkDelete(walk: Walk, dialect: SqlDialect, statement: DeleteStatement): boolean {\n walk.key += \"D{\";\n addTable(walk, statement.table);\n if (statement.where !== undefined) {\n walk.key += \"w\";\n if (!walkExpr(walk, dialect, statement.where)) return false;\n }\n addReturning(walk, statement.returning);\n walk.key += \"}\";\n return true;\n}\n\nfunction walkStatement(walk: Walk, dialect: SqlDialect, statement: SqlStatement): boolean {\n switch (statement.kind) {\n case \"select\":\n return walkSelect(walk, dialect, statement);\n case \"insert\":\n return walkInsert(walk, dialect, statement);\n case \"update\":\n return walkUpdate(walk, dialect, statement);\n case \"delete\":\n return walkDelete(walk, dialect, statement);\n }\n}\n\n// ─── Miss-time verification ───────────────────────────────────────\n\n/**\n * Element-wise identity, with one-level array content equality — the renderer\n * copies array params (`[...values]`), so a fresh copy with identical elements\n * counts as the same value.\n */\nfunction sameValues(walked: readonly unknown[], rendered: readonly unknown[]): boolean {\n if (walked.length !== rendered.length) return false;\n for (let index = 0; index < walked.length; index++) {\n const a = walked[index];\n const b = rendered[index];\n if (a === b) continue;\n if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) {\n let equal = true;\n for (let element = 0; element < a.length; element++) {\n if (a[element] !== b[element]) {\n equal = false;\n break;\n }\n }\n if (equal) continue;\n }\n return false;\n }\n return true;\n}\n\n// ─── Entry point ──────────────────────────────────────────────────\n\n/**\n * Render through the shape cache: hit = cached text + freshly walked values;\n * miss = real render, cross-checked against the walk before caching. Anything\n * uncacheable (or a verification failure — poisoned) renders directly.\n */\nexport function renderStatementCached(params: {\n dialect: SqlDialect;\n statement: SqlStatement;\n cache: StatementRenderCache;\n}): RenderedQuery {\n const { dialect, statement, cache } = params;\n\n const walk: Walk = { key: \"\", values: [] };\n if (!walkStatement(walk, dialect, statement)) {\n return renderStatement({ dialect, statement });\n }\n\n const slot = cache.get(walk.key);\n if (slot !== undefined) {\n if (slot === null) return renderStatement({ dialect, statement });\n return { text: slot.text, values: walk.values, returning: slot.returning };\n }\n\n const rendered = renderStatement({ dialect, statement });\n cache.set(\n walk.key,\n sameValues(walk.values, rendered.values) ? { text: rendered.text, returning: rendered.returning } : null,\n );\n return rendered;\n}\n"
|
|
20
21
|
],
|
|
21
|
-
"mappings": "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",
|
|
22
|
-
"debugId": "
|
|
22
|
+
"mappings": "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",
|
|
23
|
+
"debugId": "AB87792190B87F3664756E2164756E21",
|
|
23
24
|
"names": []
|
|
24
25
|
}
|