my-easy-fp Utility Functions
my-easy-fp is a JavaScript and TypeScript utility library providing a collection of focused, single-purpose functions for common programming tasks. It covers categories such as boolean logic, array manipulation (e.g., `chunk`, `populate`, `last`), comprehensive empty/null/undefined checks, miscellaneous helpers like `getRandomRange`, and an asynchronous `sleep` function. The library also ships with several custom TypeScript utility types to enhance type safety. Currently at version `0.23.0`, `my-easy-fp` is actively developed under a `0.x` versioning scheme, indicating that its API is subject to change as it approaches a stable 1.0 release. It is designed to be compatible with both browser and Node.js environments (requiring Node.js >=20), offering a lightweight alternative to larger utility frameworks. Its key differentiators include built-in TypeScript support and a modular design, making it suitable for projects needing specific utilities without extensive bundle size.
Common errors
-
TypeError: (0, _my_easy_fp__WEBPACK_IMPORTED_MODULE_0__.someFunction) is not a function
cause This error often occurs in bundled environments (like Webpack or Vite) when there's a mismatch in how modules are imported or when a CommonJS `require()` is used in an ESM context.fixEnsure you are using named imports `import { someFunction } from 'my-easy-fp';` and that your bundler/project configuration correctly handles ESM. Verify the function `someFunction` is indeed exported by `my-easy-fp` and is spelled correctly. -
ReferenceError: chunk is not defined
cause The `chunk` function (or any other function) was used without being imported first.fixAdd `import { chunk } from 'my-easy-fp';` (or the respective function) at the top of your file where it's being used. -
TS2305: Module '"my-easy-fp"' has no exported member 'default'.
cause You attempted to import `my-easy-fp` using a default import syntax, but the library only provides named exports.fixChange your import statement from `import MyEasyFp from 'my-easy-fp';` to `import { functionName } from 'my-easy-fp';` for the specific functions you intend to use.
Warnings
- breaking As a `0.x.y` version package, `my-easy-fp`'s API is considered unstable and subject to breaking changes without adhering to semantic versioning until a 1.0 release. Always review changelogs when upgrading.
- gotcha The package targets modern Node.js environments and assumes ESM for module imports. Direct `require()` statements for CommonJS might not work as expected or could lead to compatibility issues in certain build setups.
- gotcha The library strictly uses named exports. Attempting to import a default export (e.g., `import MyEasyFp from 'my-easy-fp'`) will result in an error, as no default export is provided.
- gotcha `my-easy-fp` explicitly requires Node.js version `20` or higher. Running the package on older Node.js versions may lead to runtime errors or unexpected behavior due to reliance on newer language features or APIs.
Install
-
npm install my-easy-fp -
yarn add my-easy-fp -
pnpm add my-easy-fp
Imports
- chunk
const { chunk } = require('my-easy-fp');import { chunk } from 'my-easy-fp'; - isComplexEmpty
import isComplexEmpty from 'my-easy-fp';
import { isComplexEmpty } from 'my-easy-fp'; - sleep
import * as myfp from 'my-easy-fp'; myfp.sleep();
import { sleep } from 'my-easy-fp';
Quickstart
import { chunk, sleep, isComplexEmpty, populate, getRandomRangeInt } from 'my-easy-fp';
async function main() {
console.log('--- Array Utilities ---');
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const chunked = chunk(numbers, 3);
console.log('Chunked array:', chunked); // [[1,2,3], [4,5,6], [7,8,9], [10]]
const populated = populate(5);
console.log('Populated array (0-based):', populated); // [0, 1, 2, 3, 4]
const populatedOneBased = populate(3, true);
console.log('Populated array (1-based):', populatedOneBased); // [1, 2, 3]
console.log('\n--- Empty Checks ---');
console.log('Is null complex empty?', isComplexEmpty(null)); // true
console.log('Is empty string complex empty?', isComplexEmpty('')); // true
console.log('Is [] complex empty?', isComplexEmpty([])); // true
console.log('Is {} complex empty?', isComplexEmpty({})); // true
console.log('Is 0 complex empty?', isComplexEmpty(0)); // true (due to isNaN check)
console.log('Is "hello" complex empty?', isComplexEmpty('hello')); // false
console.log('\n--- Async Utility ---');
console.log('Starting sleep for 1 second...');
await sleep(1000);
console.log('...Finished sleeping.');
console.log('\n--- Misc Utility ---');
const randomNumber = getRandomRangeInt(1, 100);
console.log('Random integer between 1 and 100:', randomNumber);
}
main().catch(console.error);