## Contributing
**General Rules**
- As much as possible, try to follow the existing format of markdown and code.
- Don't forget to run `npm run check`,`npm run lint` and `npm test` before submitting pull requests.
- Make sure that **100%** of your code is covered by tests.
**Conventional Commits**
Identifier |
Purpose |
feat |
Introduce a new feature |
fix |
Fix an error or defect |
chore |
General maintenance tasks (e.g., build, configuration, dependencies) |
docs |
Documentation changes (additions, updates, fixes) |
style |
Changes in code style, formatting, whitespace, etc. (no impact on functionality) |
refactor |
Code refactoring (typically, no functional changes) |
perf |
Performance optimizations |
test |
Changes related to tests (additions, updates, fixes) |
build |
Changes to the build system or external dependencies |
ci |
Changes related to continuous integration and deployment (CI/CD) |
revert |
Revert a previous commit |
merge |
Merge branches or pull requests |
release |
Commits related to version releases |
**Contributing new features**
- To ensure that there are no conflicts when merging the branch into the main branch,
- it is necessary to perform the following steps each time new development is going to be conducted on non-main branches:
- `git pull`,
- `git rebase main`
- resolve conflicts before continuing the development.
- After new features developed
- `git add .`
- `git commit -m "feat(rbtree): features`
- `feat(rbtree):` needs to be replaced by the module you have modified
- `features` must be replaced by the detailed description about the features you implemented
- `git push`
- click the `New pull request` on Github https://github.com/zrwusa/data-structure-typed/branches
**Contributing New Data Structures**
- Make your pull requests to be **specific** and **focused**. Instead of
contributing "several data structures" all at once contribute them all
one by one separately (i.e. one pull request for "RBTree", another one
for "AATree" and so on).
- Modify **README.md** for each of the data structure **with explanations** of
the algorithm and **with links** to further readings.
- Describe what you do in code using **comments**.