@mojaloop/inter-scheme-proxy-cache-lib
Version:
Common component, that provides scheme proxy caching mapping (ISPC)
107 lines (74 loc) • 3.01 kB
Markdown
# @mojaloop/inter-scheme-proxy-cache-lib
`inter-scheme-proxy-cache-lib` is a common component that provides proxy caching mapping.
It helps reliably integrate proxy functionality throughout the all involved services.
## CI/CD
This repository uses the [mojaloop/build](https://github.com/mojaloop/ci-config-orb-build) CircleCI orb for standardized CI/CD workflows, including automated Grype vulnerability scanning for source code security.
## Use cases:
- Proxy caching. (see [details](https://github.com/infitx-org/uml_diagrams/blob/main/Proxy/Proxy%20pattern%20-%20happy%20path.png))
- Failure count cache with max failure count per {Id}. (see [details](https://github.com/infitx-org/uml_diagrams/blob/main/Proxy/Proxy%20pattern%20-%20Lazy%20Discovery%20-%20No%20Oracles.png))
## Quick Start
### Installation
```bash
npm install @mojaloop/inter-scheme-proxy-cache-lib
```
### Basic Usage
```typescript
// ESM
import { createProxyCache, STORAGE_TYPES } from '@mojaloop/inter-scheme-proxy-cache-lib';
// CJS
const { createProxyCache } = require('@mojaloop/inter-scheme-proxy-cache-lib');
// Redis Cluster
const proxyCacheCluster = createProxyCache(STORAGE_TYPES.redisCluster, {
cluster: [
{ host: 'localhost', port: 6379 },
{ host: 'localhost', port: 6380 },
{ host: 'localhost', port: 6381 },
],
// Optional: username, password, etc.
});
// Single Redis instance
const proxyCache = createProxyCache(STORAGE_TYPES.redis, {
host: 'localhost',
port: 6379,
// Optional: username, password, db, etc.
});
await proxyCache.connect();
// Basic DFSP to proxy mapping
await proxyCache.addDfspIdToProxyMapping('dfsp_1', 'proxyAB');
const proxyId = await proxyCache.lookupProxyByDfspId('dfsp_1');
```
---
### API docs
Check [_IProxyCache_](https://mojaloop.github.io/inter-scheme-proxy-cache-lib/interfaces/IProxyCache.html) interface docs to get more details.
Comprehensive and interactive API documentation, based on TypeScript source code of the package,
could be found [**here**](https://mojaloop.github.io/inter-scheme-proxy-cache-lib)
### Configuration
#### Storage Types
The library supports the following storage types:
- `STORAGE_TYPES.redis` - Single Redis instance
- `STORAGE_TYPES.redisCluster` - Redis cluster configuration
- `STORAGE_TYPES.mysql` - MySQL storage (not implemented yet)
#### Environment Variables
| Env Variable Name | Default Value | Description |
|-----------------------------|---------------|------------------------------------|
| PROXY_CACHE_LOG_LEVEL | `warn` | The log level for the proxyCache |
| PROXY_CACHE_DEFAULT_TTL_SEC | `20` | Default cache TTL for sendToProxiesList keys |
### Requirements
- Node.js >= 22.15.0
---
## Development
### Build
Command to transpile Typescript into JS:
```bash
npm run build
```
### Tests
```bash
npm test
```
### Generate Typedoc documentation
```bash
npm run docs
```
## Collaborators
- [Eugen Klymniuk](https://github.com/geka-evk)