chore(deps): refresh the five in-range dependencies (lockfile only) - #4
Merged
Conversation
Take the five dependencies whose newest release already satisfies the declared range, as a lockfile-only change with package.json untouched: @asyncapi/parser 3.6.0 -> 3.6.1 hono 4.12.27 -> 4.12.33 mqtt 5.15.1 -> 5.15.2 (dev) @types/react 19.2.17 -> 19.2.18 (dev) @types/react-dom 19.2.3 -> 19.2.4 (dev) A version bump and a range change are different acts. The first says "take the newest build of what we already declared"; the second says "we now require something we previously did not". Only the first is routine, so only the first is bundled here. `bun update` does not respect that line: it rewrote seven package.json floors as a side effect, including for ajv, yaml, react, react-dom, typescript and biome, none of which changed version at all. Those floors are declared intent, so they were restored and the lockfile refresh kept on its own. Gates: check-docs, lint, typecheck, demo-app:build and full bun test each exit 0, against a same-command baseline taken on main beforehand. @asyncapi/parser 3.6.1 adds a v3 channel-parameter-vs-address-placeholder validation rule, the one item here that could have rejected a previously-accepted fixture; it does not. The four remaining outdated packages each need a range change and are decided separately in D-021 rather than swept in: - mqtt-pattern 2.1.1 is declined. Its runtime is byte-identical to 1.2.0 (same sha256 once CRLF/LF is normalized); the whole major is .d.ts files plus a ts-toolbelt production dependency. Its types are strictly worse for offbook's call shape, which computes patterns at runtime, so MqttParameters<string> resolves to a type with no properties. - aedes 1.1.1 is deferred behind R-006/R-007. Those spikes measure the current Aedes defaults and ws stack, and 1.x replaces the constructor with a static async createBroker, makes the default export a function that only throws, and changes drainTimeout from 0 to 60000. - @biomejs/biome 2.5.6 and typescript 7.0.2 are both viable and both deferred to their own PRs. Records, in AGENTS.md working notes, that `biome migrate` is not safe to run unattended here: it rewrites "recommended": true as "preset": "none", which deletes the rule set rather than preserving it, leaving `biome check .` green on code containing any, == and unused vars.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refreshes the five dependencies whose newest release already satisfies the declared range, as a lockfile-only change with
package.jsonuntouched. Records the review of all nine outdated packages as D-021.@asyncapi/parserhonomqtt@types/react@types/react-domA version bump and a range change are different acts. The first says "take the newest build of what we already declared"; the second says "we now require something we previously did not". Only the first is routine, so only the first is bundled here.
bun updatedoes not respect that line: it rewrote sevenpackage.jsonfloors as a side effect, including forajv,yaml,react,react-dom,typescriptandbiome, none of which changed version at all. Those floors are declared intent, so they were restored and the lockfile refresh kept on its own.Gates
check-docs,lint,typecheck,demo-app:buildand fullbun testeach exit 0, against a same-command baseline taken onmainbeforehand.@asyncapi/parser3.6.1 adds a v3 channel-parameter-vs-address-placeholder validation rule, the one item here that could have rejected a previously-accepted fixture. It does not.The four not taken
Each needs a range change, and each is decided on evidence rather than swept in.
mqtt-pattern2.1.1 — declined. Its runtime is byte-identical to 1.2.0:index.jsin the two tarballs has the same sha256 (63fbbfd2…) once CRLF/LF is normalized. The entire major is.d.tsfiles plus ats-toolbeltproduction dependency. And the types are strictly worse for this codebase's call shape:execbecomesexec<P extends string>(p: P, t: string): MqttParameters<P> | null, but offbook computes patterns at runtime viatoPattern(c.topic), soPinfers as the generalstringandMqttParameters<string>resolves to a type with no properties:The repo typechecks under v2 only because the 9-line ambient shim in
src/registry/mqtt-pattern.d.tsshadows the shipped types, or because the existingas Record<string, string>cast absorbs them. Deleting that shim is the only thing the bump could buy, and the shim is the more accurate declaration. Both paths verified.aedes1.1.1 — deferred behind R-006/R-007. 1.x is"type": "module",engines.node >= 20, exportsclass Aedesas a named export, and sets its default export to a function whose entire body throws:src/broker/index.tsdoesimport Aedes from "aedes"andnew Aedes({...}), so it hits that throw. The constructor also becomesstatic async createBroker(opts)anddrainTimeoutchanges default from0to60000. The deciding reason to defer rather than migrate: R-006 (WS fidelity) and R-007 (capture the browser application'sconnect()) both measurebroker/'s current Aedes defaults and the ws stack underneath them, so moving that floor first would invalidate the thing being measured.aedes-server-factoryis not a maintained path to 1.x either, having last published 2021-06-28, nearly three years before aedes 1.0.@biomejs/biome2.5.6 andtypescript7.0.2 — both viable, both deferred to their own PRs. TypeScript 7 is #5, stacked on this one.biome migrateis not safe to run unattended hereWorth reading even if you skip the rest. Pointed at this repo's v1 config it rewrites
which does not preserve the rule set, it removes it. Verified by measurement rather than by reading the output: a file containing
any,==and an unusedvardraws zero diagnostics under the migrated config, and four (noExplicitAny×2,noDoubleEquals,noUnusedVariables) oncepresetis corrected to"recommended".The failure mode is the dangerous kind:
biome check .exits 0, CI stays green, and the lint gate is gone. This is now recorded in the AGENTS.md working notes alongside the other gate hazards.For whoever takes the biome 2 PR: with the config corrected by hand it is 17
assist/source/organizeImports(named-import sorting, auto-fixable churn from v2's import-organizer overhaul), 14lint/correctness/noUnsafeOptionalChaining, and 4 assorted. The transport-isolation rule survives the move out ofnurseryintostyleand was re-verified to still error outsidesrc/broker/and stay exempt inside it. The 14 correctness findings are real but low-severity and confined to test files, all the same(x[0]?.payload as T).propshape: a?.guard immediately dereferenced, so a genuine failure surfaces as a confusingTypeErrorinstead of a clean assertion diff.