Thanks for helping improve d0ma1n.
- Open an issue before starting non-trivial work so we can discuss the approach.
- Keep runtime dependencies minimal. The core library depends only on
namespace-guard. - This tool works across all 12 ICANN-approved IDN scripts. Contributions should respect that design: avoid Latin-centric assumptions.
- New TLD coverage or IDN TLD mappings in
src/tld.ts - Output format improvements in
src/format.ts - Test coverage for edge cases
- Documentation and examples
- Landing page design improvements in
worker/page.ts - Accessibility improvements
- Fork the repo and create a branch from
main. - Implement your change with focused scope.
- Run
npm testandnpm run typecheck. - Open a PR against
mainwith a short summary of what changed and why.
src/ Core library + CLI (npm package)
worker/ Cloudflare Worker (d0ma1n.app)
tests/ Vitest test files
The core library (src/) is pure JS with no Node-specific APIs (except src/resolve.ts which uses node:dns). The worker imports core library modules directly.
npm install
npm run build
npm test
npm run typecheckTo run the worker locally:
cd worker
npx wrangler devThis project follows the Contributor Covenant.
Thank you for contributing to d0ma1n.
Paul Wood FRSA (@paultendo)