Thanks for your interest in contributing! This guide will help you get started.
git clone https://github.com/gambletan/unified-channel-js.git
cd unified-channel-js
npm install
npm testsrc/
types.ts # Core types (UnifiedMessage, OutboundMessage, etc.)
adapter.ts # ChannelAdapter interface
middleware.ts # Middleware interface + built-in middleware
manager.ts # ChannelManager orchestrator
adapters/ # One file per channel adapter
tests/ # Vitest test files
- Create
src/adapters/<channel>.tsimplementingChannelAdapter - Add tests in
tests/<channel>.test.ts - Update the channels table in
README.md - Add peer dependency entry in
package.json(if an SDK is required)
- TypeScript strict mode
- ESM imports only (
import/export, norequire) - Avoid
any— useunknownor proper types - Keep adapters self-contained (one file per channel)
npm test # Run all tests
npm run test:watch # Watch mode
npm run build # Type-check + compileAll PRs must pass tests and type-check before merge.
Use conventional commits:
feat: add WeChat adapter
fix: handle reconnection in MattermostAdapter
docs: update quick start example
- Fork the repo and create a feature branch
- Keep PRs focused — one feature or fix per PR
- Fill out the PR template
- Ensure CI passes
By contributing, you agree that your contributions will be licensed under the MIT License.