Skip to content

Latest commit

 

History

History
87 lines (66 loc) · 3.1 KB

File metadata and controls

87 lines (66 loc) · 3.1 KB

bounce-banner-2 npm downloads license Security Policy npm_provenance NPM Unpacked Size

Micro Bounce JS

🧸 A tiny type-safe debounce utility for modern JavaScript and TypeScript. Lightweight. Dependency-free. Works in Node and the browser, has a very simple API surface to work with.

📦 Installation

npm install --save micro-bounce-js

🎲 Features

  1. Debounces rapid function calls and preserves this context
  2. Fully type-safe (TypeScript-first)
  3. Works in Node & browser environments
  4. Zero dependencies
  5. Minimal Footprint
  6. Unit-Tested using Jest with fake timers to verify

💻 Usage

/* node modules */
import { microBounce } from 'micro-bounce-js';

/* your fn */
function aSimpleLogger(message: string): void {
  console.log(messsage);
}

/* create the debounce instance */
const dLogger = microBounce(aSimpleLogger, 500);
dLogger('Hey there. How you doing?');

// the logger function will be executed after 500 milliseconds
// the log will output "Hey there. How you doing?"

📗 Test Coverage

PASS src/micro-bounce/test/index.test.ts
  microBounce
    ✓ throws when delay is negative
    ✓ throws when delay is not finite
    ✓ calls function after delay
    ✓ debounces rapid calls and uses latest arguments
    ✓ preserves this context
    ✓ works with zero delay
    ✓ throws when delay is Infinity
    ✓ separate instances do not share debounce state

Test Suites: 1 passed, 1 total
Tests:       8 passed, 8 total
Snapshots:   0 total
----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files |     100 |      100 |     100 |     100 |
 index.ts |     100 |      100 |     100 |     100 |
----------|---------|----------|---------|---------|-------------------

📘 Contributing

Contributions, suggestions, and improvements are welcome.
Feel free to open issues or pull requests.

🔒 Security & Privacy

  1. This package is open source and intended to provide reusable utilities for application development. It does not collect, store, transmit, sell, or share user data, and it does not include analytics, tracking, telemetry, cookies, local storage usage, backend services, or project-owned data collection mechanisms.
  2. For more details, including vulnerability reporting guidance and consumer security recommendations, please see the Security Policy.

❤️ Support

Like this project? Support it with a github star, it would mean a lot to me! Cheers and Happy Coding.