# nvm-cache

> caching object

Latest version **0.0.17** (published 2022-07-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install nvm-cache
pnpm add nvm-cache
yarn add nvm-cache
bun add nvm-cache
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.17 |
| Published | 2022-07-07 |
| First published | 2018-10-27 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 206.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Viktor |
| Maintainers | shark_vik |

## Links

- npm: https://www.npmjs.com/package/nvm-cache
- Homepage: https://github.com/sharkvik/nvm-framework/blob/master/README.md
- npm.io page: https://npm.io/package/nvm-cache

## Dependencies (1)

- [tslib](https://npm.io/package/tslib.md) ^1.9.0

## Recent versions

- 0.0.17 (latest) — 2022-07-07
- 0.0.16 — 2020-12-10
- 0.0.15 — 2020-09-24
- 0.0.14 — 2020-05-25
- 0.0.13 — 2020-05-25
- 0.1.3 — 2020-03-28
- 0.1.2 — 2020-03-21
- 0.1.1 — 2020-03-20
- 0.0.12 — 2019-01-12
- 0.0.11 — 2018-12-30
- 0.0.10 — 2018-12-16
- 0.0.9 — 2018-11-28
- 0.0.8 — 2018-11-25
- 0.0.7 — 2018-11-22
- 0.0.6 — 2018-11-20
- … 5 more at https://npm.io/package/nvm-cache/versions

## README

# NvmCache

[nvm-cache](https://github.com/sharkvik/nvm-framework/tree/master/projects/nvm-cache/src/lib)

Библиотека реализует кэширующий объект NvmCache, который предоставляет доступ к загруженному объекту и предоставлет возможность обновления по требованию.

Установка

```
npm install nvm-cache --save
```

Импорт

```typescript
import { NvmCache } from 'nvm-cache';
```

### constructor(action: (id: string) => Observable<T>, ignoreCase: boolean = true)

В констркутор нужно передать метод получения/обновления данных по ключу.
Второй параметр опциональный. Задает регистрозависимость идентификаторов/ключей значений

```typescript
const nvmCache = new NvmCache<Type>((id: string) => this.http.get('http://localhost:4200/type/' + id));
```

### get(id: string): NvmSubject<T>

Метод возвращает объект NvmSubject<T>. Jбъект сродни ReplySubject<T> но расширен возможностью однократной подписки, и не отдает предыдущее значение в случае запуска процесса обновления данных.
В случае если значение было загружено в кэш ранее отдает значение, иначе запускает процесc получения данных, и после эмитит полученное значение
В случае обновления данных все подписчики получат новые значения.

```typescript
nvmCache.get(id).subscribe(newData => {
	// do something
});
```

### getOnce(id: string): Observable<T>

Метод возвращает обычный Observable<T> без постоянной подписки.
В случае если значение было загружено в кэш ранее отдает значение, иначе запускает процесc получения данных, и после эмитит полученное значение

```typescript
nvmCache.getOnce(id).subscribe(newData => {
	// do something
});
```

### refresh(id: string, data?: T): Observable<T>

Метод возвращает обычный Observable<T> без постоянной подписки.
Запускает процесс обновления кэша, и, затем, эмитит обновленное значение для всех подписчиков NvmSubject<T> с соответствующим id.
В случае если параметр data был заполнен, то обновляет кэш переданным значением, если пустой, то обновляет данные с помошью переданного в конструктор метода.

```typescript
nvmCache.refresh(id).subscribe();
```

### remove(id: string): void

Чистит кэш для переданного идентификатора.

```typescript
nvmCache.remove(id);
```

### clear(): void

Чистит весь кэш.

```typescript
nvmCache.clear();
```

### has(key: string): boolean

Возвращает true/false в зависимости есть ключ/идентификатор в кэкшк или нет.

```typescript
nvmCache.has(id);
```

### keys

Возвращает массив строк - все ключи, для которых есть закэшированные значения.

```typescript
nvmCache.keys;
```

---
_Source: https://npm.io/package/nvm-cache · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
