# @nhz.io/abstract-resource-manager

> AbstractResourceManager Class

Latest version **0.1.1** (published 2017-11-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install @nhz.io/abstract-resource-manager
pnpm add @nhz.io/abstract-resource-manager
yarn add @nhz.io/abstract-resource-manager
bun add @nhz.io/abstract-resource-manager
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.1 |
| Published | 2017-11-17 |
| First published | 2017-11-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 8.x.x |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Ishi Ruy |
| Maintainers | nhz-io, ishi.ruy |
| Keywords | nhz-io, nhz.io |

## Links

- npm: https://www.npmjs.com/package/@nhz.io/abstract-resource-manager
- Repository: https://github.com/nhz-io/nhz-io-abstract-resource-manager
- Issues: https://github.com/nhz-io/nhz-io-abstract-resource-manager/issues
- npm.io page: https://npm.io/package/@nhz.io/abstract-resource-manager

## Recent versions

- 0.1.1 (latest) — 2017-11-17
- 0.1.0 — 2017-11-17

## README

# AbstractResourceManager Class

[![Travis Build][travis]](https://travis-ci.org/nhz-io/nhz-io-abstract-resource-manager)
[![NPM Version][npm]](https://www.npmjs.com/package/@nhz.io/abstract-resource-manager)

## Install

```bash
npm i -S @nhz.io/abstract-resource-manager
```

## Usage
```js
const AbstractResourceManager = require('@nhz.io/abstract-resource-manager')

class Manager extends AbstractResourceManager {
  /* Implement the methods */
}

...
```

## Literate Source

### Manager

    class AbstractResourceManager

#### Start managing resource

      manage: (resource) ->

        return unless resource = @register resource

        job = @getJob resource

        if job

          @stop job, resource if @shouldStop job, resource

          config = @needUpgrade job, resource

          job = @upgrade job, config if config

          @start job, resource if @shouldStart job, resource

> Return the resource

        resource

#### Stop managing resouce

      unmanage: (resource) ->

        return unless resource = @unregister resource

        job = @getJob resource

        if job

          @stop job, resource if @shouldStop job, resource

          config = @needDowngrade job, resource

          job = @downgrade job, config if config

          @start job, resource if @shouldStart job, resource

> Return the resource

        resource

#### Unimplemented methods with *sane* defaults

      register: (resource) -> resource

      unregister: (resource) -> resource

      getJob: (resource) -> null

      shouldStart: (job, resource) -> false

      shouldStop: (job, resource) -> false

      needUpgrade: (job, resource) -> null

      needDowngrade: (job, resource) -> null

      upgrade: (job, config) -> null

      downgrade: (job, config) -> null

      start: (job, resource) -> job

      stop: (job, resource) -> job

    module.exports = AbstractResourceManager

## Tests

    test = require 'tape-async'

    test 'AbstractResourceManager constructor', (t) ->
      t.plan 1

      manager = new AbstractResourceManager

      t.ok manager instanceof AbstractResourceManager

## Version 0.1.1

## License [MIT](LICENSE)

[travis]: https://img.shields.io/travis/nhz-io/nhz-io-abstract-resource-manager.svg?style=flat
[npm]: https://img.shields.io/npm/v/@nhz.io/abstract-resource-manager.svg?style=flat

---
_Source: https://npm.io/package/@nhz.io/abstract-resource-manager · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
