https://github.com/imjuni/my-easy-fp
https://github.com/imjuni/my-easy-fp
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/imjuni/my-easy-fp
- Owner: imjuni
- License: mit
- Created: 2020-04-05T03:43:51.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-01-07T05:31:02.000Z (over 2 years ago)
- Last Synced: 2024-10-19T10:27:02.462Z (over 1 year ago)
- Language: TypeScript
- Size: 1.03 MB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Simple functional programming utility & programming helper tools
[](https://npmcharts.com/compare/my-easy-fp?minimal=true) [](https://github.com/imjuni/my-easy-fp) [](https://github.com/imjuni/my-easy-fp/issues) [](https://www.npmjs.com/package/my-easy-fp) [](https://github.com/imjuni/my-easy-fp/blob/master/LICENSE)
Simple utility functions that can use browser, node.
## Function list
### boolean
| name | description |
| ------- | ------------------------------ |
| isFalse | If argument false, return true |
| isTrue | If argument true, return true |
| invert | return inverted boolean value |
### array
| 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 |
### empty
| 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 |
### misc
| 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 |
### sleep
| name | description |
| ----- | ----------------------- |
| sleep | sleep given millisecond |
### Custom Utility Types
| 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 |
## False & True checker
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');
}
```
## Empty checker
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');
}
```
## Sleep
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);
```
## Array
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);
```
## Type Helper
resolve promise, array. But you can use [type-fest](https://github.com/sindresorhus/type-fest) or [ts-essentials](https://github.com/ts-essentials/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 & Pick, 'name' | 'major'>
type TCliArgumentStudent = TNullablePick;
```