polymarket-api
Version:
Node.js SDK for querying Polymarket prediction market data. Get new prediction markets, resolved predictions, position tokens, and trading data from Polymarket using Bitquery APIs.
278 lines (202 loc) • 6.53 kB
Markdown
# Contributing to Polymarket API
Thank you for your interest in contributing to the Polymarket API npm package! This document provides guidelines and instructions for contributing.
## 🤝 How to Contribute
We welcome contributions of all kinds, including:
- Bug fixes
- New features
- Documentation improvements
- Code optimizations
- Test coverage
- Examples and use cases
## 📋 Getting Started
### Prerequisites
- Node.js (v14 or higher)
- npm or yarn
- Git
### Development Setup
1. **Fork the repository**
2. **Clone your fork**
```bash
git clone https://github.com/bitquery/polymarket-api
cd polymarket-api
```
3. **Install dependencies**
```bash
npm install
```
4. **Create a branch**
```bash
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix
```
## 🔧 Development Guidelines
### Code Style
- Follow existing code style and formatting
- Use ES6+ features where appropriate
- Add JSDoc comments for all functions
- Keep functions focused and single-purpose
- Use meaningful variable and function names
### Function Documentation
All functions must include JSDoc comments following this format:
```javascript
/**
* functionName
* Brief description of what the function does
* @param {type} paramName - parameter description
* @param {type} [optionalParam] - optional parameter description
* @returns {type} - return value description
*/
```
### Error Handling
- Always use try-catch blocks for async operations
- Provide meaningful error messages
- Re-throw errors to allow caller handling
- Document potential errors in JSDoc comments
### Testing
- Add tests for new features
- Ensure existing tests pass
- Test error cases and edge conditions
- Test with different parameter combinations
## 📝 Commit Guidelines
### Commit Message Format
Use clear, descriptive commit messages:
```
feat: add function to get market prices
fix: handle null responses in getNewQuestions
docs: update README with new examples
refactor: simplify query construction
test: add tests for streaming functions
```
### Commit Types
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation changes
- `style`: Code style changes (formatting, etc.)
- `refactor`: Code refactoring
- `test`: Adding or updating tests
- `chore`: Maintenance tasks
## 🚀 Pull Request Process
1. **Update Documentation**
- Update README.md if adding new features
- Add JSDoc comments for new functions
- Update examples if API changes
2. **Test Your Changes**
- Test all new functionality
- Ensure existing functionality still works
- Test error cases
3. **Create Pull Request**
- Use a clear, descriptive title
- Provide a detailed description of changes
- Reference any related issues
- Include examples of how to use new features
4. **PR Checklist**
- [ ] Code follows project style guidelines
- [ ] All functions have JSDoc comments
- [ ] Error handling is implemented
- [ ] Documentation is updated
- [ ] Tests pass (if applicable)
- [ ] No console.log or debug code left
## 🎯 Adding New Features
### Query Functions
When adding a new query function:
1. Create the query file in `queries/` directory
2. Export both query and stream versions
3. Add the function to `index.js` with:
- Try-catch error handling
- JSDoc documentation
- Export in the export statement
Example structure:
```javascript
// queries/newFeatureQuery.js
export const newFeatureQuery = (params) => {
// GraphQL query
};
export const newFeatureStream = {
// Stream configuration
};
```
```javascript
// index.js
/**
* getNewFeature
* Description of the new feature
* @param {string} token - your Bitquery OAuth token
* @param {type} param - parameter description
* @returns {Promise<Array>} - return description
*/
const getNewFeature = async (token, param) => {
try {
const result = await queryRunner(newFeatureQuery(param), token);
return result.data.EVM.Events;
} catch (error) {
throw error;
}
}
```
### Streaming Functions
When adding streaming functionality:
1. Ensure the stream query is exported from the query file
2. Add streaming function with proper options handling
3. Include error handling and documentation
## 🐛 Reporting Bugs
### Before Reporting
1. Check if the bug has already been reported
2. Verify it's not a configuration issue
3. Test with the latest version
### Bug Report Template
```markdown
**Describe the bug**
A clear description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Call function '...'
2. With parameters '...'
3. See error
**Expected behavior**
What you expected to happen.
**Error message**
Full error message if applicable.
**Environment:**
- Node.js version:
- Package version:
- Bitquery token status:
**Additional context**
Any other relevant information.
```
## 💡 Feature Requests
We welcome feature requests! When suggesting a feature:
1. **Check existing issues** - Your feature might already be requested
2. **Describe the use case** - Explain why this feature would be useful
3. **Provide examples** - Show how you'd use the feature
4. **Consider implementation** - If possible, suggest how it might work
## 📚 Documentation Contributions
Documentation improvements are highly valued:
- Fix typos and grammar
- Improve clarity and examples
- Add use cases and tutorials
- Translate documentation (if applicable)
- Update outdated information
## 🔍 Code Review
All contributions go through code review:
- Be open to feedback and suggestions
- Respond to review comments promptly
- Make requested changes or discuss alternatives
- Be respectful and constructive in discussions
## 📜 License
By contributing, you agree that your contributions will be licensed under the same license as the project (ISC).
## 🙏 Recognition
Contributors will be recognized in:
- README.md contributors section (if added)
- Release notes for significant contributions
- Project documentation
## ❓ Questions?
If you have questions about contributing:
1. Check existing issues and discussions
2. Review the codebase and examples
3. Open an issue with your question
4. Reach out to maintainers
## 🎉 Thank You!
Your contributions make this project better for everyone. Thank you for taking the time to contribute!
---
**Remember**: Good contributions are not just about code - they're about making the project more useful, reliable, and accessible for all users.