@dillonkearns/elm-graphql
Version:
<img src="https://cdn.jsdelivr.net/gh/martimatix/logo-graphqelm/logo.svg" alt="dillonearns/elm-graphql logo" width="40%" align="right">
233 lines (142 loc) • 4.83 kB
Markdown
# @jumpn/utils-composite
> Composite utilities (immutability, fp helpers)
>
> **NOTE**: All the functions described in [API](#API) are curried
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
<!-- END doctoc -->
- [Installation](#installation)
- [Using npm](#using-npm)
- [Using yarn](#using-yarn)
- [Types](#types)
- [API](#api)
- [get](#get)
- [getIn](#getin)
- [getKeys](#getkeys)
- [hasIn](#hasin)
- [hasKey](#haskey)
- [haveSameProps](#havesameprops)
- [map](#map)
- [remove](#remove)
- [removeIn](#removein)
- [set](#set)
- [setIn](#setin)
- [shallowCopy](#shallowcopy)
- [shallowEqual](#shallowequal)
- [updateIn](#updatein)
- [License](#license)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
## Installation
### Using [npm](https://docs.npmjs.com/cli/npm)
$ npm install --save @jumpn/utils-composite
### Using [yarn](https://yarnpkg.com)
$ yarn add @jumpn/utils-composite
## Types
```flowtype
type Composite = Array<*> | Object;
type Key = number | string;
type Path = Array<Key>;
```
## API
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
### get
Get property value of given key.
**Parameters**
- `key` **Key**
- `composite` **Composite**
Returns **any**
### getIn
Returns value located at the given path or undefined otherwise.
**Parameters**
- `path` **Path**
- `composite` **Composite**
Returns **any**
### getKeys
Get own enumerable keys.
**Parameters**
- `composite` **Composite**
Returns **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<Key>**
### hasIn
Returns true if value located at given path is deeply equal to the one
specified.
**Parameters**
- `path` **Path**
- `value` **any**
- `composite` **Composite**
Returns **[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)**
### hasKey
Returns true if key is included in composite's own enumerable ones,
or false otherwise.
**Parameters**
- `key` **Key**
- `composite` **Composite**
Returns **[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)**
### haveSameProps
Returns true if both composites have the same props or false otherwise.
**Parameters**
- `c1` **Composite**
- `c2` **Composite**
Returns **[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)**
### map
Maps values of the given composite using mapper
**Parameters**
- `mapper` **function (value: any, key: Key, composite: $Supertype<C>): any**
- `composite` **C**
Returns **$Supertype<C>**
### remove
Returns a new composite with the result of having removed the property with
the given key.
**Parameters**
- `key` **Key**
- `composite` **Composite**
Returns **Composite**
### removeIn
Returns a new composite with the result of having removed the property
located at the given path.
(This does the same as calling **updateIn** with updater:
`() => updateIn.remove`)
**Parameters**
- `path` **Path**
- `composite` **Composite**
Returns **Composite**
### set
Returns a new composite with the result of having updated the property with
the given key with the specified value.
**Parameters**
- `key` **Key**
- `value` **any**
- `composite` **Composite**
Returns **Composite**
### setIn
Returns a new composite with the result of having updated the property
located at the given path with the specified value.
(This does the same as calling **updateIn** with updater: `() => value`)
**Parameters**
- `path` **Path**
- `value` **any**
- `composite` **Composite**
Returns **Composite**
### shallowCopy
Returns a new composite with the same own enumerable props of the one given.
**Parameters**
- `composite` **C**
Returns **C**
### shallowEqual
Returns true if both composites are of the same type (Array or Object) and
their properties are strictly equal.
**Parameters**
- `c1` **Composite**
- `c2` **Composite**
Returns **[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)**
### updateIn
Returns a new composite with the result of having updated the property value
at the given path with the result of the call to updater function.
Entry removal is supported by returning `updateIn.remove` symbol on updater
function.
**Parameters**
- `path` **Path**
- `updater` **function (prev: any): any**
- `composite` **Composite**
Returns **Composite**
## License
[MIT](LICENSE.txt) :copyright: **Jumpn Limited** / Mauro Titimoli (mauro@jumpn.com)