TypeScript tooling that validates app submissions and generates the static marketplace API.
nvm use # Node 20 (see ../.nvmrc)
npm cinpm test— run the vitest suitenpm run typecheck—tsc --noEmitnpm run lint/npm run format:checknpx tsx src/cli/validate.ts ../apps— validate every releasenpx tsx src/cli/generate-api.ts --apps ../apps --out ../_site— build the API (reads../data/downloads-baseline.jsonand../data/created.jsonwhen present)npx tsx src/cli/fetch-downloads.ts --out ../data/downloads.json— refresh release download data
info-xml.ts— parse + structurally validateappinfo/info.xmlpackage-reader.ts— extractinfo.xmlfrom a.tar.gzscan.ts— walkapps/{appId}/releases/{version}/validate.ts— per-release rules + changeset immutability/collision rulesgenerate.ts— build the catalog and writeapi/v1/**downloads-generate.ts— match release binaries, normalize and writeapi/v1/downloads.json; also mergesdata/downloads-baseline.json(historical totals) on top of live countscreated.ts— git-backed release timestamps, overridable per release viadata/created.jsoncategories.ts— the hardcoded, English-only category list
Add the check to validateRelease (single release) or validateChangeset
(cross-release/PR) in src/validate.ts, throwing ValidationError with a
publisher-friendly message, and add a test under test/.
Edit the CATEGORIES array in src/categories.ts.