# Contributing to resolve-call
- [Support enquiries](#support)
- [Issues and Feature Requests](#issues)
- [Code submission process](#submit)
- [Test suite](#tests)
## Support enquiries
Please address all support enquiries over the dedicated
[resolve-call Gitter channel](https://gitter.im/ZenyWay/resolve-call).
## Issues
### Security issues
For the security of the community relying on resolve-call,
please report security issues _privately_ by email to
[security@zenyway.com](mailto:security@zenyway.com).
Please do not report security issues publicly.
Security issues are addressed with top priority.
As soon as a fix for a security issue is ready,
the issue is published in a security alert
together with the corresponding security patch and
public recognition for all contributions.
### Standard issues (not security relevant)
Requests for new features and standard issues _that are not security relevant_
are tracked as GitHub [issues in this repository](https://github.com/ZenyWay/resolve-call/issues):
* please either [submit a new issue](https://github.com/ZenyWay/resolve-call/issues/new)
after [checking](https://help.github.com/articles/using-search-to-filter-issues-and-pull-requests)
that a similar feature request or issue has not already been submitted,
* or subscribe to a related existing feature request or issue.
### Comments
Please limit comments on issues to statements adding new relevant insight
that might help working towards a resolution.
Note that leaving `+1` or equivalent comments is less effective
then subscribing to the issue.
### Report template
Please use the following template as guideline for all submitted issues,
security-relevant or not:
```
**Descriptive Title**
short description of feature request or issue
**resolve-call version:** (only for issues) first version of resolve-call affected by the issue
**Environment:** (only for issues) Node and/or Browser, including user-agent version,
in which the issue can be reproduced
**Usage example:**
(only for feature request) usage example of requested feature
**Reproduction Steps, live example:**
(only for issues) steps to reproduce the issue:
1. [First Step]
2. [Second Step]
3. [Other Steps...]
and/or links to a live example reproducing the issue
(e.g. [Plunker][plunker], [JSFiddle][jsfiddle] or [Runnable][runnable]).
**Expected behavior:**
description of expected behavior
**Observed behavior:**
(only for issues) description of observed behavior
**Screenshots**
optional screenshots,
and/or [screencasts](https://github.com/colinkeenan/silentcast).
```
## Code submission process
### Typescript
Code can be anywhere between pure JS and full [TypeScript](http://www.typescriptlang.org/),
with JS being any version supported by [TypeScript](http://www.typescriptlang.org/).
Exported code is ES5 [CommonJS](http://www.commonjs.org/).
### Forked public project
Contributions follow the [forked public project](https://git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project#Forked-Public-Project) model.
### Commit guidelines
* all commits should follow [these conventional guidelines](https://git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project#Commit-Guidelines).
* all commits must be [signed](https://help.github.com/articles/signing-commits-using-gpg/).
This is required both in the contributor's own interest,
and that of the community relying on this project:
clear code ownership is a necessary foundation
for a trusted open source project.
### Pull-Request (PR) guidelines
* a PR must close at least one [open issue](https://github.com/ZenyWay/resolve-callg/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen).
The corresponding issues should be listed in the title of the PR,
e.g. "close #21, #42".
* all PRs must pass the full resolve-call test suite and
dedicated tests for the added or fixed features
* all PRs must include the contributor's [detached signature](https://www.gnupg.org/gph/en/manual/x135.html)
of the [Individual Contributor License Agreement](./ICLA),
together with the following statement:
```
As certified by my signature, attached to this Pull-Request,
of the Individual Contributor License Agreement (ICLA),
I submit this Contribution under the terms of the ICLA,
which I fully approve and agree with, and a copy of which can be found at
https://github.com/ZenyWay/resolve-call/blob/master/ICLA.
```
This is required both in the contributor's own interest,
and that of the community relying on this project,
as it clarifies the conditions under which the contribution is made.
### Test suite
The test suites are specified by `*.spec.ts` files in the `spec/` folder.
#### run the test suite
This project's test suite builds on a
[Karma](https://karma-runner.github.io/)/[Jasmine](https://jasmine.github.io/) test framework.
The [Karma](https://karma-runner.github.io/) test runner is configured
for testing in multiple browsers: Chrome, FireFox, Safari, etc.
[CommonJS](http://www.commonjs.org/) dependencies are bundled with
[Browserify](http://browserify.org/) for the browser.
```bash
npm test
```
#### CI
CI testing runs on [TravisCI](https://travis-ci.org/ZenyWay/resolve-call).
#### test coverage reporting
Test coverage reporting is produced with
[Istanbul](https://www.npmjs.com/package/istanbul):
```bash
npm run test:coverage
```
#### debugging
Instead of running the test suite once with `npm test`,
run it in 'watch' mode and debug in the browser.
```bash
npm run test:debug
```