chore(deps): update all dependencies, including majors - #534
Conversation
Bumps every dependency across the workspace, the sns-sqs example and the kafka load-tests project to its latest version. Major upgrades: - typescript 5.9 -> 7.0 - @lokalise/tsconfig 3 -> 5 (1 -> 5 in the example) - @types/node 25 -> 26 - pnpm 11.1.2 -> 11.18.0 (packageManager) - @platformatic/kafka 1.31 -> 2.8 and @platformatic/dynamic-buffer 0.3 -> 0.4 (load-tests) - example only: pino 9 -> 10, zod 3 -> 4, @message-queue-toolkit/core 21 -> 26, /schemas 6 -> 7, /sns 22 -> 26, /sqs 21 -> 26 Adjustments required by the upgrades: - @lokalise/tsconfig v5 sets rootDir to `src` in build-app and drops `node` from the default `types`. Sources live in `lib` here, so each tsconfig.build.json now pins `rootDir: lib` and each tsconfig.json asks for the `node` types explicitly. - Deduped the lockfile so a single @aws-sdk/client-s3 / @smithy/types version is installed; the mixed versions made the SNS/SQS payload-store test types mutually unassignable. - Reformatted three spec files per biome 2.5.6. - Example: switched from the `zod/v3` compatibility entrypoint to zod v4, and stopped typing the shared AWS client config as SNSClientConfig since the SNS/SQS/STS config types are no longer mutually assignable. ioredis is deliberately held at ^5: redis-semaphore, a runtime dependency of @message-queue-toolkit/redis-message-deduplication-store, declares an `ioredis: ^4.1.0 || ^5` peer range and has no v6-compatible release yet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LNF5yvgsnmw6fiGZsyB3HB
📝 WalkthroughWalkthroughThe change refreshes workspace dependencies and TypeScript settings across packages. It updates SNS-SQS example imports and shared configuration typing. It also reformats selected parameterized tests without changing their behavior. ChangesWorkspace toolchain alignment
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
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 |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 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 `@package.json`:
- Line 19: Update the `engines.node` declaration in `packages/amqp/package.json`
to `>=22.0.0` so it matches the pnpm 11 requirement and CI-supported runtime
range.
In `@packages/sqs/test/consumers/SqsPermissionConsumer.spec.ts`:
- Around line 961-965: Update the waitAndRetry condition in the heartbeat
consumer test so it always waits for consumer1Counter > 0, but only requires
consumer2Counter > 0 when heartbeatEnabled is false. Preserve the existing
expectations for both counters.
🪄 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: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: efae0e6c-3791-4e4a-9c6f-63dcda7185f1
⛔ Files ignored due to path filters (2)
packages/kafka/load-tests/package-lock.jsonis excluded by!**/package-lock.jsonpnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (51)
examples/sns-sqs/lib/01-publish-message.spec.tsexamples/sns-sqs/lib/02-configurable-init.spec.tsexamples/sns-sqs/lib/common/Dependencies.tsexamples/sns-sqs/lib/common/TestMessages.tsexamples/sns-sqs/lib/common/TestPublisherManager.tsexamples/sns-sqs/lib/common/UserConsumer.tsexamples/sns-sqs/lib/common/handlers/UserCreatedHandler.tsexamples/sns-sqs/lib/common/handlers/UserUpdatedHandler.tsexamples/sns-sqs/package.jsonexamples/sns-sqs/tsconfig.jsonpackage.jsonpackages/amqp/package.jsonpackages/amqp/tsconfig.build.jsonpackages/amqp/tsconfig.jsonpackages/core/package.jsonpackages/core/tsconfig.build.jsonpackages/core/tsconfig.jsonpackages/gcp-pubsub/package.jsonpackages/gcp-pubsub/tsconfig.build.jsonpackages/gcp-pubsub/tsconfig.jsonpackages/gcs-payload-store/package.jsonpackages/gcs-payload-store/tsconfig.build.jsonpackages/gcs-payload-store/tsconfig.jsonpackages/kafka/load-tests/package.jsonpackages/kafka/package.jsonpackages/kafka/test/publisher/PermissionPublisher.spec.tspackages/kafka/tsconfig.build.jsonpackages/kafka/tsconfig.jsonpackages/metrics/package.jsonpackages/metrics/tsconfig.build.jsonpackages/metrics/tsconfig.jsonpackages/outbox-core/package.jsonpackages/outbox-core/tsconfig.build.jsonpackages/outbox-core/tsconfig.jsonpackages/redis-message-deduplication-store/package.jsonpackages/redis-message-deduplication-store/tsconfig.build.jsonpackages/redis-message-deduplication-store/tsconfig.jsonpackages/s3-payload-store/package.jsonpackages/s3-payload-store/tsconfig.build.jsonpackages/s3-payload-store/tsconfig.jsonpackages/schemas/package.jsonpackages/schemas/tsconfig.build.jsonpackages/schemas/tsconfig.jsonpackages/sns/package.jsonpackages/sns/test/consumers/SnsSqsPermissionConsumer.spec.tspackages/sns/tsconfig.build.jsonpackages/sns/tsconfig.jsonpackages/sqs/package.jsonpackages/sqs/test/consumers/SqsPermissionConsumer.spec.tspackages/sqs/tsconfig.build.jsonpackages/sqs/tsconfig.json
- packages/amqp declared `engines.node: ">=18"` while the sibling adapters declare `>=22.0.0`, CI only exercises Node 22/24, and the repo now builds against @types/node 26. Aligned it to `>=22.0.0`. - The SQS 2-consumer heartbeat test waited on `consumer2Counter > 0` unconditionally, even in the heartbeat-enabled case where it then asserts the counter is 0. That made the wait burn its full retry budget and gave no real synchronization. Guarded it the same way the SNS counterpart already is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LNF5yvgsnmw6fiGZsyB3HB
Bumps every dependency across the workspace, the
sns-sqsexample and the kafkaload-testsproject to its latest version.Major upgrades
typescript@lokalise/tsconfig@types/nodepnpm(packageManager)@platformatic/kafkakafka/load-tests@platformatic/dynamic-bufferkafka/load-testspinozod@message-queue-toolkit/core/schemas/sns/sqsMinor/patch bumps across the board:
@aws-sdk/client-*→ 3.1101.0,@lokalise/node-core→ 14.8.1,@biomejs/biome→ 2.5.6,@lokalise/biome-config→ 3.1.1,zod→ 4.4.3,rimraf→ 6.1.3,turbo→ 2.10.8,redis-semaphore→ 5.7.0,uuidv7→ 1.2.1,@supercharge/promise-pool→ 3.3.0,pg→ 8.22.0,@types/pg→ 8.20.3.Adjustments the upgrades required
@lokalise/tsconfigv5. Two breaking changes in its shared configs:build-app.jsonnow sets"rootDir": "${configDir}/src". Sources live inlib/here, so everytsconfig.build.jsonpins"rootDir": "lib". Without this the build fails withTS6059: File '.../lib/index.ts' is not under 'rootDir'.base.jsonno longer includesnodein the defaulttypes, so every packagetsconfig.jsonnow asks for it explicitly (["node", "vitest/globals"]).Lockfile dedupe. Bumping the AWS SDK dev dependencies left two
@aws-sdk/client-s3(3.1048.0 / 3.1101.0) and two@smithy/types(4.14.2 / 4.16.1) copies installed, which made the SNS/SQS payload-store test types mutually unassignable.pnpm dedupecollapses them to one version each.Formatting. biome 2.5.6 reformats the
it.each(...)blocks in three spec files. No behavior change.Example (
examples/sns-sqs). With the toolkit packages on zod 4, the example no longer compiles against thezod/v3compatibility entrypoint — switched to zod v4 imports. Also stopped annotating the shared AWS client config asSNSClientConfig, since the SNS/SQS/STS config types are no longer mutually assignable and it is passed to all three clients.Review follow-ups.
packages/amqpdeclaredengines.node: ">=18"while the sibling adapters declare>=22.0.0and CI only exercises 22/24 — aligned to>=22.0.0. The SQS 2-consumer heartbeat test waited onconsumer2Counter > 0unconditionally, then asserted the counter is0when heartbeat is enabled; guarded it the way the SNS counterpart already is.Held back
ioredisstays at^5.redis-semaphore— a runtime dependency of@message-queue-toolkit/redis-message-deduplication-store— declares"ioredis": "^4.1.0 || ^5"and has no v6-compatible release yet, so moving the dev dependencies insns/sqs/gcp-pubsubto v6 would install a version its own peer range rejects. Worth revisiting onceredis-semaphoreships ioredis 6 support.CI status
32 of 33 jobs are green, including every AWS suite against both fauxqs and LocalStack, and
amqp/gcp-pubsub/redis-message-deduplication-storeagainst their real containers.general (24.x, @message-queue-toolkit/kafka)is red, and it is not caused by this PR.PermissionConsumer.reconnect.spec.tsfails on Node 24 while passing on Node 22, and it fails at a different assertion each run (reportcalled 0 times, thenclosecalled 5 times instead of 6) — a race, not a deterministic break.The dependency evidence:
@platformatic/kafkais already 2.8.0 onmain(chore(deps): bump @platformatic/kafka from 2.6.1 to 2.8.0 #528, merged 2026-07-29). The only change to kafka's runtime tree in this PR is a pnpm peer key suffix from the dedupe —2.8.0→2.8.0(supports-color@7.2.0)— i.e. the same package, no version movement. Nothing else in that package's runtime dependencies changed.mainhas only gainedactions/setup-node6.4.0 → 7.0.0, andnode-version: 24.xresolves the newest patch at run time — so the runtime, not the dependency set, is what moved.The underlying defect is upstream.
Consumer.#handleErrorassumes every error is one of its own error classes:The test destroys the consumer stream mid-flight, the connection pool surfaces a plain
Error, and this throwsTypeError: kafkaError.findBy is not a functionas an uncaught exception out of the library's retry callback chain. A spurious early error can also satisfy the test'swaitAndRetry(() => errorReporterSpy.mock.calls.length > 0)before the reconnect loop has finished its 31s of backoff, which is what produces the varying assertion failures.Deliberately not patched here: hardening the test's synchronization would not turn the job green on its own (vitest fails a run with unhandled errors regardless of assertions), and suppressing the uncaught error would mask a genuine library bug inside an unrelated dependency PR. Tracking it upstream instead.
Verification
pnpm install --frozen-lockfile,pnpm run buildandpnpm run lint(biome +tscover lib and tests) pass for all 12 packages locally. Thesns-sqsexample andkafka/load-testsboth typecheck against their new dependencies.