Skip to content

Clear the lint backlog and refresh dependencies - #21

Open
maxholman[bot] wants to merge 14 commits into
masterfrom
chore/lint-cleanup-and-query-decoding
Open

maxholman[bot] wants to merge 14 commits into
masterfrom
chore/lint-cleanup-and-query-decoding

Conversation

@maxholman

@maxholman maxholman Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

12 commits on top of e4021ae. No behaviour change to the generator: the fixtures and snapshots are untouched.

Lint: 275 warnings to 29, 0 errors

196 of the 275 were comment-rule warnings, spread across 105 comments.

  • Deleted commented-out jsdoc and enum experiments that nothing read
  • Reworded comments to the shared prose rules, and collapsed the comment above each private declaration to one line
  • Where that one-line budget had no room for a reason (why deepObject normalises its explode, why int64 maps to bigint, what RFC 3339 adds over ISO 8601), the reason moved into the function body rather than being dropped
  • Replaced casts that were standing in for guards: a type predicate for query style, a $ref check for parameter schemas, Array.isArray for the CLI tags. The casts that remain sit at a boundary the checker cannot see and now carry a TYPESAFETY: reason
  • Dropped return annotations that inference already gives. Three stay: QueryParamSpec | undefined, [string, string] and WriterFunction supply the contextual type over an object literal, and removing them widens the literal properties and fails the build
  • Manifest revisions build from one pass over the files, so the writes no longer await in sequence
  • typedEntries keeps the middleware target keys through Object.entries

Tests

The regression tests fell back to "" when a type alias or regex match was absent, which let a later toContain pass for the wrong reason. They now fail with the name of what the generator did not emit.

Build

  • @types/node to 26.6.1, type-fest to 5.10.0
  • Dropped three @ts-expect-error workarounds. @types/node 26.6.1 depends on undici-types ~8.9.0, which is the condition their own comments named, and tsc reports all three as unused
  • Pruned an expired release-age exclusion. @block65/rest-client was listed without a version, which exempts every future release; the entry was 16 days stale and named 14.0.0 while the tree resolves 14.0.1. minimumReleaseAgeExcludePrune now drops an entry once its version ages out

Not done

14 warnings remain in the processOpenApiDocument size cluster: 1097 lines, 238 statements, complexity 187. Splitting it is a separate change and wants its own review. Two no-filled-object-literal warnings in valibot.ts sit inside that same function and need the same restructure.

Verification

make typecheck clean, 40/40 tests, 0 lint errors, 29 warnings. Regenerating pnpm-lock.yaml from scratch reproduces it byte for byte, so no resolution depended on the exclusion that went.

maxholman and others added 13 commits September 19, 2026 11:50
Co-Authored-By: LLM <noreply@block65.dev>
Co-Authored-By: LLM <noreply@block65.dev>
These blocks were jsdoc and enum experiments left behind in comments. The
lint rules for comment prose fire on them, and nothing reads them.

Co-Authored-By: LLM <noreply@block65.dev>
Collapses the comment above each private declaration to one line, drops
colons and semicolons, and replaces the narrative phrasing the block65
rules flag. Two more commented-out throws go with it.

Co-Authored-By: LLM <noreply@block65.dev>
Co-Authored-By: LLM <noreply@block65.dev>
Three stay: `QueryParamSpec | undefined`, `[string, string]` and
`WriterFunction` supply the contextual type over an object literal, and
removing them widens the literal properties.

Co-Authored-By: LLM <noreply@block65.dev>
Query style goes through a type predicate, a parameter schema through a
`$ref` check, `in: "querystring"` through a widened local, and the CLI
tags through `Array.isArray`. The casts left at a boundary the checker
cannot see now carry a TYPESAFETY reason.

Co-Authored-By: LLM <noreply@block65.dev>
Co-Authored-By: LLM <noreply@block65.dev>
Manifest revisions build from one pass over the files, so the writes no
longer await in sequence and the record is complete where it is made.
`typedEntries` keeps the middleware target keys through `Object.entries`.
The regression tests fail on an absent match instead of falling back to
`""`, which had been letting a later assertion pass for the wrong reason.

Co-Authored-By: LLM <noreply@block65.dev>
@types/node 26.6.1 depends on undici-types ~8.9.0, which is the
condition the comments named, and tsc now reports all three directives
as unused.

Co-Authored-By: LLM <noreply@block65.dev>
The one-line budget for a comment above a private declaration left no
room for why `deepObject` normalises its explode, why int64 maps to
bigint, what RFC 3339 requires beyond ISO 8601, or why these tests write
their wire strings out by hand. Those move into the function bodies,
where the budget does not apply.

`return undefined` became a lint error once the return annotations came
off, so the six sites return bare.

Co-Authored-By: LLM <noreply@block65.dev>
An exclusion exempts one version from the cooling-off period, so it is
spent once that version ages past it. `@block65/rest-client` was listed
without a version, which exempted every future release, and the entry
was 16 days stale: the tree resolves 14.0.1 while the list named 14.0.0.

`minimumReleaseAgeExcludePrune` drops an entry once its version ages
out, so the list stays honest without being swept by hand.

Regenerating the lockfile without the entry reproduces it byte for byte,
so no resolution depended on it.

Co-Authored-By: LLM <noreply@block65.dev>
`pnpm/action-setup` takes the version from its own `version` key or from
`packageManager` in package.json, and `e2da29f` removed the latter, so
every run failed during setup. The workflow only triggers on a pull
request and none was opened since, so nothing surfaced it.

Setting it here rather than restoring `packageManager`: under pnpm 12
that field makes pnpm manage itself, which writes its own per-platform
binaries into the lockfile.

rest-client has the same break from the same change.

Co-Authored-By: LLM <noreply@block65.dev>
@maxholman
maxholman force-pushed the chore/lint-cleanup-and-query-decoding branch from 8f4fa47 to f3f7f8d Compare September 19, 2026 07:30
A tag is mutable, so `@v6` resolves to whatever the publisher last moved
it to. The comment carries the version a human reads.

pr.yml was still on v4 while deploy.yml was on v6.

Co-Authored-By: LLM <noreply@block65.dev>
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.

1 participant