# WHATWG Fetch TypeScript Definitions

[![CircleCI][circleci-badge]][circleci]
[![Code Coverage][codecov-badge]][codecov]
[![NPM Version][npm-version-badge]][npm]
[![License][license-badge]][license]
[![NPM Weekly Downloads][npm-downloads-week-badge]][npm]
[![NPM Monthly Downloads][npm-downloads-month-badge]][npm]
[![NPM Yearly Downloads][npm-downloads-year-badge]][npm]
[![NPM Total Downloads][npm-downloads-total-badge]][npm]
[![Node Version][node-version-badge]][node-version]
[![Semantic Release][semantic-release-badge]][semantic-release]
[![Commitizen friendly][commitizen-badge]][commitizen]
[![Conventional Commits][coventional-commits-badge]][coventional-commits]

> WHATWG Fetch TypeScript Definitions

## Usage

```sh
yarn add @ef-carbon/fetch
```

Read the [documentation][docs] for API guidance.
View the [presentation][presentation] for a quick overview of the project.

## Development

The project attempts to make the workflow as frictionless as possible. Any suggestions to improve the work processes are
welcomed :metal:

### Getting Started

Get up and running using [yarn][yarn]:

```sh
yarn install
yarn build
```

### IDE

Install [Atom][atom] [IDE][atom-ide] with the [TypeScript][atom-ide-typescript] and [XTerm][atom-xterm] plugins

### Hacking

Run `yarn watch:test`. Unit tests will re-run after any changes to the source code.

### Testing

The unit tests use [Jest][jest].

### Releases

Releases are performed automatically via [`semantic-release`][semantic-release]. When commits are merged to `master`
the [Conventional Commits][coventional-commits] are read and version number determined automatically.

### Scripts

There are various scripts available that provide the workflow steps for the project:

| Name               | Description                                                                                     |
| ------------------ | ----------------------------------------------------------------------------------------------- |
| `commit`           | Starts the [commitizen][commitizen] CLI                                                         |
| `distclean`        | Returns the project to initial state                                                            |
| `clean`            | Returns the project to postinstall state                                                        |
| `build`            | Builds the project                                                                              |
| `build:ts`         | Builds the TypeScript files into the JavaScript output                                          |
| `format`           | Formats the project                                                                             |
| `lint`             | Lints the project                                                                               |
| `lint:fix`         | Fixes up simple linting rule violations automatically                                           |
| `lint:ci`          | Validates the CI configuration file                                                             |
| `lint:ts`          | Performs linting of TypeScript files                                                            |
| `lint:ts:fix`      | Fixes up simple rule violations in TypeScript files                                             |
| `lint:format`      | Checks the formatting of the TypeScript source code                                             |
| `lint:format:fix`  | Automatically fixes up formatting violations                                                    |
| `lint:commit`      | Makes sure the commits follow the [conventional commits][coventional-commits] style             |
| `watch:ts`         | Watches the TypeScript source files for changes                                                 |
| `watch:test`       | Re-runs unit tests on any file changes                                                          |
| `test`             | Tests the project                                                                               |
| `coverage`         | Provides test coverage statistics for the project                                               |
| `ci`               | Runs a set of commands that are needed to pass the CI workflow                                  |
| `fix`              | Performs formatting and linting fixes                                                           |
| `docs`             | Builds API documentation                                                                        |
| `docs:open`        | Opens up the built API documentation in the default browser                                     |

## Reports

### Coverage

[![Code Coverage Graph][codecov-graph]][codecov]

[presentation]: https://gitpitch.com/ef-carbon/fetch
[docs]: https://ef-carbon.github.io/fetch/
[yarn]: https://yarnpkg.com
[npm]: https://www.npmjs.com/package/@ef-carbon/fetch
[codecov]: https://codecov.io/gh/ef-carbon/fetch
[codecov-badge]: https://img.shields.io/codecov/c/token/Re0IsMvcF1/github/ef-carbon/fetch.svg
[codecov-graph]: https://codecov.io/gh/ef-carbon/fetch/branch/master/graphs/commits.svg?token=Re0IsMvcF1
[npm-version-badge]: https://img.shields.io/npm/v/@ef-carbon/fetch.svg
[npm-downloads-week-badge]: https://img.shields.io/npm/dw/@ef-carbon/fetch.svg
[npm-downloads-month-badge]: https://img.shields.io/npm/dm/@ef-carbon/fetch.svg
[npm-downloads-year-badge]: https://img.shields.io/npm/dy/@ef-carbon/fetch.svg
[npm-downloads-total-badge]: https://img.shields.io/npm/dt/@ef-carbon/fetch.svg
[license]: https://choosealicense.com/licenses/mit/
[license-badge]: https://img.shields.io/npm/l/@ef-carbon/fetch.svg
[node-version]: https://nodejs.org/en/download/releases/
[node-version-badge]: https://img.shields.io/node/v/@ef-carbon/fetch.svg
[github-commits-badge]: https://img.shields.io/github/commits-since/ef-carbon/fetch/latest.svg
[atom]: https://atom.io/
[atom-ide]: https://ide.atom.io/
[jest]: https://facebook.github.io/jest/
[atom-ide-typescript]: https://github.com/atom/ide-typescript
[atom-xterm]: https://atom.io/packages/atom-xterm
[circleci]: https://circleci.com/gh/ef-carbon/fetch/tree/master
[circleci-badge]: https://circleci.com/gh/ef-carbon/fetch.svg?style=svg&circle-token=40cd2179a7a2f560d7897f7ec3e54143e56cabd4
[semantic-release]: https://github.com/semantic-release/semantic-release
[semantic-release-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[commitizen]: http://commitizen.github.io/cz-cli/
[commitizen-badge]: https://img.shields.io/badge/commitizen-friendly-brightgreen.svg
[coventional-commits]: https://conventionalcommits.org
[coventional-commits-badge]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg
