fix(deps): pin effect to 4.0.0-rc.112 and add sql companions - #264
Conversation
alchemy@2.0.0-beta.74's companions (@effect/sql-d1, @effect/sql-sqlite-do, @effect/vitest at >=4.0.0-rc.110) now resolve to 4.0.0-rc.112. Those packages peer effect@^4.0.0-rc.112, which rejects the previous rc.111 pin in pre-release semver (rc.111 < rc.112). npm hoists the freshly resolved rc.112 above the pinned rc.111, splitting the effect tree and causing alchemy to see the wrong version. Pin all effect-ecosystem packages to 4.0.0-rc.112 across workspace packages and examples. Add @effect/sql-d1 and @effect/sql-sqlite-do as exact-pinned dependencies of @prisma/composer (same approach as #196 and #203) so future registry releases of those packages do not repeat the break. Add @effect/sql-sqlite-do to CONSTELLATION_OVERRIDES in the check-npm-effect-resolution script. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Kristof Siket <siket@prisma.io>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (19)
Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Summary by CodeRabbit
WalkthroughUpdated Effect dependencies from 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files. (18 skipped: 18 unsupported.) ✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
Comment |
commit: |
What and why
alchemy@2.0.0-beta.74's companions (
@effect/sql-d1,@effect/sql-sqlite-do,@effect/vitest) carry floating lower bounds (>=4.0.0-rc.110) that now resolve to4.0.0-rc.112. Those packages peereffect@^4.0.0-rc.112, which rejects4.0.0-rc.111in pre-release semver (rc.111 < rc.112). npm then hoists a second copy of effect@rc.112 above the pinned rc.111, splitting the effect tree and causing alchemy to resolve the wrong version -- trippingDEPS.EFFECT_VERSION_CONFLICTorALCHEMY_BIN_MISSINGat startup.What changed
4.0.0-rc.111to4.0.0-rc.112across all workspace packages and examples.@effect/sql-d1and@effect/sql-sqlite-doadded as exact-pinneddependenciesof@prisma/composer(same approach as fix(deps): pin effect and its companion packages so standalone npm installs get one working effect #196 and feat(deps): upgrade alchemy to beta.67 and effect to beta.103 #203), so they are part of the install graph that npm/pnpm/bun deduplicate against.@effect/sql-sqlite-doadded toCONSTELLATION_OVERRIDESinscripts/check-npm-effect-resolution.mjsso it is covered by the check.docs/guides/getting-started.mdoverrides block updated to rc.112 with@effect/sql-sqlite-doadded.pnpm install --no-frozen-lockfile): zero remainingspecifier: 4.0.0-rc.111entries in public package specifiers.Failing evidence
Validation matrix
Tested against local tarballs of
@prisma/composer@0.14.0,@prisma/composer-cli@0.14.0,@prisma/composer-prisma-cloud@0.14.0(two-package shape: composer + cli):node_modules/alchemyat rootnode_modules/.bin/alchemyCONFIG.FILE_MISSINGCONFIG.FILE_MISSINGCONFIG.FILE_MISSINGpnpm note:
node_modules/.bin/alchemyabsence under pnpm is expected and pre-existing behavior -- pnpm only links binaries of direct dependencies. The deploy probe still exitsCONFIG.FILE_MISSINGbecause@prisma/composer-cliis a direct dependency and its bin invokes alchemy from the store.npm three-package shape (
@prisma/composer+@prisma/composer-cli+@prisma/composer-prisma-cloud+@prisma/orm-postgres): npm@10.9.8 crashes with"Cannot read properties of null (reading 'edgesOut')"due to a pre-existing arborist bug in npm itself -- also reproducible onmainbefore these changes. Not introduced by this PR.Precedent
#196 (d30d751) and #203 established exact-pinning
@effect/sql-*companions in@prisma/composerdependencies as the correct fix for this class of break.Recurrence
This will happen again each time alchemy bumps its companion floating deps to a newer rc. A release gate that runs
node scripts/check-npm-effect-resolution.mjsagainst a consumer install on every alchemy version bump (before publishing) would catch it before users hit it.