immutably v1.7.0
immutably
Non-mutating operations on data structures.
Install
immutably is available to download through NPM.
$ npm install immutablyImport
import immutably from 'immutably';Use
apply
Applies the given function to the respective part of the input data structure.
output = immutably.apply(input, path, applyFn);Arguments
input(any) input data structure.path(string) input data structure new nested value path.applyFn(function) a function that gets a value as an argument, applies a change and returns a new value.
Returns
output(any) output data structure with the given new nested value set to the given path.
Examples
Basic use:
const input = {foo: {bar: {baz: false}}};
const output = immutably.apply(input, 'foo.bar.baz', (value) => !value);
output; // {foo: {bar: {baz: true}}}You can find more examples in the test files.
set
Sets the given value to the respective part of the input data structure.
output = immutably.set(input, path, value);Arguments
input(any) input data structure.path(string) input data structure new nested value path.value(any) input data structure new nested value.
Returns
output(any) output data structure with the given new nested value set to the given path.
Examples
Basic use:
const input = {foo: {bar: {baz: false}}};
const output = immutably.set(input, 'foo.bar.baz', true);
output; // {foo: {bar: {baz: true}}}You can find more examples in the test files.
merge
Merges the given object with the respective part of the input data structure.
output = immutably.merge(input, path, delta, deep);Arguments
input(any) input data structure.path(string) input data structure merging path.delta(object) merge data structure.deep(object) deep merge switch.
Returns
output(any) output data structure merged with the given merge data structure on the given path.
Examples
Basic use:
const input = {foo: {bar: {baz: false}}};
const output = immutably.merge(input, 'foo.bar', {baz: true});
output; // {foo: {bar: {baz: true}}}You can find more examples in the test files.
alt
Sets the given alternative value to the respective part of the input data structure if it's empty (undefined).
output = immutably.alt(input, path, altValue);Arguments
input(any) input data structure.path(string) input data structure nested value path.altValue(any) input data structure alternative value.
Returns
output(any) output data structure with the given alternative value set to the given path if necessary.
Examples
Basic use:
const input = {foo: {bar: {baz: undefined}}};
const output = immutably.alt(input, 'foo.bar.baz', true);
output; // {foo: {bar: {baz: true}}}You can find more examples in the test files.
clone
Clones the respective part of the input data structure.
output = immutably.clone(input, path, deep);Arguments
input(any) input data structure.path(string) input data structure's merging path.deep(object) deep clone switch.
Returns
output(any) output data structure cloned on the given path.
Examples
Basic use:
const input = {foo: {bar: {baz: false}}};
const output = immutably.clone(input, 'foo.bar', false);
output; // {foo: {bar: {baz: false}}}
input.foo.bar === output.foo.bar; // falseYou can find more examples in the test files.
Extensions
- immutably-get - Getter for non-mutating operations on data structures
- immutably-array - Non-mutating operations on arrays
Changelog
1.7.0
- merging with empty value fixed
- build JS compression switched off
package.jsonmodule configured.npmignoreupdate
1.6.0
immutably.mergedeep switchimmutably.mergeundefined input bug fixed
1.5.0
immutably.altimplemented & unit tested- minor refactoring
1.4.0
- distribution package UMD setup
- distribution package includes dependency
1.3.2
- npm broken publish fixed
1.3.1
modulesection removed frompackage.json- dependency related change
1.3.0
immutably.cloneimplemented & unit tested
1.2.2
- minor refactoring
- project metadata update
1.2.1
import/exportbug fixed
1.2.0
immutably.mergeimplemented & unit testedimmutably.applyrefactoring- empty path proper handling
1.1.0
immutably.applyimplemented & unit tested- more unit tests for
immutably.set
1.0.0
immutably.setimplemented & unit tested
Develop
If you want to fork and develop immutably, these commands are for you:
$ npm run dev
$ npm run test-devTest
immutably is equipped with a test suite. You can run it with:
$ npm run testLicence
MIT