Skip to content

Commit

Permalink
docs: add keyworks and update CONTRIBUTING.md
Browse files Browse the repository at this point in the history
  • Loading branch information
williamareynolds committed Jan 5, 2020
1 parent dc0fd5c commit aaa72ba
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 17 deletions.
69 changes: 53 additions & 16 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,61 @@
We're really glad you're reading this, because we need volunteer developers to help this project
come to fruition. 👏
Any help is welcome! Beginners and veteran coders can contribute, even if just by playing around and
hunting for bugs.

## Instructions

These steps will guide you through contributing to this project:
### Bugs

- Fork the repo
- Clone it and install dependencies
1. Search the open _and_ closed issues to see if the bug has occurred before. If there is a closed
issue, link to it from a new issue. If there is an open issue, add a comment.

git clone https://github.com/YOUR-USERNAME/typescript-library-starter
npm install
2. Include as much information as you can in your issue description, including the expected
behavior, actual behavior, version, and anything else that might be useful.

Keep in mind that after running `npm install` the git repo is reset. So a good way to cope with this
is to have a copy of the folder to push the changes, and the other to try them.
3. If you want to work on the issue yourself, see [Contributing Code](#contributing-code)

Make and commit your changes. Make sure the commands npm run build and npm run test:prod are
working.
### Feature Requests

Finally send a
[GitHub Pull Request](https://github.com/alexjoverm/typescript-library-starter/compare?expand=1)
with a clear list of what you've done (read more
[about pull requests](https://help.github.com/articles/about-pull-requests/)).
Make sure all of your commits are atomic (one feature per commit).
This library is for category-theory based typescript interfaces and common
instances of them. If you need something very specific or complex, you can
implement it in your own project.

1. Search the open _and_ closed issues to see if the feature has already been requested. If there
is a closed issue, leave a comment explaining why it should be reopened. Please do not open a new
issue for it. If there is an open issue, add a comment explaining your need. A +1 is fine too.

2. Open a new issue if you couldn't find one. Describe the instance or interface you need added. If
possible, link to a Haskell type, or some other existing documentation for the instance you're
looking for. Regarding interfaces, for now, only those included in fantasy-land or static-land will
be included. If you need something special, you can create your own using the types exported in
the [HKT][hkt-module] module.

### Contributing Code

If you're looking to write some interfaces or instances, you're welcome to!

1. Fork the repository.

2. Clone your fork, and create a new branch from develop.

3. At this point, I recommend pushing your branch and starting your pull request. This will signal
to other contributors that you're working on it. Make sure to *add the `WIP` label* and target
the develop branch.

4. Once you've made your desired changes, commit using `yarn commit`. This will ensure that the
commit format is followed correctly. Push your changes. Do not skip git hooks or your PR will be
rejected.

5. Once your changes are ready, remove the `WIP` label from your pull request. Add @williamareynolds
as a reviewer.

#### Requirements

* 100% code coverage

* All instances are property tested for all implemented categories using fast-check

* New categories/interfaces are fantasy-land *and* static-land compliant

* The style of changes generally matches the existing code

[hkt-module]: src/HKT.ts
14 changes: 13 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,19 @@
"name": "ts-cat",
"version": "0.0.0-development",
"description": "A fantasy-land and static-land compliant library providing interfaces of common type-classes and instances of them.",
"keywords": [],
"keywords": [
"typescript",
"category theory",
"monads",
"applicatives",
"functors",
"maybe",
"functional",
"functional programming",
"fantasy-land",
"static-land",
"type classes"
],
"main": "dist/ts-cat.umd.js",
"module": "dist/ts-cat.es5.js",
"typings": "dist/types/ts-cat.d.ts",
Expand Down

0 comments on commit aaa72ba

Please sign in to comment.