Thank you for your interest in contributing! This library is maintained by the team behind morsecodeapp.com.
git clone https://github.com/AppsYogi-com/morsecodeapp.git
cd morsecodeapp
npm install
npm run build
npm test- Fork the repository
- Create a branch for your feature:
git checkout -b feat/my-feature - Write tests before or alongside your code
- Run tests:
npm test - Build:
npm run build - Check bundle size:
npm run size - Submit a PR with a clear description
- TypeScript strict mode — no
any, handle all edge cases - Every public function must have JSDoc comments
- Prefer named exports over default exports
- Keep functions pure where possible
- All tests in
test/directory, mirroringsrc/structure - Use Vitest:
npm testornpx vitest --watch - Target 90%+ coverage on statements, branches, functions, and lines
- Create
src/core/charsets/<id>.ts(use existing ones as template) - Add the charset to the registry in
src/core/charsets/index.ts - Add the
CharsetIdunion member insrc/core/types.ts - Add tests in
test/core/charsets.test.ts - Update
README.mdcharset table
We use size-limit to guard bundle size. Check with:
npm run sizeTarget: core ≤ 5KB gzipped, audio ≤ 6KB gzipped, full ≤ 12KB gzipped.
Please open an issue on GitHub with:
- Steps to reproduce
- Expected vs actual behavior
- Your environment (Node version, browser, bundler)
- Add source files under
src/audio/ - Export new types/functions from
src/audio/index.ts - Add tests under
test/audio/— usevi.fn()to mock the Web Audio API for player tests - Run
npm run sizeto verify the audio bundle stays within the 6KB limit - Update
API.mdwith full documentation for new exports
By contributing, you agree that your contributions will be licensed under the MIT License.
Built with ❤️ by MorseCodeApp