# ember-destroyable-polyfill

> Polyfill for RFC 580: Destroyables

Latest version **2.0.3** (published 2021-01-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install ember-destroyable-polyfill
pnpm add ember-destroyable-polyfill
yarn add ember-destroyable-polyfill
bun add ember-destroyable-polyfill
```

## 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 | 2.0.3 |
| Published | 2021-01-22 |
| First published | 2020-04-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | 10.* \|\| >= 12 |
| Dependencies | 3 |
| Unpacked size | 32 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Jan Buschtöns |
| Maintainers | rwjblue, pzuraq, buschtoens |
| Keywords | ember-addon, polyfill, lifecycle, willDestroy, destroy, ember-lifeline, ember-concurrency |

## Links

- npm: https://www.npmjs.com/package/ember-destroyable-polyfill
- Repository: https://github.com/ember-polyfills/ember-destroyable-polyfill
- Homepage: https://github.com/ember-polyfills/ember-destroyable-polyfill#readme
- Issues: https://github.com/ember-polyfills/ember-destroyable-polyfill/issues
- npm.io page: https://npm.io/package/ember-destroyable-polyfill

## Dependencies (3)

- [ember-cli-babel](https://npm.io/package/ember-cli-babel.md) ^7.22.1
- [ember-cli-version-checker](https://npm.io/package/ember-cli-version-checker.md) ^5.1.1
- [ember-compatibility-helpers](https://npm.io/package/ember-compatibility-helpers.md) ^1.2.1

## Recent versions

- 2.0.3 (latest) — 2021-01-22
- 2.0.2 — 2020-09-17
- 2.0.1 — 2020-08-02
- 2.0.0 — 2020-08-02
- 1.0.2 — 2020-07-31
- 1.0.1 — 2020-07-30
- 1.0.0 — 2020-07-27
- 0.4.0 — 2020-04-13
- 0.3.0 — 2020-04-12
- 0.2.0 — 2020-04-12
- 0.1.0 — 2020-04-12

## README

# ember-destroyable-polyfill

[![CI](https://github.com/ember-polyfills/ember-destroyable-polyfill/workflows/CI/badge.svg)](https://github.com/ember-polyfills/ember-destroyable-polyfill/actions)
[![npm version](https://badge.fury.io/js/ember-destroyable-polyfill.svg)](http://badge.fury.io/js/ember-destroyable-polyfill)
[![Download Total](https://img.shields.io/npm/dt/ember-destroyable-polyfill.svg)](http://badge.fury.io/js/ember-destroyable-polyfill)
[![Ember Observer Score](https://emberobserver.com/badges/ember-destroyable-polyfill.svg)](https://emberobserver.com/addons/ember-destroyable-polyfill)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)  
[![Dependabot enabled](https://img.shields.io/badge/dependabot-enabled-blue.svg?logo=dependabot)](https://dependabot.com/)
[![dependencies Status](https://david-dm.org/ember-polyfills/ember-destroyable-polyfill/status.svg)](https://david-dm.org/ember-polyfills/ember-destroyable-polyfill)
[![devDependencies Status](https://david-dm.org/ember-polyfills/ember-destroyable-polyfill/dev-status.svg)](https://david-dm.org/ember-polyfills/ember-destroyable-polyfill?type=dev)

Polyfill for [RFC 580 "Destroyables"][rfc-580].

[rfc-580]: https://github.com/emberjs/rfcs/pull/580

## Installation

```bash
ember install ember-destroyable-polyfill
```

For addons, pass the `-S` flag.

## Compatibility

* Ember.js v3.4 or above
* `ember-cli-babel` v7.22.1 or above
* Ember CLI v2.13 or above
* Node.js v10 or above

## Summary

Adds an API for registering destroyables and destructors with Ember's built in
destruction hierarchy.

```js
import { registerDestructor } from '@ember/destroyable';

class MyComponent extends Component {
  constructor() {
    let timeoutId = setTimeout(() => console.log('hello'), 1000);
    registerDestructor(this, () => clearTimeout(timeoutId));
  }
}
```

The API will also enable users to create and manage their own destroyables, and
associate them with a parent destroyable.

```js
import {
  associateDestroyableChild,
  registerDestructor
} from '@ember/destroyable';

class TimeoutManager {
  constructor(parent, fn, timeout = 1000) {
    let timeoutId = setTimeout(fn, timeout);
    associateDestroyableChild(parent, this);
    registerDestructor(this, () => clearTimeout(timeoutId));
  }
}

class MyComponent extends Component {
  manager = new TimeoutManager(this, () => console.log('hello'));
}
```

For detailed usage instructions, refer to the
[RFC 580 "Destroyables"][rfc-580].

## TypeScript Usage

TypeScript's normal type resolution for an import from `@ember/destroyable`
will **not** find this the types provided by this package (since TypeScript
would attempt to resolve it as `node_modules/@ember/destroyable` or under
the Definitely Typed location for `@ember/destroyable`). Once the
`@ember/destroyable` API is a documented part of Ember's API, the
Definitely Typed folks will gladly accept adding that API, but in the
meantime users will need to modify their `tsconfig.json` to tell TypeScript
where these types are.

Add the following to your `tsconfig.json`:

```js
{
  // ...snip...
  "paths": {
    // ...snip...
    "@ember/destroyable": ["node_modules/ember-destroyable-polyfill"],
  }
}
```

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