# abort-controller

> An implementation of WHATWG AbortController interface.

Latest version **3.0.0** (published 2019-03-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install abort-controller
pnpm add abort-controller
yarn add abort-controller
bun add abort-controller
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.0.0 |
| Published | 2019-03-30 |
| First published | 2017-09-29 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=6.5 |
| Dependencies | 1 |
| Unpacked size | 74.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 309 |
| Author | Toru Nagashima |
| Maintainers | mysticatea |
| Keywords | w3c, whatwg, event, events, abort, cancel, abortcontroller, abortsignal, controller, signal, shim |

## Links

- npm: https://www.npmjs.com/package/abort-controller
- Repository: https://github.com/mysticatea/abort-controller
- Homepage: https://github.com/mysticatea/abort-controller#readme
- Issues: https://github.com/mysticatea/abort-controller/issues
- npm.io page: https://npm.io/package/abort-controller

## Dependencies (1)

- [event-target-shim](https://npm.io/package/event-target-shim.md) ^5.0.0

## Alternatives

- [async-exit-hook](https://npm.io/package/async-exit-hook.md) — 3.7M weekly downloads
- [evnty](https://npm.io/package/evnty.md) — 7.2K weekly downloads
- [eleventy-plugin-asciidoc](https://npm.io/package/eleventy-plugin-asciidoc.md) — 3.5K weekly downloads
- [@jswork/next-get2get](https://npm.io/package/@jswork/next-get2get.md) — 945 weekly downloads
- [@dashersw/axon](https://npm.io/package/@dashersw/axon.md) — 934 weekly downloads

## Recent versions

- 3.0.0 (latest) — 2019-03-30
- 2.0.3 — 2019-03-07
- 2.0.2 — 2019-01-22
- 2.0.1 — 2019-01-22
- 2.0.0 — 2018-12-10
- 1.1.0 — 2018-12-08
- 1.1.0-beta.0 — 2018-10-18
- 1.0.2 — 2018-03-29
- 1.0.1 — 2018-03-25
- 1.0.0 — 2017-10-03
- 0.0.0 — 2017-09-29

## README

# abort-controller

[![npm version](https://img.shields.io/npm/v/abort-controller.svg)](https://www.npmjs.com/package/abort-controller)
[![Downloads/month](https://img.shields.io/npm/dm/abort-controller.svg)](http://www.npmtrends.com/abort-controller)
[![Build Status](https://travis-ci.org/mysticatea/abort-controller.svg?branch=master)](https://travis-ci.org/mysticatea/abort-controller)
[![Coverage Status](https://codecov.io/gh/mysticatea/abort-controller/branch/master/graph/badge.svg)](https://codecov.io/gh/mysticatea/abort-controller)
[![Dependency Status](https://david-dm.org/mysticatea/abort-controller.svg)](https://david-dm.org/mysticatea/abort-controller)

An implementation of [WHATWG AbortController interface](https://dom.spec.whatwg.org/#interface-abortcontroller).

```js
import AbortController from "abort-controller"

const controller = new AbortController()
const signal = controller.signal

signal.addEventListener("abort", () => {
    console.log("aborted!")
})

controller.abort()
```

> https://jsfiddle.net/1r2994qp/1/

## 💿 Installation

Use [npm](https://www.npmjs.com/) to install then use a bundler.

```
npm install abort-controller
```

Or download from [`dist` directory](./dist).

- [dist/abort-controller.mjs](dist/abort-controller.mjs) ... ES modules version.
- [dist/abort-controller.js](dist/abort-controller.js) ... Common JS version.
- [dist/abort-controller.umd.js](dist/abort-controller.umd.js) ... UMD (Universal Module Definition) version. This is transpiled by [Babel](https://babeljs.io/) for IE 11.

## 📖 Usage

### Basic

```js
import AbortController from "abort-controller"
// or
const AbortController = require("abort-controller")

// or UMD version defines a global variable:
const AbortController = window.AbortControllerShim
```

If your bundler recognizes `browser` field of `package.json`, the imported `AbortController` is the native one and it doesn't contain shim (even if the native implementation was nothing).
If you wanted to polyfill `AbortController` for IE, use `abort-controller/polyfill`.

### Polyfilling

Importing `abort-controller/polyfill` assigns the `AbortController` shim to the `AbortController` global variable if the native implementation was nothing.

```js
import "abort-controller/polyfill"
// or
require("abort-controller/polyfill")
```

### API

#### AbortController

> https://dom.spec.whatwg.org/#interface-abortcontroller

##### controller.signal

The [AbortSignal](https://dom.spec.whatwg.org/#interface-AbortSignal) object which is associated to this controller.

##### controller.abort()

Notify `abort` event to listeners that the `signal` has.

## 📰 Changelog

- See [GitHub releases](https://github.com/mysticatea/abort-controller/releases).

## 🍻 Contributing

Contributing is welcome ❤️

Please use GitHub issues/PRs.

### Development tools

- `npm install` installs dependencies for development.
- `npm test` runs tests and measures code coverage.
- `npm run clean` removes temporary files of tests.
- `npm run coverage` opens code coverage of the previous test with your default browser.
- `npm run lint` runs ESLint.
- `npm run build` generates `dist` codes.
- `npm run watch` runs tests on each file change.

---
_Source: https://npm.io/package/abort-controller · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
