yagni
Yet another pure functional frontend library.
Pure functional in this context means functional code style - library code is linted using eslint-plugin-fp and eslint-plugin-better. Javascript code is purely functional with just two exceptions:
-
tap()
function, used for controllable side effects, -
mutate()
function, used for controllable mutations.
Installation
Using npm
:
$ npm install --save-dev @yagni-js/yagni
Using yarn
:
$ yarn add -D @yagni-js/yagni
Usage
Source code is written using ES6 modules, built using rollup and distributed in two formats - as CommonJS module and as ES6 module.
CommonJS usage:
const _ = require('@yagni-js/yagni');
ES6 module usage:
import * as _ from '@yagni-js/yagni';
// or
import { pipe, transform, map } from '@yagni-js/yagni';
Documentation
Not yet available, please check sources.
Example
Here is a function to convert an array of objects to http request query string:
import * as _ from '@yagni-js/yagni';
const toQuery = _.pipe([
_.map(
_.pipe([
_.transformArr([
_.pick('key'),
_.pipe([
_.pick('value'),
encodeURIComponent
])
]),
_.join('=')
])
),
_.join('&'),
_.concat('?')
]);
Having input as:
const params = [
{key: 'name', value: 'John Smith'},
{key: 'age', value: 35},
{key: 'country', value: 'UK'}
];
the result will be the following:
const query = toQuery(params);
// query === '?name=John%20Smith&age=35&country=UK'