# es6patterns

> Set of design patterns and similar utilities for ES6 syntax.

Latest version **1.0.0** (published 2018-11-20) · ISC license · 0 weekly downloads

## Install

```sh
npm install es6patterns
pnpm add es6patterns
yarn add es6patterns
bun add es6patterns
```

## 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 | 1.0.0 |
| Published | 2018-11-20 |
| First published | 2018-11-20 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 374.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Maintainers | allnulled |

## Links

- npm: https://www.npmjs.com/package/es6patterns
- Repository: https://github.com/allnulled/es6patterns
- Homepage: https://github.com/allnulled/es6patterns#readme
- Issues: https://github.com/allnulled/es6patterns/issues
- npm.io page: https://npm.io/package/es6patterns

## Recent versions

- 1.0.0 (latest) — 2018-11-20

## README

# es6patterns


![](https://img.shields.io/badge/es6patterns-v1.0.0-green.svg) ![](https://img.shields.io/badge/coverage-%2B95%25-green.svg) 


Set of design patterns and similar utilities for EcmaScript6 syntax (for browsers and `node.js`).

## Installation

~$ `npm install --save es6patterns`

## Usage

Get the API:

Once you install the module, either with `node.js`, `browserify`, `webpack`, or simply a `<script>` tag in the `html` page, to get the API you can:

a) Via `require`/`import`, then:

```js
const ES6Patterns = require("es6patterns");
```

b) Via `<script src=...>`, then:

```js
const ES6Patterns = window.ES6PatternsAPI;
```

## API





 


----

#### **`Singleton = ES6Patterns.Singleton`**


**Type:** `Class`

**Description:** A `Singleton Pattern` implementation scoped *per context* (`window` or `global`).




 


----

#### **`Singleton.getUniqueStore()`**


**Access:** `Static`

**Type:** `Method`

**Returns:** `Object`. The `store` with all the `key`s.

**Description:** 
This method returns the map that holds all the keys of the singleton store.
This data is attached (indirectly) to the context, which is `window` or `global`.
This method is aimed for internal usage but it is available for anyone too.




 


----

#### **`Singleton.getter(String:key, Function:initializer)`**


**Access:** `Static`

**Type:** `Method`

**Parameter:** `String:key`. Unique string identifier of the desired key. 

**Parameter:** `Function:initializer`. Optional. Function that returns the initial value of the singleton if the `key` is not found in the `store` yet. By default: `() => undefined''.

**Returns:** `Function`. A `getter` for the value hold in the `store` identified by the `key`.

**Description:** 
This method returns a function that, when called, it returns the value of the `store` identified by the provided `key`.
This method also provides a lazy-loading initialization of the singleton values, by default, which can be overriden calling `set` method whenever is desired..




 


----

#### **`Singleton.setter(String:key)`**


**Type:** `Method`

**Access:** `Static`

**Parameter:** `String:key`.

**Returns:** `Function`. A `setter` for the value hold in the `store` identified by the `key`.

**Description:** 
This method returns a function that, when called, it sets the value of the `store` identified by the provided `key` to the provided `value`.
The function also returns the current value of the `key` in the `store`.





 


----

#### **`Singleton.get(key, initializer = () => undefined)`**


**Type:** `Method`

**Access:** `Static`

**Parameter:** `String:key`. Unique string identifier of the desired key. 

**Parameter:** `Function:initializer`. Optional. Function that returns the initial value of the singleton if the `key` is not found in the `store` yet. By default: `() => undefined''.

**Returns:** `Any`. The new value of the `key` in the `store`.

**Description:** 
This method returns the value of the provided `key` in the `store`.




 


----

#### **`Singleton.set(String:key, Any:value)`**


**Type:** `Method`

**Access:** `Static`

**Parameter:** `String:key`. Unique string identifier of the desired key. 

**Parameter:** `Any:value`. Optional. Function that returns the initial value of the singleton if the `key` is not found in the `store` yet. By default: `() => undefined''.

**Returns:** `Any`. The new value of the `key` in the `store`.

**Description:** 
This method sets the `value` to the provided `key` in the `store`.




 


# Examples

The API is decoupled in different `design patterns` and similar `utilities` under the API object.

To see more of each example, take a look to the `test` folder. Tests are written using `mocha` and `chai`.

# Commands

The commands of the project are the `npm` commands listed at `package.json#scripts`.

# License

MIT License.

# Conclusions

Soon, more.

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