Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/allnulled/es6patterns
Set of design patterns and similar utilities for ES6 syntax.
https://github.com/allnulled/es6patterns
Last synced: 1 day ago
JSON representation
Set of design patterns and similar utilities for ES6 syntax.
- Host: GitHub
- URL: https://github.com/allnulled/es6patterns
- Owner: allnulled
- Created: 2018-11-20T11:37:48.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2018-11-20T14:38:09.000Z (almost 6 years ago)
- Last Synced: 2024-10-05T07:00:03.180Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 72.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
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 `` 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.