Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/akbarsaputrait/ngememoize
https://github.com/akbarsaputrait/ngememoize
Last synced: 9 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/akbarsaputrait/ngememoize
- Owner: akbarsaputrait
- Created: 2024-12-31T13:34:23.000Z (11 days ago)
- Default Branch: master
- Last Pushed: 2024-12-31T19:27:57.000Z (11 days ago)
- Last Synced: 2024-12-31T19:28:51.880Z (11 days ago)
- Language: HTML
- Size: 399 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-angular - ngememoize - Easily boost the performance of your Angular applications by memoizing functions and getters with this lightweight and simple-to-use library. (Table of contents / Third Party Components)
README
# Ngememoize: Angular Memoization Library
\
Easily boost the performance of your Angular applications by memoizing functions and getters with this lightweight and simple-to-use library.## โจ Features
- **Memoize Functions**: Cache function results for improved performance.
- **Memoize Getters**: Optimize computed properties with caching.
- **Lightweight**: Designed for efficiency without adding unnecessary overhead.
- **Decorator Support**: Memoization is as simple as adding a decorator.
- **Angular Compatible**: Fully supports Angular 18 and later.
- **Tree Shakable**: Only include what you need.---
## ๐ฆ Installation
To get started, install Ngememoize via npm:
```bash
npm install ngememoize
```Or, if you use Yarn or PNPM:
```bash
yarn add ngememoize
# or
pnpm add ngememoize
```---
## ๐ Quick Start
### Memoize a Function
```typescript
import { Ngememoize } from 'ngememoize';// Method example
@Memoize<[number], number>({
debugLabel: 'processData'
})
processData(value: number): number {
console.log('Processing...');
return value * 2;
}// Getter example
@Memoize({
debugLabel: 'computedValue'
})
get computedValue(): number {
console.log('Computing...');
return this.data.reduce((sum, val) => sum + val, 0);
}// Dependent getter example
@MemoizeWithDeps(
function(this: ExampleComponent) {
return [this.data, this.multiplier];
},
{ debugLabel: 'dependentValue' }
)
get dependentValue(): number {
console.log('Computing dependent...');
return this.computedValue * this.multiplier;
}// Async method example
@Memoize<[string], Promise>({
debugLabel: 'fetchData',
maxAge: 5000
})
async fetchData(id: string): Promise {
console.log('Fetching...');
return new Promise(resolve =>
setTimeout(() => resolve(`Data for ${id}`), 1000)
);
}
```
For more examples on how to use Ngememoize, please refer to the `/projects/example` directory.---
## ๐งช Testing
To ensure everything works perfectly, tests are included. Run the following commands:
```bash
npm test
```---
## ๐ Documentation
### Memoization Decorator
- **@memoize**: Use this decorator on functions or getters to enable memoization.
### Cache Behavior
- Cached results are invalidated when parameters or getter states change.
---
## ๐ฏ Benefits
- **Performance Boost**: Reduce redundant computations.
- **Cleaner Code**: Simplify logic by reducing manual caching.
- **Angular Ready**: Seamlessly integrates with your Angular projects.---
## ๐ง Contributing
We welcome contributions! Here's how you can help:
1. Fork the repository.
2. Create a feature branch: `git checkout -b feature/awesome-feature`
3. Commit your changes: `git commit -m 'Add awesome feature'`
4. Push to the branch: `git push origin feature/awesome-feature`
5. Open a Pull Request.---
## ๐ License
This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details.
---
## ๐คฉ Credits
Ngememoize was built with โค๏ธ by developers who love Angular and believe in the power of simplicity and efficiency.
---
## ๐ Support
If you find this library helpful, consider giving it a โญ on [GitHub](https://github.com/akbarsaputrait/ngememoize). Your support means a lot!
[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/akbarsaputrait)
---
Now go forth and **memoize** your way to blazing-fast Angular apps! ๐