chore: sync sponsors with new upstream schema - #71
Conversation
Port the sync-sponsors changes from middleapi/orpc#1897: links arrive pre-tracked with per-sponsor rel tokens, slot sponsors render as featured full-width cards above the tier tables, tier headings use plural titles with slot-aware image sizing, the past-sponsors line links to the sponsor wall SVG, and section replacement trims to a single trailing newline so re-syncs stay idempotent against eslint's markdown fixer.
@standardserver/aws-lambda
@standardserver/core
@standardserver/fastify
@standardserver/fetch
@standardserver/node
@standardserver/peer
@standardserver/shared
commit: |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Merging this PR will not alter performance
Comparing Footnotes
|
There was a problem hiding this comment.
ℹ️ Minor suggestion only.
Reviewed changes
The PR ports the sponsor-sync behavior from middleapi/orpc#1897 into scripts/sync-sponsors.ts and regenerates the ## Sponsors section across all 8 READMEs (root symlinks to packages/core/README.md; the generator script is the other changed file). I read the full generator diff and verified the regenerated README output end-to-end across core, fastify, and the tests/bun files — the blocks are structurally identical (same generator writes every file), so the remaining generated READMEs carry the same changes. Everything lines up with the PR description.
- Ad slot cards — sponsors with a
slotvalue now render as full-width featured cards (buildSlotCards) above the tier tables and are excluded from the tables, so no one appears twice. - Tracking/
rel—withTracking(?ref=orpc) is removed since links arrive pre-tracked upstream;relis nownoopenerplus the sponsor's own tokens viarelAttribute, on both card and tier-link emission sites. - Tier sizing — image widths rank against all active tiers (
sizeTierLevels), keeping the tables at their prior 167/139/119 widths even though the top tiers now render as cards. - Headings / past sponsors — tier headings use the new plural
tierTitlePlural; the past-sponsors line links to the sponsor-wall SVG. - Idempotency —
replaceSponsorsSectiontrims to a single trailing newline, ending the README-EOF/elint-fixer tug-of-war the author describes.
One minor suggestion, inline. This is otherwise a careful, well-scoped chore PR.
DeepSeek Flash (default — pick a model for stronger reviews) | 𝕏
| const escapedName = escapeHtml(displayName) | ||
|
|
||
| lines.push(` <td align="center"><a href="${escapeHtml(href)}" target="_blank" rel="sponsored noopener" title="${escapedName}"><img src="${escapeHtml(sponsor.avatar)}" width="${imageSize}" alt="${escapedName}"/><br />${escapedName}</a></td>`) | ||
| lines.push(` <td align="center"><a href="${escapeHtml(href)}" target="_blank" rel="${relAttribute(sponsor)}" title="${escapedName}"><img src="${escapeHtml(sponsor.avatar)}" width="${imageSize}" alt="${escapedName}"/><br />${escapedName}</a></td>`) |
There was a problem hiding this comment.
Nit: sponsor.rel is interpolated into the rel="..." attribute unescaped, unlike every other trusted-but-escaped field on this line (and the card site on L97). If a sponsor's rel ever carried a ", it would break out of the attribute. Wrap the value with the existing escapeHtml helper for consistency with the rest of the templated line.

Ports the sponsor-sync changes from middleapi/orpc#1897 to this repo's
scripts/sync-sponsors.tsand regenerates the sponsors section in every README. Slot sponsors now appear as featured full-width cards above the tier tables, and every link carries the tracking andreltokens the upstream data provides.Changes
ref=orpc— they arrive pre-tracked from upstream, and each link'srelisnoopenerplus the sponsor's own tokens instead of a hardcodedsponsored noopener.The PR's
apps/contentparts (slots.tsgeneration, ad-card component) have no counterpart here and were skipped.Testing
pnpm run sponsors:syncpasses with eslint at--max-warnings=0, and a second run leaves every README byte-identical.scripts/sync-sponsors.tspasses eslint andtsc --noEmit.