Skip to content

TML-1810/TML-1809: Establish version support policy (Node 24, TS 5.9, PG 17, Mongo 8.0)#659

Merged
wmadden merged 4 commits into
mainfrom
tml-1810-decide-on-minimum-typescript-version
Jun 1, 2026
Merged

TML-1810/TML-1809: Establish version support policy (Node 24, TS 5.9, PG 17, Mongo 8.0)#659
wmadden merged 4 commits into
mainfrom
tml-1810-decide-on-minimum-typescript-version

Conversation

@wmadden-electric

@wmadden-electric wmadden-electric commented May 31, 2026

Copy link
Copy Markdown
Contributor

What

Establishes a single, ratified version support policy for Prisma Next and removes existing drift. Closes TML-1810 (minimum TypeScript) and TML-1809 (minimum Node/Bun/Deno), expanded to cover MongoDB, PostgreSQL, and other environmental dependencies.

Recorded as ADR 222 — Version support policy.

The decision

Governing principle: the supported floor for each dependency is the latest GA release we test against. We raise floors freely and only lower them on a concrete user need. Lowering a floor is backwards-compatible; raising one is not — so starting aggressive costs nothing and we can relax later.

Dimension Old New Enforcement
Node.js >=20 (16 pkgs) / >=24 (root) >=24 (all) engines.node on every publishable package
TypeScript undeclared >=5.9 optional peerDependencies.typescript on all 62 + source-of-truth constant + drift lint
PostgreSQL 14 17 prismaNext.minServerVersion + CLI mirror + test docker image
MongoDB 6.0 8.0 prismaNext.minServerVersion + CLI mirror (MMS 11.x runs 8.2.x)
Bun / Deno >=1.2 / >=2.0 documented (runtime already detected)
Module system ESM-only documented

Why these floors

  • Node 24 is current Active LTS; it also matters structurally because tsdown infers the JS output target from engines.node, so the prior >=20/>=24 drift produced inconsistent emit.
  • TS 5.9 matches the workspace catalog. The peer is optional so plain-JS consumers are never forced to install TypeScript.
  • PG 14 is EOL (Nov 2024) and Mongo 6.0 is well behind; the new floors are pinned to exactly what our self-contained test infra runs (docker-compose Postgres image, mongodb-memory-server), so we never claim more than we test.

Drift protection

Both axes are guarded so the floors can't silently fragment again:

  • pnpm lint:manifests runs scripts/validate-typescript-peer.mjs — fails if any publishable package's typescript peer ≠ MIN_TYPESCRIPT_PEER.
  • The existing CLI MIN_SERVER_VERSION drift test continues to assert the CLI mirror matches each target package's prismaNext.minServerVersion.

Scope

User-facing surfaces (prisma-next init .env.example, the generated prisma-next.md Requirements block, and the new docs/Supported Versions.md) now reflect the accurate floors. No driver-major bumps were needed (the mongodb v7 driver supports server 8.0).

Verification

pnpm build ✅ · pnpm typecheck (135/135) ✅ · pnpm lint:manifests ✅ · TS-peer drift test (15/15) ✅ · CLI server-version drift test (23/23) ✅ · pnpm test:scripts (585/585) ✅

pnpm test:integration not run locally (needs Docker services) — will run in CI. Two CLI timeout tests (version.test.ts, removed-verb-redirects.test.ts) are pre-existing failures reproduced on main before this branch, unrelated to this change.

Summary by CodeRabbit

  • Documentation

    • Added a "Supported Versions" guide and formalized a version support policy.
  • Updated Minimum Requirements

    • Node.js minimum raised to >=24 across packages.
    • PostgreSQL minimum raised to 17 (docker image/tag updated).
    • MongoDB minimum raised to 8.0.
    • Introduced a TypeScript peer requirement (>=5.9) for publishable packages.
  • Tooling

    • Added workspace validation and tests to enforce consistent TypeScript peer metadata.

@wmadden-electric wmadden-electric requested a review from a team as a code owner May 31, 2026 16:33
@coderabbitai

coderabbitai Bot commented May 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: bead6d8e-c1cf-4844-800c-4123052708ab

📥 Commits

Reviewing files that changed from the base of the PR and between 3945e1c and 460bd66.

⛔ Files ignored due to path filters (2)
  • packages/1-framework/3-tooling/cli/test/commands/init/__snapshots__/templates.test.ts.snap is excluded by !**/*.snap
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (72)
  • docker-compose.yaml
  • docs/README.md
  • docs/Supported Versions.md
  • docs/architecture docs/adrs/ADR 222 - Version support policy.md
  • package.json
  • packages/0-config/tsdown/README.md
  • packages/0-shared/extension-author-tools/package.json
  • packages/1-framework/0-foundation/contract/package.json
  • packages/1-framework/0-foundation/utils/package.json
  • packages/1-framework/1-core/config/package.json
  • packages/1-framework/1-core/errors/package.json
  • packages/1-framework/1-core/framework-components/package.json
  • packages/1-framework/1-core/operations/package.json
  • packages/1-framework/1-core/ts-render/package.json
  • packages/1-framework/2-authoring/contract/package.json
  • packages/1-framework/2-authoring/ids/package.json
  • packages/1-framework/2-authoring/psl-parser/package.json
  • packages/1-framework/2-authoring/psl-printer/package.json
  • packages/1-framework/3-tooling/cli-telemetry/package.json
  • packages/1-framework/3-tooling/cli/package.json
  • packages/1-framework/3-tooling/cli/src/commands/init/templates/env.ts
  • packages/1-framework/3-tooling/cli/test/commands/init/templates/tsconfig-env.test.ts
  • packages/1-framework/3-tooling/emitter/package.json
  • packages/1-framework/3-tooling/migration/package.json
  • packages/1-framework/3-tooling/prisma-next/package.json
  • packages/1-framework/3-tooling/vite-plugin-contract-emit/package.json
  • packages/2-mongo-family/1-foundation/mongo-codec/package.json
  • packages/2-mongo-family/1-foundation/mongo-contract/package.json
  • packages/2-mongo-family/1-foundation/mongo-value/package.json
  • packages/2-mongo-family/2-authoring/contract-psl/package.json
  • packages/2-mongo-family/2-authoring/contract-ts/package.json
  • packages/2-mongo-family/3-tooling/emitter/package.json
  • packages/2-mongo-family/3-tooling/mongo-schema-ir/package.json
  • packages/2-mongo-family/4-query/query-ast/package.json
  • packages/2-mongo-family/5-query-builders/orm/package.json
  • packages/2-mongo-family/5-query-builders/query-builder/package.json
  • packages/2-mongo-family/6-transport/mongo-lowering/package.json
  • packages/2-mongo-family/6-transport/mongo-wire/package.json
  • packages/2-mongo-family/7-runtime/package.json
  • packages/2-mongo-family/9-family/package.json
  • packages/2-sql/1-core/contract/package.json
  • packages/2-sql/1-core/errors/package.json
  • packages/2-sql/1-core/operations/package.json
  • packages/2-sql/1-core/schema-ir/package.json
  • packages/2-sql/2-authoring/contract-psl/package.json
  • packages/2-sql/2-authoring/contract-ts/package.json
  • packages/2-sql/3-tooling/emitter/package.json
  • packages/2-sql/4-lanes/query-builder/package.json
  • packages/2-sql/4-lanes/relational-core/package.json
  • packages/2-sql/4-lanes/sql-builder/package.json
  • packages/2-sql/5-runtime/package.json
  • packages/2-sql/9-family/package.json
  • packages/3-extensions/arktype-json/package.json
  • packages/3-extensions/middleware-cache/package.json
  • packages/3-extensions/mongo/package.json
  • packages/3-extensions/paradedb/package.json
  • packages/3-extensions/pgvector/package.json
  • packages/3-extensions/postgis/package.json
  • packages/3-extensions/postgres/package.json
  • packages/3-extensions/sql-orm-client/package.json
  • packages/3-extensions/sqlite/package.json
  • packages/3-mongo-target/1-mongo-target/package.json
  • packages/3-mongo-target/2-mongo-adapter/package.json
  • packages/3-mongo-target/3-mongo-driver/package.json
  • packages/3-targets/3-targets/postgres/package.json
  • packages/3-targets/3-targets/sqlite/package.json
  • packages/3-targets/6-adapters/postgres/package.json
  • packages/3-targets/6-adapters/sqlite/package.json
  • packages/3-targets/7-drivers/postgres/package.json
  • packages/3-targets/7-drivers/sqlite/package.json
  • scripts/validate-typescript-peer.mjs
  • scripts/validate-typescript-peer.test.mjs

📝 Walkthrough

Walkthrough

This PR introduces an explicit version support policy for Prisma Next with minimum requirements enforced across the workspace: Node.js >=24, TypeScript >=5.9, PostgreSQL 17, and MongoDB 8.0. It includes policy documentation (ADR 222 and Supported Versions guide), a new validation script to enforce TypeScript peer dependency consistency, updates to nearly all package manifests, and infrastructure adjustments.

Changes

Version Support Policy & Enforcement

Layer / File(s) Summary
Version Support Policy Documentation
docs/Supported Versions.md, docs/architecture docs/adrs/ADR 222 - Version support policy.md, docs/README.md
Establishes governance defining minimum supported versions as hard floors for Node.js, TypeScript, database servers (PostgreSQL, MongoDB), Bun, and Deno, with references to enforcement mechanisms and consumer compatibility consequences.
TypeScript Peer Dependency Validator Script
scripts/validate-typescript-peer.mjs, scripts/validate-typescript-peer.test.mjs
Implements workspace-wide CLI validator that enforces TypeScript >=5.9 as an optional peer dependency in all publishable packages; exports helper functions for classification and supports JSON and human-readable output modes with exit codes reflecting validation success or failure.
Root Workspace Linting Integration
package.json
Updates lint:manifests script to chain TypeScript peer dependency validation alongside existing package manifest validation.
CLI templates, tests, and Docker
packages/1-framework/3-tooling/cli/src/commands/init/templates/env.ts, packages/1-framework/3-tooling/cli/test/commands/init/templates/tsconfig-env.test.ts, docker-compose.yaml, packages/0-config/tsdown/README.md
Updates CLI scaffolding MIN_SERVER_VERSION for Postgres (14→17) and Mongo (6.0→8.0), adjusts test titles/messages, bumps Docker Postgres image to postgres:17-alpine, and documents Node engine inference example as >=24.
Package manifest metadata updates (bulk)
packages/*/package.json (many files)
Adds peerDependencies.typescript: ">=5.9" with peerDependenciesMeta.typescript.optional = true to publishable packages, raises engines.node to >=24 where applicable, reorders manifest fields as needed, and updates package-level prismaNext.minServerVersion entries (Postgres: 14→17, Mongo: 6.0→8.0).

🎯 4 (Complex) | ⏱️ ~45 minutes

🐰 Hops forth with joy and clarity 🎉

The version policy's here, the checks are tight,
No ancient Node nor TypeScript's flight,
Postgres seventeen and Mongo eight take reign,
While the validator ensures no one's stray from the chain! 🔗✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 75.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly identifies the main change: establishing a version support policy with specific floor versions (Node 24, TS 5.9, PG 17, Mongo 8.0). It directly corresponds to the primary objective documented in the PR summary.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch tml-1810-decide-on-minimum-typescript-version

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.

@pkg-pr-new

pkg-pr-new Bot commented May 31, 2026

Copy link
Copy Markdown

Open in StackBlitz

@prisma-next/extension-author-tools

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

@prisma-next/mongo-runtime

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

@prisma-next/family-mongo

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

@prisma-next/sql-runtime

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

@prisma-next/family-sql

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

@prisma-next/extension-arktype-json

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

@prisma-next/middleware-cache

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

@prisma-next/mongo

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

@prisma-next/extension-paradedb

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

@prisma-next/extension-pgvector

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

@prisma-next/extension-postgis

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

@prisma-next/postgres

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

@prisma-next/sql-orm-client

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

@prisma-next/sqlite

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

@prisma-next/target-mongo

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

@prisma-next/adapter-mongo

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

@prisma-next/driver-mongo

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

@prisma-next/contract

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

@prisma-next/utils

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

@prisma-next/config

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

@prisma-next/errors

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

@prisma-next/framework-components

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

@prisma-next/operations

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

@prisma-next/ts-render

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

@prisma-next/contract-authoring

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

@prisma-next/ids

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

@prisma-next/psl-parser

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

@prisma-next/psl-printer

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

@prisma-next/cli

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

@prisma-next/cli-telemetry

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

@prisma-next/emitter

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

@prisma-next/migration-tools

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

prisma-next

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

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

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

@prisma-next/mongo-codec

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

@prisma-next/mongo-contract

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

@prisma-next/mongo-value

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

@prisma-next/mongo-contract-psl

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

@prisma-next/mongo-contract-ts

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

@prisma-next/mongo-emitter

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

@prisma-next/mongo-schema-ir

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

@prisma-next/mongo-query-ast

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

@prisma-next/mongo-orm

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

@prisma-next/mongo-query-builder

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

@prisma-next/mongo-lowering

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

@prisma-next/mongo-wire

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

@prisma-next/sql-contract

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

@prisma-next/sql-errors

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

@prisma-next/sql-operations

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

@prisma-next/sql-schema-ir

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

@prisma-next/sql-contract-psl

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

@prisma-next/sql-contract-ts

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

@prisma-next/sql-contract-emitter

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

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

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

@prisma-next/sql-relational-core

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

@prisma-next/sql-builder

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

@prisma-next/target-postgres

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

@prisma-next/target-sqlite

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

@prisma-next/adapter-postgres

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

@prisma-next/adapter-sqlite

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

@prisma-next/driver-postgres

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

@prisma-next/driver-sqlite

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

commit: 3945e1c

@github-actions

github-actions Bot commented May 31, 2026

Copy link
Copy Markdown

size-limit report 📦

Path Size
postgres / no-emit 135.88 KB (0%)
postgres / emit 125.59 KB (0%)
mongo / no-emit 75.69 KB (0%)
mongo / emit 70.68 KB (0%)

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
packages/2-mongo-family/9-family/package.json (1)

1-65: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add engines.node (>=24) to this publishable package

packages/2-mongo-family/9-family/package.json is missing an engines field (and specifically engines.node: ">=24"). A repo-wide scan shows multiple publishable package.json files have the same omission, including this one.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/2-mongo-family/9-family/package.json` around lines 1 - 65, The
package.json for the Mongo family package is missing an engines field; add an
"engines" object with "node": ">=24" at the package root (i.e., update the
package manifest represented in this diff to include "engines": { "node": ">=24"
}); ensure the change is applied to the top-level package.json for
`@prisma-next/family-mongo` so publishing tools and consumers enforce Node >=24.
packages/2-mongo-family/1-foundation/mongo-contract/package.json (1)

1-56: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Add engines.node >=24 to @prisma-next/mongo-contract package.json

packages/2-mongo-family/1-foundation/mongo-contract/package.json is missing the engines.node field (jq check reports it as absent). Per the PR objectives for all publishable packages, it needs engines.node set to >=24.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/2-mongo-family/1-foundation/mongo-contract/package.json` around
lines 1 - 56, The package.json for `@prisma-next/mongo-contract` is missing the
engines.node field; add an "engines" object with "node": ">=24" to
packages/2-mongo-family/1-foundation/mongo-contract/package.json (ensure the
engines.node entry is present alongside existing fields like name, version, and
exports so the package manifest meets the publishable-package jq check).
packages/3-extensions/sqlite/package.json (1)

1-72: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add engines.node (>=24) to @prisma-next/sqlite
packages/3-extensions/sqlite/package.json is missing the engines/engines.node field, so it doesn’t satisfy the requirement that all publishable packages set engines.node to >=24.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/3-extensions/sqlite/package.json` around lines 1 - 72, The package
`@prisma-next/sqlite` package.json is missing an engines field; add an "engines"
object with "node": ">=24" at the top-level of
packages/3-extensions/sqlite/package.json (next to "type" or "license") so the
file contains "engines": { "node": ">=24" } to satisfy the publishable-package
requirement.
♻️ Duplicate comments (4)
packages/2-mongo-family/3-tooling/emitter/package.json (1)

1-56: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Missing engines.node field for version policy enforcement.

This publishable package lacks an engines.node declaration. Per the PR objective, it should declare engines.node: ">=24".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/2-mongo-family/3-tooling/emitter/package.json` around lines 1 - 56,
The package.json for `@prisma-next/mongo-emitter` is missing the required
engines.node field; add an "engines": { "node": ">=24" } entry to the top-level
JSON in this package.json so the package declares Node >=24 for version policy
enforcement (update the package.json object that currently contains "name",
"version", etc., by inserting the engines.node property).
packages/3-extensions/arktype-json/package.json (1)

1-62: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Missing engines.node field for version policy enforcement.

This publishable package lacks an engines.node declaration. Per the PR objective, it should declare engines.node: ">=24".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/3-extensions/arktype-json/package.json` around lines 1 - 62, The
package.json for `@prisma-next/extension-arktype-json` is missing an engines.node
declaration required by the version policy; update the package manifest (the
JSON object in package.json for the package with "name":
"`@prisma-next/extension-arktype-json`") to include an "engines" field with
"node": ">=24" so the package enforces Node >=24 at publish time.
packages/2-mongo-family/2-authoring/contract-psl/package.json (1)

1-56: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Missing engines.node field for version policy enforcement.

This publishable package lacks an engines.node declaration. Per the PR objective ("engines.node on every publishable package"), add:

"engines": {
  "node": ">=24"
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/2-mongo-family/2-authoring/contract-psl/package.json` around lines 1
- 56, The package.json for `@prisma-next/mongo-contract-psl` is missing the
top-level engines.node field required by the repo policy; edit the package.json
(the JSON object containing "name": "`@prisma-next/mongo-contract-psl`" and
"version": "0.11.0") and add an "engines" entry with "node": ">=24" at the top
level so the file includes the required engines.node declaration for publishing.
packages/2-mongo-family/1-foundation/mongo-codec/package.json (1)

1-53: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Missing engines.node field for version policy enforcement.

This publishable package lacks an engines.node declaration. Per the PR objective, it should declare engines.node: ">=24".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/2-mongo-family/1-foundation/mongo-codec/package.json` around lines 1
- 53, The package.json for `@prisma-next/mongo-codec` is missing the engines.node
declaration required by our version policy; open the package.json and add an
"engines" object with "node": ">=24" at the root (i.e., add "engines": { "node":
">=24" }) so the package declares the minimum Node.js version; update the file
where "name": "`@prisma-next/mongo-codec`" and other top-level keys are defined.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/1-framework/1-core/framework-components/package.json`:
- Around line 30-37: This package.json is missing the engines field required to
enforce Node.js 24; add an "engines" object with "node": ">=24" to this
package.json (it’s a publishable package because it already has files, exports,
and repository fields) so the package declares Node >=24 for consumers and
aligns with tsdown's Node 24 requirement.

In `@packages/1-framework/3-tooling/cli/package.json`:
- Around line 7-9: Add a top-level "engines" field to the `@prisma-next/cli`
package.json declaring Node >=24; specifically, edit the package.json that
contains the "bin": { "prisma-next": "./dist/cli.js" } entry and add "engines":
{ "node": ">=24" } at the root so the package (identified as `@prisma-next/cli`)
enforces Node 24+ for publishing and runtime.

In `@packages/2-mongo-family/6-transport/mongo-lowering/package.json`:
- Around line 30-37: Add an "engines" entry to this package.json specifying
Node.js >=24 to satisfy the version support policy: insert an "engines": {
"node": ">=24" } object in the package.json (e.g., adjacent to the existing
"peerDependencies" / "peerDependenciesMeta" section) so the package declares the
required Node version.

In `@packages/2-mongo-family/6-transport/mongo-wire/package.json`:
- Around line 29-36: Add an "engines" field to this package's package.json
specifying Node >=24 to satisfy the version support policy; update the
package.json object (near the existing "peerDependencies"/"peerDependenciesMeta"
entries) by adding an "engines" key with "node": ">=24" so the package
advertises the required Node.js runtime.

In `@packages/2-mongo-family/7-runtime/package.json`:
- Around line 44-51: Add the required Node engine constraint to package.json by
adding an "engines" object with "node": ">=24"; locate the package.json that
currently contains "peerDependencies" and "peerDependenciesMeta" and insert the
"engines": { "node": ">=24" } entry at the top level so the manifest explicitly
declares Node.js >=24 compatibility (ensure format matches existing JSON
structure and commas are adjusted accordingly).

In `@packages/2-sql/2-authoring/contract-psl/package.json`:
- Around line 38-45: The package.json is missing the required Node engine
declaration; add an "engines" entry specifying Node >=24 to the JSON for this
publishable package (e.g., insert "engines": { "node": ">=24" }) so the package
meets the version support policy and aligns with the existing
peerDependencies/peerDependenciesMeta settings.

In `@packages/2-sql/9-family/package.json`:
- Around line 44-51: The package.json is missing the required engines.node
constraint; add an "engines" top-level field with "node": ">=24" (e.g., insert
"engines": { "node": ">=24" }) alongside the existing
peerDependencies/peerDependenciesMeta so the package explicitly declares Node.js
24+ support.

In `@packages/3-extensions/pgvector/package.json`:
- Around line 46-56: The package.json is missing the required engines field
specifying Node 24+; add an "engines" object with "node": ">=24" to the
package.json at the root of this package (next to
"peerDependencies"/"peerDependenciesMeta") so the package declares Node >=24
support as required by the version support policy.

---

Outside diff comments:
In `@packages/2-mongo-family/1-foundation/mongo-contract/package.json`:
- Around line 1-56: The package.json for `@prisma-next/mongo-contract` is missing
the engines.node field; add an "engines" object with "node": ">=24" to
packages/2-mongo-family/1-foundation/mongo-contract/package.json (ensure the
engines.node entry is present alongside existing fields like name, version, and
exports so the package manifest meets the publishable-package jq check).

In `@packages/2-mongo-family/9-family/package.json`:
- Around line 1-65: The package.json for the Mongo family package is missing an
engines field; add an "engines" object with "node": ">=24" at the package root
(i.e., update the package manifest represented in this diff to include
"engines": { "node": ">=24" }); ensure the change is applied to the top-level
package.json for `@prisma-next/family-mongo` so publishing tools and consumers
enforce Node >=24.

In `@packages/3-extensions/sqlite/package.json`:
- Around line 1-72: The package `@prisma-next/sqlite` package.json is missing an
engines field; add an "engines" object with "node": ">=24" at the top-level of
packages/3-extensions/sqlite/package.json (next to "type" or "license") so the
file contains "engines": { "node": ">=24" } to satisfy the publishable-package
requirement.

---

Duplicate comments:
In `@packages/2-mongo-family/1-foundation/mongo-codec/package.json`:
- Around line 1-53: The package.json for `@prisma-next/mongo-codec` is missing the
engines.node declaration required by our version policy; open the package.json
and add an "engines" object with "node": ">=24" at the root (i.e., add
"engines": { "node": ">=24" }) so the package declares the minimum Node.js
version; update the file where "name": "`@prisma-next/mongo-codec`" and other
top-level keys are defined.

In `@packages/2-mongo-family/2-authoring/contract-psl/package.json`:
- Around line 1-56: The package.json for `@prisma-next/mongo-contract-psl` is
missing the top-level engines.node field required by the repo policy; edit the
package.json (the JSON object containing "name":
"`@prisma-next/mongo-contract-psl`" and "version": "0.11.0") and add an "engines"
entry with "node": ">=24" at the top level so the file includes the required
engines.node declaration for publishing.

In `@packages/2-mongo-family/3-tooling/emitter/package.json`:
- Around line 1-56: The package.json for `@prisma-next/mongo-emitter` is missing
the required engines.node field; add an "engines": { "node": ">=24" } entry to
the top-level JSON in this package.json so the package declares Node >=24 for
version policy enforcement (update the package.json object that currently
contains "name", "version", etc., by inserting the engines.node property).

In `@packages/3-extensions/arktype-json/package.json`:
- Around line 1-62: The package.json for `@prisma-next/extension-arktype-json` is
missing an engines.node declaration required by the version policy; update the
package manifest (the JSON object in package.json for the package with "name":
"`@prisma-next/extension-arktype-json`") to include an "engines" field with
"node": ">=24" so the package enforces Node >=24 at publish time.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: e354ee36-02bc-49a1-805d-e912025bfc48

📥 Commits

Reviewing files that changed from the base of the PR and between f779815 and f19d8a5.

⛔ Files ignored due to path filters (2)
  • packages/1-framework/3-tooling/cli/test/commands/init/__snapshots__/templates.test.ts.snap is excluded by !**/*.snap
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (72)
  • docker-compose.yaml
  • docs/README.md
  • docs/Supported Versions.md
  • docs/architecture docs/adrs/ADR 222 - Version support policy.md
  • package.json
  • packages/0-config/tsdown/README.md
  • packages/0-shared/extension-author-tools/package.json
  • packages/1-framework/0-foundation/contract/package.json
  • packages/1-framework/0-foundation/utils/package.json
  • packages/1-framework/1-core/config/package.json
  • packages/1-framework/1-core/errors/package.json
  • packages/1-framework/1-core/framework-components/package.json
  • packages/1-framework/1-core/operations/package.json
  • packages/1-framework/1-core/ts-render/package.json
  • packages/1-framework/2-authoring/contract/package.json
  • packages/1-framework/2-authoring/ids/package.json
  • packages/1-framework/2-authoring/psl-parser/package.json
  • packages/1-framework/2-authoring/psl-printer/package.json
  • packages/1-framework/3-tooling/cli-telemetry/package.json
  • packages/1-framework/3-tooling/cli/package.json
  • packages/1-framework/3-tooling/cli/src/commands/init/templates/env.ts
  • packages/1-framework/3-tooling/cli/test/commands/init/templates/tsconfig-env.test.ts
  • packages/1-framework/3-tooling/emitter/package.json
  • packages/1-framework/3-tooling/migration/package.json
  • packages/1-framework/3-tooling/prisma-next/package.json
  • packages/1-framework/3-tooling/vite-plugin-contract-emit/package.json
  • packages/2-mongo-family/1-foundation/mongo-codec/package.json
  • packages/2-mongo-family/1-foundation/mongo-contract/package.json
  • packages/2-mongo-family/1-foundation/mongo-value/package.json
  • packages/2-mongo-family/2-authoring/contract-psl/package.json
  • packages/2-mongo-family/2-authoring/contract-ts/package.json
  • packages/2-mongo-family/3-tooling/emitter/package.json
  • packages/2-mongo-family/3-tooling/mongo-schema-ir/package.json
  • packages/2-mongo-family/4-query/query-ast/package.json
  • packages/2-mongo-family/5-query-builders/orm/package.json
  • packages/2-mongo-family/5-query-builders/query-builder/package.json
  • packages/2-mongo-family/6-transport/mongo-lowering/package.json
  • packages/2-mongo-family/6-transport/mongo-wire/package.json
  • packages/2-mongo-family/7-runtime/package.json
  • packages/2-mongo-family/9-family/package.json
  • packages/2-sql/1-core/contract/package.json
  • packages/2-sql/1-core/errors/package.json
  • packages/2-sql/1-core/operations/package.json
  • packages/2-sql/1-core/schema-ir/package.json
  • packages/2-sql/2-authoring/contract-psl/package.json
  • packages/2-sql/2-authoring/contract-ts/package.json
  • packages/2-sql/3-tooling/emitter/package.json
  • packages/2-sql/4-lanes/query-builder/package.json
  • packages/2-sql/4-lanes/relational-core/package.json
  • packages/2-sql/4-lanes/sql-builder/package.json
  • packages/2-sql/5-runtime/package.json
  • packages/2-sql/9-family/package.json
  • packages/3-extensions/arktype-json/package.json
  • packages/3-extensions/middleware-cache/package.json
  • packages/3-extensions/mongo/package.json
  • packages/3-extensions/paradedb/package.json
  • packages/3-extensions/pgvector/package.json
  • packages/3-extensions/postgis/package.json
  • packages/3-extensions/postgres/package.json
  • packages/3-extensions/sql-orm-client/package.json
  • packages/3-extensions/sqlite/package.json
  • packages/3-mongo-target/1-mongo-target/package.json
  • packages/3-mongo-target/2-mongo-adapter/package.json
  • packages/3-mongo-target/3-mongo-driver/package.json
  • packages/3-targets/3-targets/postgres/package.json
  • packages/3-targets/3-targets/sqlite/package.json
  • packages/3-targets/6-adapters/postgres/package.json
  • packages/3-targets/6-adapters/sqlite/package.json
  • packages/3-targets/7-drivers/postgres/package.json
  • packages/3-targets/7-drivers/sqlite/package.json
  • scripts/validate-typescript-peer.mjs
  • scripts/validate-typescript-peer.test.mjs

Comment thread packages/1-framework/1-core/framework-components/package.json
Comment thread packages/1-framework/3-tooling/cli/package.json
Comment thread packages/2-mongo-family/6-transport/mongo-lowering/package.json
Comment thread packages/2-mongo-family/6-transport/mongo-wire/package.json
Comment thread packages/2-mongo-family/7-runtime/package.json
Comment thread packages/2-sql/2-authoring/contract-psl/package.json
Comment thread packages/2-sql/9-family/package.json
Comment thread packages/3-extensions/pgvector/package.json
wmadden added 4 commits June 1, 2026 12:04
…peScript, DB floors

- Bump engines.node from >=20 to >=24 on 16 publishable packages that were
  behind the root; all 62 now declare >=24 uniformly. tsdown infers its JS
  output target from this field, so the bump is load-bearing, not advisory.
- Add optional typescript peer dependency (>=5.9) to every publishable
  package. Optional because TypeScript is a dev-time tool — plain-JS
  consumers must not be forced to install it.
- Add scripts/validate-typescript-peer.mjs: source-of-truth constant
  MIN_TYPESCRIPT_PEER and lint gate that asserts every publishable package
  declares it. Wired into pnpm lint:manifests and pnpm test:scripts.
- Update target packages minServerVersion: postgres 14->17, mongo 6.0->8.0.
  MMS 11.1.0 (catalog-pinned) downloads MongoDB 8.2.x by default, so the
  mongo 8.0 floor is honest.

Signed-off-by: Will Madden <madden@prisma.io>
…c, and align test infra

- Add ADR 222 documenting the version support policy and its enforcement.
- Add docs/Supported Versions.md: user-facing reference for all version floors
  (Node >=24, TypeScript >=5.9, PostgreSQL >=17, MongoDB >=8.0, Bun >=1.2,
  Deno >=2.0, ESM-only, required tsconfig options).
- Link docs/Supported Versions.md from docs/README.md.
- Bump docker-compose.yaml Postgres image to 17-alpine so CI test infra
  matches the declared floor.

Signed-off-by: Will Madden <madden@prisma.io>
…comment

Signed-off-by: Will Madden <madden@prisma.io>
…kages

The initial commit added engines.node to the 16 packages that already
declared it (bumping >=20 → >=24), but omitted it from the 46 packages
that had no engines field. Every publishable package now uniformly
declares engines.node >=24, matching the stated policy goal.

Signed-off-by: Will Madden <madden@prisma.io>
@wmadden wmadden force-pushed the tml-1810-decide-on-minimum-typescript-version branch from 3945e1c to 460bd66 Compare June 1, 2026 10:04
@wmadden wmadden merged commit fcf9fd0 into main Jun 1, 2026
9 of 10 checks passed
@wmadden wmadden deleted the tml-1810-decide-on-minimum-typescript-version branch June 1, 2026 10:04
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