@pratherbytecraft/contributions
v1.0.0
Published
Shared contribution types, byte-ladder tiers, and supporter aggregation for Prather Bytecraft apps
Readme
@pratherbytecraft/contributions
Shared contribution types, byte-ladder tiers, and supporter aggregation for Prather Bytecraft apps. Zero runtime dependencies; types and pure functions only (no fetching — each consumer authenticates its own gist reads).
This package is the single source of truth for the shape of the unified contributions feed (contributions.json, written by pratherbytecraft-server from Ko-Fi and GitHub Sponsors webhooks) and the logic that turns it into supporter walls, feeds, and leaderboards.
Install
npm install @pratherbytecraft/contributionsExports
| Export | What it is |
|---|---|
| Contribution | The feed entry shape (donorId, transactionId, timestamp, type, fromName, message, amount, currency) |
| CONTRIBUTION_TYPES | Canonical type strings: Tip, Monthly Tip, Shop Order, Sponsorship, Monthly Sponsorship |
| isSubscriptionType / isSponsorshipType / isRecurringType | Type classifiers (subscriber streaks are Ko-Fi Monthly Tip only, by design) |
| TIERS, getTier, Tier, TierKey | The byte ladder: Bit → Byte → Kilobyte → Megabyte → Gigabyte |
| aggregateSupporters, Supporter, ACTIVE_GRACE_DAYS | Roll a contributions feed up into per-donor supporter rows (45-day active-subscriber grace) |
| isGenericName, displayName, formatTotal | Display helpers for placeholder donor names and dollar totals |
Consumers
- pratherbytecraft-server — writes entries in the
Contributionshape. - pratherbytecraft.com — supporter constellation (aggregation + tiers).
- Discrub — in-app donation feed and leaderboard (adoption planned alongside the byte-ladder tier rename).
Development
npm install
npm test # vitest
npm run build # tsup → dist (cjs + esm + d.ts)Publishing runs tests and the build automatically via prepublishOnly.
