Skip to content

TML-2859: SQLite migration planner builds CREATE TABLE as typed DDL through the adapter#768

Draft
wmadden-electric wants to merge 9 commits into
mainfrom
tml-2859-sqlite-create-table-adoption
Draft

TML-2859: SQLite migration planner builds CREATE TABLE as typed DDL through the adapter#768
wmadden-electric wants to merge 9 commits into
mainfrom
tml-2859-sqlite-create-table-adoption

Conversation

@wmadden-electric

Copy link
Copy Markdown
Contributor

At a glance

The SQLite migration planner's CREATE TABLE no longer concatenates raw SQL — it builds a typed DDL-AST node and lowers it through the adapter at plan time, the same shape Postgres adopted in #751.

before:  SqliteCreateTableCall.toOp()        ─▶ renderCreateTableSql(name, spec)        → "CREATE TABLE …"  (raw string, in the planner)
after:   SqliteCreateTableCall.toOp(lower)   ─▶ createTable({ columns, constraints })   ─lower()─▶ adapter renders the SQL

The user-facing authoring form on the SQLite side becomes this.createTable({ ... }) on SqliteMigration — same shape Postgres already has.

What changed

  • SqliteCreateTableCall refactored (packages/3-targets/3-targets/sqlite/src/core/migrations/op-factory-call.ts). The class held a flat SqliteTableSpec (string defaultSql fragments); now it holds readonly DdlColumn[] + readonly DdlTableConstraint[]?, mirroring PostgresCreateTableCall. toOp(lowerer) builds the contract-free createTable({...}) node and lowers via lowerer.lower(node, { contract: {} }). The planner's upstream construction site at issue-planner.ts builds the structured node list from the same source data, with a new sqliteDefaultToDdlColumnDefault helper mirroring the Postgres analogue (autoincrement() short-circuits to undefined; literal defaults wrap in LiteralColumnDefault; expression defaults wrap in FunctionColumnDefault).
  • SqliteMigration authoring API. A protected createTable({ table, columns, constraints? }) method on the base class instantiates the call and lowers via the held controlAdapter. The free createTable(tableName, spec) re-export is dropped from @prisma-next/sqlite/migration; the structural constructors col, lit, fn, primaryKey, foreignKey, unique are re-exported instead. The user-facing breaking change is recorded via the upgrade-instructions skill.
  • Adapter renderer convention reconciled (packages/3-targets/6-adapters/sqlite/src/core/ddl-renderer.ts). The SQLite DDL renderer didn't quote identifiers and used a different indent than the planner's canonical format. Fixed to quote identifiers and use the 2-space indent the planner emits, so the lowered SQL is byte-identical to the pre-slice output. quoteIdentifier / quoteQualifiedIdentifier helpers added.

The substrate-fix decision — adapter renderer convention

The first dispatch attempted the call-class refactor on top of the existing SQLite renderer. The byte-parity test failed immediately: the renderer didn't quote identifiers, used the wrong indent, and pre-rendered literal defaults inline rather than as a structured node. Three options surfaced:

  1. Fix the renderer first. Reconcile its conventions to the planner's canonical format. Slice grows; the rest of the work proceeds.
  2. Make the planner output match the renderer's existing form. Rewrites the planner's output to a different SQL convention.
  3. Special-case the byte-parity test to absorb the difference. Drops the byte-parity DoD.

Picked (1) — the planner's format is the canonical one (Postgres lowered to it in slice 4) and the renderer was the outlier. The slice's spec + plan amended to add the substrate fix as dispatch 2, the call-class refactor as dispatch 3, and the authoring API as dispatch 4.

Byte-parity — no behaviour change

A cross-implementation byte-parity test (packages/3-targets/6-adapters/sqlite/test/migrations/create-table-call-byte-parity.test.ts) drives SqliteCreateTableCall.toOp(lowerer) end-to-end with a real SqliteControlAdapter() and compares the lowered SQL to the pre-slice renderCreateTableSql output for 12 representative shapes (simple, composite PK, FK with actions, table-level unique, autoincrement, plus 7 literal-default kinds). The oracle imports createTable directly from the internal operations/tables.ts module — the free createTable and renderCreateTableSql stay on disk because recreateTable (Phase 2) still calls them; only the facade re-export was dropped.

The renderer's defaultVisitor.literal was expanded in D5 to type-branch correctly on boolean (→ 0 / 1), Date (→ ISO single-quoted), and bigint (→ String(value)) for parity with renderDefaultLiteral. This expansion is a transitional state that TML-2867 deletes by routing the value through the column's codec — the type-branching becomes dead once the codec produces the canonical wire form.

Scope — deliberately SQLite CreateTable only

Other SQLite ops (AddColumn/DropColumn/CreateIndex/DropIndex/DropTable/RecreateTable) stay on the existing string-build path. They're tracked as Phase 2 of the parent project (projects/migrate-marker-ledger-to-typed-query-ast-commands/). recreateTable still calls the free createTable + renderCreateTableSql from operations/tables.ts — preserved deliberately.

A handful of inline-autoincrement smuggling sites in the planner (tableToDdlParts encodes PRIMARY KEY AUTOINCREMENT into DdlColumn.type, the renderer substring-detects to special-case it) are cross-linked with comments naming the convention; the structural fix is tracked as TML-2866.

Verification

git grep "createTable(this.tableName, this.spec)" → zero matches. Byte-parity test passes for all 12 shapes. renderTypeScript() roundtrip test restored (executes the rendered TS scaffold through tsx and asserts ops.json equals renderOps(calls)). target-sqlite 112 / adapter-sqlite 194 / sqlite facade 46 pass. pnpm fixtures:check green; pnpm lint:deps green.

Alternatives considered

  • Eager codec routing in this slice. Would replace the renderer's type-branching with codec.encode(value) calls directly. Extracted to TML-2867 because the change is cross-target (PG already shipped with the same type-branching shape) and async-propagation touches the framework MigrationPlanWithAuthoringSurface interface — own slice's worth of work that deserves its own framing.
  • Migrate all SQLite ops in one slice. Rejected at project shaping. The Phase 1 / Phase 2 decomposition (projects/.../README.md) lands the planner-adoption pattern across all three targets (PG/SQLite/Mongo) before fanning out to per-target op vocabulary. Slice 5 is the SQLite pioneer.

Refs: TML-2859. Related follow-ups: TML-2860 (slice-4 adapter-sqlite test debt), TML-2862 (pre-commit check for transient project refs), TML-2866 (DdlColumn.type smuggling structural fix), TML-2867 (codec-routed DDL default literals across PG + SQLite).

wmadden and others added 9 commits June 8, 2026 08:20
…ice 5)

Slice 5 / Phase 1 of the marker/ledger-via-typed-query-AST project. The
first SQLite slice in the planner-adoption arc — proves the planner-adoption
pattern works for SQLite by mirroring slice 4 (TML-2754, Postgres).

- Spec: SQLite CreateTableCall.toOp() builds the slice-1 CreateTable DDL-AST
  node via the contract-free createTable(...) constructor and lowers through
  SqlControlAdapter.lower(), replacing renderCreateTableSql string
  concatenation on the planner's live path. Substrate from slice 4 (the
  constraint node, contract-free constructor, SQLite adapter
  constraint-rendering with 4 byte-parity tests) is fully in place; this
  slice does the SQLite adapter byte-parity reconciliation + planner-side
  migration.
- Plan: three INVEST-shippable dispatches. D1 plumbs Lowerer through the
  SQLite planner stack (mechanical fan-out, no behaviour change); D2
  migrates SqliteCreateTableCall.toOp(lowerer) with a byte-parity test that
  drives toOp(lowerer) end-to-end; D3 adds SqliteMigration.createTable({...})
  authoring method and drops the free createTable re-export from
  @prisma-next/sqlite/migration (mirroring slice 4's PG-facade change).
- Project plan.md: fills in slice 5's Linear reference (was TBD).
- Initial trace events (spec-authored, plan-authored).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Will Madden <madden@prisma.io>
…fan-out)

Add `import type { Lowerer }` to op-factory-call.ts, render-ops.ts, planner.ts,
and planner-produced-sqlite-migration.ts. Change the abstract
`SqliteOpFactoryCallNode.toOp(): Op` signature to `toOp(lowerer?: Lowerer): Op`
and update all nine concrete `*Call.toOp` signatures to match (each body gains
an ignored `_lowerer?` param — no body change). Update `renderOps` to accept
and forward `lowerer?: Lowerer` via the same `blindCast` pattern used on the
Postgres path. Add `readonly #lowerer: Lowerer` to `SqliteMigrationPlanner` and
`TypeScriptRenderableSqliteMigration`, threading the value from
`createSqliteMigrationPlanner(lowerer: Lowerer)` through both
`TypeScriptRenderableSqliteMigration` constructor call sites. Update both
`createPlanner(adapter)` sites in `control-target.ts` to pass `adapter`. Update
all ten test call sites of `createSqliteMigrationPlanner()` — target-sqlite tests
use an inline `stubLowerer: Lowerer`; adapter-sqlite tests use `createSqliteAdapter()`
or `new SqliteControlAdapter()` (already in scope). Zero bare
`createSqliteMigrationPlanner()` calls remain across the repo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Will Madden <madden@prisma.io>
D2 of slice 5 halted on a falsified-assumption stop-condition: the
spec assumed the SQLite adapter substrate was byte-parity-ready, but
grounding showed three gaps — the SQLite adapter renderer doesn't
quote identifiers (the planner's `renderCreateTableSql` does, so
adapter-output and planner-output cannot be byte-identical), the
adapter renderer's CREATE TABLE indentation differs from the
planner's (4-space vs 2-space), and `SqliteCreateTableCall` holds
pre-rendered `defaultSql` strings rather than structured `DdlColumn[]`
the way PG's `PostgresCreateTableCall` does after slice 4.

Operator decision: expand slice 5 to fix the SQLite adapter renderer
+ replicate slice 4's `*Call holds DdlColumn[]` refactor on the
SQLite side. Plan goes from 3 dispatches to 4: D1 (lowerer
plumbing — done in `de813cb18`) + D2 (substrate fix: renderer
convention) + D3 (consumer refactor + byte-parity proof) + D4
(authoring API, unchanged from original D3).

Captures the in-flight D1 dispatch brief at
`slices/sqlite-create-table-adoption/dispatches/01-lowerer-plumbing.md`
and a draft D2 brief at
`slices/sqlite-create-table-adoption/dispatches/02-create-table-lower-migration.md`
(written before the stop-condition surfaced; D2 will be re-briefed
after this commit lands and the spec amendment takes effect).

Trace events appended for `spec-amended` / `plan-amended` /
`falsified-assumption`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Will Madden <madden@prisma.io>
…able-adoption

Signed-off-by: Will Madden <madden@prisma.io>
The SQLite adapter DDL renderer (`packages/3-targets/6-adapters/sqlite/src/core/ddl-renderer.ts`) was emitting unquoted identifiers and using 4-space/2-space indentation that diverged from both the Postgres adapter renderer and the SQLite planner's `renderCreateTableSql`. This change adds `quoteIdentifier` (from `@prisma-next/target-sqlite/sql-utils`) and `quoteQualifiedIdentifier` to the SQLite renderer, applies them to every identifier reference (table name, column names, constraint names, FK column lists, FK ref-table), and switches indentation to the 2-space/0-space-close form used by the Postgres renderer. Expected-SQL literals in `ddl-create-table-lowering.test.ts` and `ddl-table-constraints-lowering.test.ts` are updated to match; a new test in the constraints file pins mixed-case column names and SQL reserved-word table/constraint names to demonstrate the behaviour the bare-string form could not provide.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Will Madden <madden@prisma.io>
… (byte-parity)

Mirror slice 4's PG refactor onto SQLite.

`SqliteCreateTableCall` field shape changes from `spec: SqliteTableSpec` (a
flat struct of pre-rendered SQL fragments) to `columns: readonly DdlColumn[]
+ constraints?: readonly DdlTableConstraint[]` (structured AST nodes).
Constructor takes the structured shape directly. `toOp(lowerer)` builds a
typed DDL node via the contract-free `createTable({...})` constructor and
lowers it through `lowerer.lower(...)` — replacing the call to the free
`createTable(tableName, spec)` Op-builder on this path. The free Op-builder
and its `renderCreateTableSql` helper stay in `operations/tables.ts` for
`recreateTable`, which is Phase 2.

The upstream construction site in `issue-planner.ts` now builds the
structured shape: `StorageColumn` → `DdlColumn` instances via a new
`sqliteDefaultToDdlColumnDefault` helper (analogous to PG's
`postgresDefaultToDdlColumnDefault`); table constraints map to
`PrimaryKeyConstraint` / `ForeignKeyConstraint` / `UniqueConstraint`.

`renderTypeScript()` emits `this.createTable({ table, columns: [col(...),
...], constraints: [...] })` — the user-facing authoring form that
`SqliteMigration.createTable` (landing in the next dispatch) will consume.

Byte-parity proof at `adapter-sqlite/test/migrations/create-table-call-byte-parity.test.ts`:
the new test drives `SqliteCreateTableCall.toOp(lowerer)` end-to-end and
asserts byte-identity vs `renderCreateTableSql(tableName, spec)` across
five representative shapes (simple, composite PK, FK with referential
actions, table-level unique, autoincrement-inline-PK).

Roundtrip-test scope:
`render-typescript.roundtrip.test.ts` dropped `CreateTableCall` from its
operation list. The roundtrip evaluates rendered TS by calling `toOp` on
each construction, and CreateTableCall now needs both a Lowerer AND the
`this.createTable` method on the base class to round-trip — the method
doesn't land until the next dispatch. The remaining operations in the
test (AddColumn, CreateIndex, RawSql, …) still round-trip cleanly because
their toOp doesn't depend on either. Restore CreateTableCall coverage
once the migration method is available.

Includes the dispatch briefs for D2 and D3 as project-context artefacts;
the stale D3 brief from before the spec amendment is removed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Will Madden <madden@prisma.io>
…-export drop

Adds `SqliteMigration.createTable({ table, columns, constraints? })` as a protected
instance method, mirroring `PostgresMigration.createTable`. The method builds a
`CreateTableCall` and lowers it through a `SqlControlAdapter<'sqlite'>` stored in the
constructor (materialized from `stack?.adapter`). A companion error function
`errorSqliteMigrationStackMissing` surfaces the misuse when the adapter is absent.

Drops the free `createTable` re-export from the target migration facade
(`packages/3-targets/3-targets/sqlite/src/exports/migration.ts`) and the extension
facade (`packages/3-extensions/sqlite`). The function stays in `operations/tables.ts`
for internal use by `recreateTable`. Adds `col`, `fn`, `lit`, `primaryKey`, `foreignKey`,
and `unique` from `@prisma-next/sql-relational-core/contract-free` to both facades
so authored migration files can import all column-builder helpers from the single
`@prisma-next/sqlite/migration` entrypoint.

Restores `CreateTableCall` coverage in the SQLite adapter roundtrip test now that
the base class method exists. Updates the byte-parity test to use the DDL renderer
directly as the oracle (instead of the now-private free `createTable` op factory).

Records the breaking API change in the 0.12→0.13 upgrade instructions for both user
and extension-author skill packages.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Will Madden <madden@prisma.io>
… byte-parity oracle, autoincrement guard

Fix four reviewer findings from the slice-5 DoD pass. The literal-default
renderer now emits 0/1 for booleans, a single-quoted ISO string for Date,
and a bare integer string for bigint (defensive), matching the pre-slice
renderDefaultLiteral output exactly. The byte-parity test is rewritten with
a genuine cross-implementation oracle: each case independently provides a
SqliteTableSpec for the pre-slice createTable path and DdlColumn[] for the
new path, covering all ColumnDefaultLiteralInputValue kinds plus function
defaults. sqliteDefaultToDdlColumnDefault now short-circuits autoincrement()
to undefined at the helper boundary (mirroring the Postgres analogue) instead
of forwarding a FunctionColumnDefault the renderer silently discards. Both
the tableToDdlParts and renderColumn autoincrement sites carry cross-linking
comments describing the type-smuggling convention, referencing TML-2866 for
the structural fix. A tsconfig.test.json with rootDir widened to the monorepo
packages root is added so the cross-package direct-source import in the parity
test typechecks cleanly without relaxing the production tsconfig's rootDir.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Will Madden <madden@prisma.io>
Trace records D5 (round-2 fixes) dispatch lifecycle: dispatch-start,
round-start, brief-issued, round-end (satisfied), dispatch-end. D4 and
D5 brief artifacts capture the dispatched scope so the slice's audit
trail is complete.

Signed-off-by: Will Madden <madden@prisma.io>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@wmadden-electric wmadden-electric requested a review from a team as a code owner June 8, 2026 11:21
@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@wmadden-electric, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 11 minutes and 28 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: 9970e0e1-5334-47c4-ae60-9bf64800544f

📥 Commits

Reviewing files that changed from the base of the PR and between 9023ee0 and d466a3b.

⛔ Files ignored due to path filters (9)
  • projects/migrate-marker-ledger-to-typed-query-ast-commands/plan.md is excluded by !projects/**
  • projects/migrate-marker-ledger-to-typed-query-ast-commands/slices/sqlite-create-table-adoption/dispatches/01-lowerer-plumbing.md is excluded by !projects/**
  • projects/migrate-marker-ledger-to-typed-query-ast-commands/slices/sqlite-create-table-adoption/dispatches/02-sqlite-renderer-substrate-fix.md is excluded by !projects/**
  • projects/migrate-marker-ledger-to-typed-query-ast-commands/slices/sqlite-create-table-adoption/dispatches/03-create-table-call-refactor.md is excluded by !projects/**
  • projects/migrate-marker-ledger-to-typed-query-ast-commands/slices/sqlite-create-table-adoption/dispatches/04-sqlite-migration-create-table-method.md is excluded by !projects/**
  • projects/migrate-marker-ledger-to-typed-query-ast-commands/slices/sqlite-create-table-adoption/dispatches/05-reviewer-round-2.md is excluded by !projects/**
  • projects/migrate-marker-ledger-to-typed-query-ast-commands/slices/sqlite-create-table-adoption/plan.md is excluded by !projects/**
  • projects/migrate-marker-ledger-to-typed-query-ast-commands/slices/sqlite-create-table-adoption/spec.md is excluded by !projects/**
  • projects/migrate-marker-ledger-to-typed-query-ast-commands/trace.jsonl is excluded by !projects/**
📒 Files selected for processing (27)
  • packages/3-extensions/sqlite/README.md
  • packages/3-extensions/sqlite/test/migration/re-export.test.ts
  • packages/3-targets/3-targets/sqlite/src/core/control-target.ts
  • packages/3-targets/3-targets/sqlite/src/core/errors.ts
  • packages/3-targets/3-targets/sqlite/src/core/migrations/issue-planner.ts
  • packages/3-targets/3-targets/sqlite/src/core/migrations/op-factory-call.ts
  • packages/3-targets/3-targets/sqlite/src/core/migrations/planner-produced-sqlite-migration.ts
  • packages/3-targets/3-targets/sqlite/src/core/migrations/planner.ts
  • packages/3-targets/3-targets/sqlite/src/core/migrations/render-ops.ts
  • packages/3-targets/3-targets/sqlite/src/core/migrations/sqlite-migration.ts
  • packages/3-targets/3-targets/sqlite/src/exports/migration.ts
  • packages/3-targets/3-targets/sqlite/test/migrations/nullability-backfill.test.ts
  • packages/3-targets/3-targets/sqlite/test/migrations/op-factory-call.test.ts
  • packages/3-targets/3-targets/sqlite/test/migrations/planner.authoring-surface.test.ts
  • packages/3-targets/6-adapters/sqlite/package.json
  • packages/3-targets/6-adapters/sqlite/src/core/ddl-renderer.ts
  • packages/3-targets/6-adapters/sqlite/test/ddl-create-table-lowering.test.ts
  • packages/3-targets/6-adapters/sqlite/test/ddl-table-constraints-lowering.test.ts
  • packages/3-targets/6-adapters/sqlite/test/migrations/create-table-call-byte-parity.test.ts
  • packages/3-targets/6-adapters/sqlite/test/migrations/planner-introspection.integration.test.ts
  • packages/3-targets/6-adapters/sqlite/test/migrations/planner.codec-field-event.test.ts
  • packages/3-targets/6-adapters/sqlite/test/migrations/planner.test.ts
  • packages/3-targets/6-adapters/sqlite/test/migrations/render-typescript.roundtrip.test.ts
  • packages/3-targets/6-adapters/sqlite/tsconfig.json
  • packages/3-targets/6-adapters/sqlite/tsconfig.test.json
  • skills/extension-author/prisma-next-extension-upgrade/upgrades/0.12-to-0.13/instructions.md
  • skills/upgrade/prisma-next-upgrade/upgrades/0.12-to-0.13/instructions.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch tml-2859-sqlite-create-table-adoption

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

size-limit report 📦

Path Size
postgres / no-emit 149.27 KB (0%)
postgres / emit 118.32 KB (0%)
mongo / no-emit 76.67 KB (0%)
mongo / emit 70.96 KB (0%)
cf-worker / no-emit 179.31 KB (0%)
cf-worker / emit 145.03 KB (0%)

@pkg-pr-new

pkg-pr-new Bot commented Jun 8, 2026

Copy link
Copy Markdown

Open in StackBlitz

@prisma-next/extension-author-tools

npm i https://pkg.pr.new/@prisma-next/extension-author-tools@768

@prisma-next/mongo-runtime

npm i https://pkg.pr.new/@prisma-next/mongo-runtime@768

@prisma-next/family-mongo

npm i https://pkg.pr.new/@prisma-next/family-mongo@768

@prisma-next/sql-runtime

npm i https://pkg.pr.new/@prisma-next/sql-runtime@768

@prisma-next/family-sql

npm i https://pkg.pr.new/@prisma-next/family-sql@768

@prisma-next/extension-arktype-json

npm i https://pkg.pr.new/@prisma-next/extension-arktype-json@768

@prisma-next/middleware-cache

npm i https://pkg.pr.new/@prisma-next/middleware-cache@768

@prisma-next/mongo

npm i https://pkg.pr.new/@prisma-next/mongo@768

@prisma-next/extension-paradedb

npm i https://pkg.pr.new/@prisma-next/extension-paradedb@768

@prisma-next/extension-pgvector

npm i https://pkg.pr.new/@prisma-next/extension-pgvector@768

@prisma-next/extension-postgis

npm i https://pkg.pr.new/@prisma-next/extension-postgis@768

@prisma-next/postgres

npm i https://pkg.pr.new/@prisma-next/postgres@768

@prisma-next/sql-orm-client

npm i https://pkg.pr.new/@prisma-next/sql-orm-client@768

@prisma-next/sqlite

npm i https://pkg.pr.new/@prisma-next/sqlite@768

@prisma-next/extension-supabase

npm i https://pkg.pr.new/@prisma-next/extension-supabase@768

@prisma-next/target-mongo

npm i https://pkg.pr.new/@prisma-next/target-mongo@768

@prisma-next/adapter-mongo

npm i https://pkg.pr.new/@prisma-next/adapter-mongo@768

@prisma-next/driver-mongo

npm i https://pkg.pr.new/@prisma-next/driver-mongo@768

@prisma-next/contract

npm i https://pkg.pr.new/@prisma-next/contract@768

@prisma-next/utils

npm i https://pkg.pr.new/@prisma-next/utils@768

@prisma-next/config

npm i https://pkg.pr.new/@prisma-next/config@768

@prisma-next/errors

npm i https://pkg.pr.new/@prisma-next/errors@768

@prisma-next/framework-components

npm i https://pkg.pr.new/@prisma-next/framework-components@768

@prisma-next/operations

npm i https://pkg.pr.new/@prisma-next/operations@768

@prisma-next/ts-render

npm i https://pkg.pr.new/@prisma-next/ts-render@768

@prisma-next/contract-authoring

npm i https://pkg.pr.new/@prisma-next/contract-authoring@768

@prisma-next/ids

npm i https://pkg.pr.new/@prisma-next/ids@768

@prisma-next/psl-parser

npm i https://pkg.pr.new/@prisma-next/psl-parser@768

@prisma-next/psl-printer

npm i https://pkg.pr.new/@prisma-next/psl-printer@768

@prisma-next/cli

npm i https://pkg.pr.new/@prisma-next/cli@768

@prisma-next/cli-telemetry

npm i https://pkg.pr.new/@prisma-next/cli-telemetry@768

@prisma-next/emitter

npm i https://pkg.pr.new/@prisma-next/emitter@768

@prisma-next/migration-tools

npm i https://pkg.pr.new/@prisma-next/migration-tools@768

prisma-next

npm i https://pkg.pr.new/prisma-next@768

@prisma-next/vite-plugin-contract-emit

npm i https://pkg.pr.new/@prisma-next/vite-plugin-contract-emit@768

@prisma-next/mongo-codec

npm i https://pkg.pr.new/@prisma-next/mongo-codec@768

@prisma-next/mongo-contract

npm i https://pkg.pr.new/@prisma-next/mongo-contract@768

@prisma-next/mongo-value

npm i https://pkg.pr.new/@prisma-next/mongo-value@768

@prisma-next/mongo-contract-psl

npm i https://pkg.pr.new/@prisma-next/mongo-contract-psl@768

@prisma-next/mongo-contract-ts

npm i https://pkg.pr.new/@prisma-next/mongo-contract-ts@768

@prisma-next/mongo-emitter

npm i https://pkg.pr.new/@prisma-next/mongo-emitter@768

@prisma-next/mongo-schema-ir

npm i https://pkg.pr.new/@prisma-next/mongo-schema-ir@768

@prisma-next/mongo-query-ast

npm i https://pkg.pr.new/@prisma-next/mongo-query-ast@768

@prisma-next/mongo-orm

npm i https://pkg.pr.new/@prisma-next/mongo-orm@768

@prisma-next/mongo-query-builder

npm i https://pkg.pr.new/@prisma-next/mongo-query-builder@768

@prisma-next/mongo-lowering

npm i https://pkg.pr.new/@prisma-next/mongo-lowering@768

@prisma-next/mongo-wire

npm i https://pkg.pr.new/@prisma-next/mongo-wire@768

@prisma-next/sql-contract

npm i https://pkg.pr.new/@prisma-next/sql-contract@768

@prisma-next/sql-errors

npm i https://pkg.pr.new/@prisma-next/sql-errors@768

@prisma-next/sql-operations

npm i https://pkg.pr.new/@prisma-next/sql-operations@768

@prisma-next/sql-schema-ir

npm i https://pkg.pr.new/@prisma-next/sql-schema-ir@768

@prisma-next/sql-contract-psl

npm i https://pkg.pr.new/@prisma-next/sql-contract-psl@768

@prisma-next/sql-contract-ts

npm i https://pkg.pr.new/@prisma-next/sql-contract-ts@768

@prisma-next/sql-contract-emitter

npm i https://pkg.pr.new/@prisma-next/sql-contract-emitter@768

@prisma-next/sql-lane-query-builder

npm i https://pkg.pr.new/@prisma-next/sql-lane-query-builder@768

@prisma-next/sql-relational-core

npm i https://pkg.pr.new/@prisma-next/sql-relational-core@768

@prisma-next/sql-builder

npm i https://pkg.pr.new/@prisma-next/sql-builder@768

@prisma-next/target-postgres

npm i https://pkg.pr.new/@prisma-next/target-postgres@768

@prisma-next/target-sqlite

npm i https://pkg.pr.new/@prisma-next/target-sqlite@768

@prisma-next/adapter-postgres

npm i https://pkg.pr.new/@prisma-next/adapter-postgres@768

@prisma-next/adapter-sqlite

npm i https://pkg.pr.new/@prisma-next/adapter-sqlite@768

@prisma-next/driver-postgres

npm i https://pkg.pr.new/@prisma-next/driver-postgres@768

@prisma-next/driver-sqlite

npm i https://pkg.pr.new/@prisma-next/driver-sqlite@768

commit: d466a3b

@wmadden wmadden marked this pull request as draft June 9, 2026 13:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants