Repository navigation
Conversation
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 38 minutes. View limit details
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Package tarball preparation .github/workflows/engines.yml |
The workflow validates package Node engine floors, runs available prepublishOnly scripts, packs packages with their transitive workspace dependencies, and uploads the tarballs. |
Floor installation and entry-point checks .github/workflows/engines.yml |
A matrix job installs each package and its dependency tarballs with npm --engine-strict, then tests exported entry points on the declared Node floor. The smoke test tries require first and uses dynamic import for the specified import-only errors. |
Priority:
Estimated code review effort: 3 (Moderate) | ~20 minutes
Change: Feature
Sequence Diagram(s)
sequenceDiagram
participant Workflow as engines.yml
participant pnpm
participant Artifact as GitHub artifact
participant npm
participant Node as Node runtime
Workflow->>pnpm: Install dependencies and pack workspace packages
pnpm->>Artifact: Upload package tarballs
Workflow->>Artifact: Download tarballs for the floor job
Workflow->>npm: Install package tarballs with engine-strict
Workflow->>Node: Load exported entry points on the declared Node floor
Possibly related PRs
- Kikobeats/https-tls#27: Changes pnpm install behavior using environment variables also set by this workflow.
- Kikobeats/https-tls#28: Changes package installation behavior that the workflow’s minimum-Node installation checks exercise.
Merge Risk: 
Minimal · previous review ab4f6
-
The workflow has no identified issue that needs fixing before merge; normal CI checks remain appropriate.
Pre-merge checks: 
4
-
Full details: Title check
-
Explanation
The title "ci: check the package on its minimum Node.js version" matches the main change. The PR adds a GitHub Actions workflow that packs each non-private package, installs it with npm --engine-strict on the minimum Node.js version from its engines.node range, and smoke-tests its entry points. The title is specific, uses the conventional commit prefix, and fits the changeset. The PR objectives confirm the same goal.
-
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
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.
Comment @coderabbitai help to get the list of available commands.
There was a problem hiding this comment.
https-tls
Details
| Benchmark suite | Current: f0d6268 | Previous: cb471db | Ratio |
|---|---|---|---|
sortHeaders chrome |
109.5 ms (102.8-110.3) |
104.7 ms (103-108.3) |
1.05 |
sortHeaders firefox |
93.6 ms (90.1-95.5) |
90.6 ms (89.7-94.4) |
1.03 |
sortHeaders safari |
89 ms (87.3-92.4) |
88.4 ms (86.6-91.7) |
1.01 |
getBrowser top 100 user agents |
333.1 ms (323.8-338.5) |
326.8 ms (324.1-335.4) |
1.02 |
tls options top 100 user agents |
277.1 ms (259.5-283.5) |
259.6 ms (259.5-289.5) |
1.07 |
This comment was automatically generated by workflow using github-action-benchmark.
Coverage Report for CI Build 40846931071Warning No base build found for commit Coverage: 99.653%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsRequires a base build to compare against. How to fix this → Coverage Stats
💛 - Coveralls |
7714b2b to
21e7bb5
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
21e7bb5 to
f0d6268
Compare
|
Closing: not pursuing the floor CI job. |
Adds
.github/workflows/engines.yml, which checks that every published package installs and loads on the lowest Node.js version itsengines.nodeallows. A dependency bump or new syntax that raises the real floor now turns CI red instead of breaking users on that version.What it does
pnpm install, then for each non-private workspace package (the root package in a single-package repo): runprepublishOnlyif present, andpnpm packit. The floor is read from that package'sengines.nodeat run time. Nothing is hardcoded in the workflow. A range that is not>= xfails the job.npm install --engine-strictof the package tarball, plus the tarballs of the workspace packages it depends on. This is what a user does: production dependencies only, lifecycle scripts included. Any package in the tree whoseenginesexcludes the floor fails the install withEBADENGINE. Without--engine-strict, npm only warns.requireevery runtime entry inexports(ormainwhen there is noexports). Entries that are import-only fall back toimport(). Type-only entries and*patterns are skipped.It runs as its own workflow on
pull_requestand on push to the default branch, so the release logic inmain.ymlis untouched.Why npm on the floor side
pnpm needs Node 18 or later, so it cannot run on older floors, and npm ships with every Node.js version. The install happens in a fresh directory from tarballs, so devDependencies never enter the tree and the test toolchain (ava, c8, standard), which needs a newer Node, is not involved.
Limits
setup-noderesolves a major-only floor such as>= 20to the latest 20.x. The job cannot tell 20.0 from 20.12. A floor written with a minor, such as>= 20.19, is checked at the latest 20.19.x.binscripts are not executed.enginesaccept the running Node. A user on the floor can get an older dependency than a user on current Node, and the job checks the tree the floor user gets. It goes red only when no version in range supports the floor, which is the case that breaks users.Proof that it catches a violation
On microlinkhq/keyvhq#294,
@keyvhq/redisdeclares>= 20and depends onioredis@6, which requires>=20.0.0. A throwaway commit lowered@keyvhq/redisto>= 18:>= 18:Node 18 @keyvhq/redisfails, the other 15 packages pass.>= 20, after dropping that commit: all 16 jobs pass.🤖 Generated with Claude Code
Note
Low Risk
Adds CI-only workflow and scripts with no runtime or production code changes.
Overview
Adds a dedicated
enginesGitHub Actions workflow (PRs and pushes tomaster) so CI fails when a published package cannot actually run on the Node version itspackage.jsonclaims.A Pack job on Node LTS discovers non-private workspace packages, enforces
engines.nodeas a>= xfloor, runsprepublishOnlyandpnpm pack, builds a matrix of each package plus its workspace dependency tarballs, and uploads artifacts. Floor matrix jobs install that closure withnpm install --engine-stricton the declared floor Node (npm is used because pnpm cannot run on older floors), then smoke-load every runtimeexportsentry viarequire/import().Release logic in other workflows is unchanged; this is additive CI coverage for engine mismatches and broken entry points on minimum supported Node.
Reviewed by Cursor Bugbot for commit f0d6268. Bugbot is set up for automated code reviews on this repo. Configure here.