@mountainpasstech/mpjs
v2.12.0
Published
General JavaScript utilties
Downloads
30
Readme
@mountainpass/mpjs
A general JavaScript library for manipulating arrays, objects etc.
Modules:
amount
: Functions related to formatting amounts and money.str
: Functions related to formatting amounts and money.timing
: Functions related to waiting and time.validate
: Functions related to validatingxs
: Functions related to arrays and arrays of objects etc.
Links
- Repo: https://github.com/mountainpass/mpjs
- docs: https://mountainpass.github.io/mpjs/
Note: Dueto the way curried functions are exported and how autodoc tools work, some functions are documented as variables rather than functions. Of course all named functions are variables, so whatever...
Install
npm i -S @mountainpasstech/mpjs
Import
// e.g. to sort an array by key:
import {sortBy} from "@mountainpasstech/mpjs/xs";
// Or
const {sortBy} = require("@mountainpasstech/mpjs/xs");
Dev/Test
$ npm install && npm test
Why?
Another library? Because we keep writing the same damn JavaScript. This is one level up from something like underscore, Ramda etc and includes very common functionality found across our webapps. E.g. when sorting an array of objects by key, why have to remember:
// Ramda
import {ascend, prop, sortWith} from "ramda";
const myArr = [{x: 1}, {x: 3}, {x: 1}];
expect(sortWith([ascend(prop("id"))], myArr).toEqual([
{x: 1}, {x: 1}, {x: 3}]
);
When we could do this:
import {sortBy} from "mpjs/xs";
const myArr = [{x: 1}, {x: 3}, {x: 1}];
expect(sortBy("x", myArr)).toEqual([{x: 1}, {x: 1}, {x: 3}]);
Note, when applicable, all functions are curried, which makes for more modular, reusable, and composable functions. In general the data to be worked on will be the last parameter in order to faciliate composition (piping):
const myArr = [{x: 1}, {x: 3}, {x: 1}];
// Pass one less arg than expected to create a partially applied function, `sortByX`.
// if you have to sort an array of objects by "x" a few different times.
const sortByX = sortBy("x");
expect(sortByX(myArr)).toEqual([{x: 1}, {x: 1}, {x: 3}]);
// sort by "x" a few other times in some other place in your app.