Yet another pure functional frontend library.
Pure functional in this context means functional code style - library code is linted using eslint-plugin-functional and eslint-plugin-better. Javascript code is purely functional with some exceptions:
tap()
function, used for controllable side effects,mutate()
function, used for controllable mutations,always()
function, used to always return the same value,lazy()
function, used for lazy calculations,promise()
function, used to create new Promise instance.
Using npm
:
$ npm install --save-dev @yagni-js/yagni
Using yarn
:
$ yarn add -D @yagni-js/yagni
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';
Not yet available, please check sources.
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'