@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
73 lines (57 loc) • 2.83 kB
Markdown
# @daiso-tech/core
[](https://www.npmjs.com/package/@daiso-tech/core)


[](https://nodejs.org/api/esm.html)
[](LICENSE)
A modular, framework-agnostic library providing essential components for modern web applications. Stop reinventing the wheel - focus on building your application while the library handles the core functionalities.
## ✨ Features
### Current Features
- **Immutable Collections**:
- `IterableCollection` - Simplifies work with `Iterable`
- `ListCollection` - Simplifies work with `Array`
- `AsyncIterableCollection` - Simplifies work with `AsyncIterable`
- **Middleware System**
- Agnostic middlewares applicable to any async/sync functions.
- `fallback`: Automatic recovery with default values on errors
- `observe`: Monitor function execution and performance
- `retry`: Smart retries with multiple backoff policies:
- `constantBackoffPolicy`
- `exponentialBackoffPolicy`
- `linearBackoffPolicy`
- `polynomialBackoffPolicy`
- `sequentialHedging`: Runs fallbacks sequentially if the primary function fails, ensuring graceful failure handling.
- `concurrentHedging`: Executes the primary function alongside fallbacks concurrently, returning the first successful result and aborting all remaining operations.
- `timeout`: Guaranteed execution time limits
- **LazyPromise**:
- Executes only when awaited
- With middleware support
- **Pluggable Components**:
- `Cache` with adapter support
- `Lock` with adapter support
- `EventBus` with adapter support
- `Serde` (serializer, deserializer) adapters
### Planned Features
- Query bus
- Command bus
- Semaphore component
- SharedLock (ReaderWriterLock)
- RateLimiter
- CircuitBreaker
- MessageQueue
- TaskScheduler
- Notification system
- Abstract file system
## 🚀 Installation
```bash
npm install @daiso-tech/core
```
## Inspired By
Built with ideas from:
- [Laravel](https://laravel.com/docs/11.x/readme), PHP
- [Symfony components](https://symfony.com/components), PHP
- [Verrou](https://verrou.dev/docs/introduction), TypeScript
- [Distributed lock](https://github.com/ZiggyCreatures/FusionCache), C#
- [Bento cache](https://bentocache.dev/docs/introduction), TypeScript
- [Fusion cache](https://github.com/ZiggyCreatures/FusionCache), C#
- [Polly](https://www.pollydocs.org/), C#