# sapphire-ioc

> Simple IOC container

Latest version **0.0.3** (published 2018-02-27) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install sapphire-ioc
pnpm add sapphire-ioc
yarn add sapphire-ioc
bun add sapphire-ioc
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 0.0.3 |
| Published | 2018-02-27 |
| First published | 2017-12-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 6.0.0 |
| Dependencies | 0 |
| Unpacked size | 108.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Aleksander Koko aleksanderkoko@gmail.com |
| Maintainers | aleksanderkoko |
| Keywords | IOC |

## Links

- npm: https://www.npmjs.com/package/sapphire-ioc
- Repository: https://github.com/sapphire-framework/sapphire-ioc
- Homepage: https://github.com/sapphire-framework/sapphire-ioc#readme
- Issues: https://github.com/sapphire-framework/sapphire-ioc/issues
- npm.io page: https://npm.io/package/sapphire-ioc

## Recent versions

- 0.0.3 (latest) — 2018-02-27
- 0.0.2 — 2017-12-28
- 0.0.1 — 2017-12-28

## README

<p>
  <img src="https://david-dm.org/sapphire-framework/sapphire-ioc.svg" alt="Dependencies" />
  <img src="https://travis-ci.org/sapphire-framework/sapphire-ioc.svg?branch=master" alt="Build status" />
  <a href='https://coveralls.io/github/sapphire-framework/sapphire-ioc?branch=master'><img src='https://coveralls.io/repos/github/sapphire-framework/sapphire-ioc/badge.svg?branch=master' alt='Coverage Status' /></a>
</p>

## Sapphire IOC

This is a simple IOC container implementation on NodeJS. You can register services on it and retrieve it later.


### Register with bind

You can register a service using the `bind` method and passing a callback on how the service should build when is accessed later. The IOC container will always create a new instance when the `ioc.make()` is executed.

```js
// SimpleClass.js
class SimpleClass {
    constructor(parameter) {
        this._parameter = parameter
    }

    getParameter() {
        return this._parameter
    }

    setParameter(parameter) {
        this._parameter = parameter
    }
}

module.exports = SimpleClass
```

```js
const IOC = require('sapphire-ioc')
const SimpleClass = require('./SimpleClass.js')

let ioc = new IOC()
ioc.bind(SimpleClass, () => (
    new SimpleClass(5)
))
const simpleClass = ioc.make(SimpleClass)
```

### Register with singleton

```js
const IOC = require('sapphire-ioc')
const SimpleClass = require('./SimpleClass.js')

let ioc = new IOC()
ioc.singleton(SimpleClass, () => (
    new SimpleClass(5)
))
const simpleClass = ioc.make(SimpleClass)
const simpleClass2 = ioc.make(SimpleClass)

simpleClass.setParameter(3)
simpleClass2.getParameter()     // 3
```

### License
MIT

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