This repository is a public Counterparty collection registry and normalizer. Keep collection membership and editorial metadata here; do not add chain facts, market activity, wallet behavior, or marketplace policy.
Before changing an adapter, read docs/adapters.md and the README in its
collection or aggregator folder.
- Source precedence is
collections/<slug>/assets.json, then that folder'sadapter.ts, then the providers underaggregators/. Never add a silent fallback after a selected source fails. - Keep
meta.jsoneditorial only. It must not contain assets, adapter names, provider URLs,feed, orsource_class. - Put collection-operated code beside its metadata. Put third-party provider
code in
aggregators/<provider>/adapter.ts. Exportasync load({ collection, fetchJson, fetchText, cache }). - Use the injected bounded
fetchJsonorfetchText, not globalfetch. - Return an asset array or a valid feed-v1 document.
- Add representative fixtures and deterministic tests for every adapter.
- Do not add npm dependencies, secrets, writes, subprocesses, or reliance on a live endpoint in unit tests.
- Never execute contributed adapter code with
pull_request_target, write permissions, persisted Git credentials, or repository secrets. Run with Node.js 22:
node .github/validate.ts
node .github/check-source-coverage.ts
node .github/run-tests.ts
node scripts/export.tsThe export command writes ignored output under dist/. Do not commit generated
output. If the adapter or normalized contract changes, update schemas, tests,
README files, and the adapter guide together.