We welcome contributions! This project follows the Contributor Covenant code of conduct.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/durable-streams/durable-streams/llms.txt
Use this file to discover all available pages before exploring further.
Development Setup
Prerequisites
- Node.js >= 22
- pnpm 10.25.0 or higher
- Git
Clone and Install
Common Commands
Development Server
Testing
Testing Philosophy
Durable Streams prioritizes conformance tests over unit tests:- Server Conformance Tests - Verify that the server correctly implements the Durable Streams protocol (language-agnostic)
- Client Conformance Tests - Test that client implementations correctly interact with the protocol
- Unit Tests - Only use when absolutely necessary for internal utilities or edge cases
Running Tests
Testing Your Implementation
Use the conformance test suite to verify your server implements the protocol correctly:Contribution Workflow
Fork and clone the repository
Fork the durable-streams/durable-streams repository and clone your fork locally.
Make your changes
Make your changes, following the code style guidelines:
- Follow existing patterns in the codebase
- Use TypeScript strict mode
- Format with Prettier (runs on commit via lint-staged)
- Lint with ESLint
Write or update tests
For bug fixes or new features, prefer conformance tests:
- Evaluate: How could a conformance test have caught this?
- Write test: Add to appropriate test case file in
packages/client-conformance-tests/test-cases/ - Verify: Run tests to ensure they fail initially
- Fix: Implement your changes
- Verify: Ensure all tests pass
Add a changeset
We use changesets for version management:Note: All packages are pre-1.0. Use
patch for changesets, not minor, unless it’s a breaking change.Commit your changes
Commit your changes with a descriptive message:The pre-commit hooks will automatically format and lint your code.
Code Style
- Follow existing patterns in the codebase
- Use TypeScript strict mode for TypeScript code
- Format with Prettier (runs automatically on commit via lint-staged)
- Lint with ESLint
- Ensure all tests pass before submitting
Test-Driven Bug Fixes
When fixing a bug:- Identify: What protocol or client behavior was incorrect?
- Write test: Add a failing conformance test that demonstrates the bug
- Run test: Verify it fails for affected clients
- Fix: Update implementations to fix the issue
- Verify: All clients now pass the conformance test
- The fix works across all client implementations
- Regression protection for the specific scenario
- Documentation of expected behavior through tests
Release Process
Versioning and publishing are handled automatically by CI:Getting Help
If you have questions or need help:- Check the Protocol Specification
- Read the README
- Open an issue on GitHub