Simple functional programming utility & Misc programming tool
npm install my-easy-fp    
Simple utility functions that can use browser, node.
| name | description |
| ------- | ------------------------------ |
| isFalse | If argument false, return true |
| isTrue | If argument true, return true |
| invert | return inverted boolean value |
| name | description |
| -------- | --------------------------------------------------------------------------------- |
| populate | populate array zero base, if you pass second argument true that populate one base |
| chunk | array split given size |
| last | pick last element from array |
| first | pick first element from array |
| toArray | make array given argument |
| settify | make it set and convert it back to array |
| name | description |
| ----------------- | ----------------------------------------------------------------------------------------------------- |
| isUndefined | if argument undefiend, return true |
| isNotUndefined | if argument not undefined, return true |
| isNull | if argument null, return true |
| isNotNull | if argument not null, return true |
| isNotEmpty | if argument not null and undefined, return true |
| isEmpty | if argument null or undefined, return true |
| isComplexEmpty | if argument not undefined and null, do additional test isNaN, empty string, empty array, empty object |
| isNotComplexEmpty | return inverted value isComplexEmpty |
| name | description |
| ----------------- | ----------------------------------------------------- |
| typedkey | same work Object.keys, but typed key in Recoed |
| getRandomRange | return random value in min and max |
| getRandomRangeInt | return random integer value in min and max |
| isError | if argument is Error return Error or return undefined |
| name | description |
| ----- | ----------------------- |
| sleep | sleep given millisecond |
| name | description |
| ------------------ | -------------------------------------- |
| TResolvePromise | get type resolved promise |
| TResolveArray | get type resolve array |
| TNullablePick | convert specific field to nullable |
| TNonNullableObject | object type each field to non nullable |
| TNonNullablePick | convert specific field to non nullable |
Why need this utility?
``ts
import { isFalse } from 'my-easy-fp';
const iamboolean = false;
// this line easily miss in refactoring or changing
if (!iamboolean) {
console.log('I am execute false-case');
}
// more than better!
if (isFalse(iamboolean)) {
console.log('I am execute false-case');
}
`
Why need this utility?
`ts
const iamempty?: string | null = undefined;
// this line some boring task
if (iamempty === undefined || iamempty === null || iamempty !== '') {
console.log('i am empty');
}
// more than better!
if (isComplexEmpty(iamempty)) {
console.log('i am empty');
}
`
You need only undefined and null check, use double equal operator.
`ts
const iamempty?: string | null = undefined;
// Recently ESLint allow double equal for null check
// see https://eslint.org/docs/latest/rules/eqeqeq#allow-null
if (iamempty == null) {
console.log('i am empty');
}
`
Why need this utility?
`ts
const ms = 1000;
// this line some boring task
await new Promise((resolve) => setTimeout(() => resolve(), ms));
// more than better!
await sleep(ms);
`
populate, chunk utility here.
`ts
// seq is [0,1,2,3,4,5,6,7,8,9]
const seq = populate(10);
// seq is [1,2,3,4,5,6,7,8,9,10]
const seq = populate(10, true);
// chunked is [[1,2],[3,4],[5,6],[7]]
const chunked = chunk([1, 2, 3, 4, 5, 6, 7], 2);
// settify is [ 1, 2, 3, 4 ]
const settified = settify([1, 1, 2, 3, 2, 3, 4]);
// zeroIndex is 1
const zeroIndex = atOrThrow([1, 2, 3], 0);
`
resolve promise, array. But you can use type-fest or ts-essentials. Recommand use type-fest and tsessentials.
`ts
// you can get string | Buffer type
type TResolvedPromiseType = TResolvePromise
// you can get number type
type TResolvedArrayType = TResolveArray
interface IStudent {
name: string;
major: string;
grade: number;
}
// you can get { name?: string; major?: string; grade: number; }
// converted Omit
type TCliArgumentStudent = TNullablePick
``