# @openteamsinc/caching-client

> Example Caching Client (HTTP Client using the Cache API). This example cache any request that is made using the available functions.

Latest version **0.1.6** (published 2021-07-13) · BSD-3-Clause license · 0 weekly downloads

## Install

```sh
npm install @openteamsinc/caching-client
pnpm add @openteamsinc/caching-client
yarn add @openteamsinc/caching-client
bun add @openteamsinc/caching-client
```

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.6 |
| Published | 2021-07-13 |
| First published | 2020-11-24 |
| Weekly downloads | 0 |
| License | BSD-3-Clause |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 112.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Daniel Althviz |
| Maintainers | maryamkhidir, dcharbon, hoo761, kramba228, amaxfield |
| Keywords | Cache, HTTP, Client, Semantic |

## Links

- npm: https://www.npmjs.com/package/@openteamsinc/caching-client
- Repository: https://gitlab.com/openteams/scrud-nuxt
- Homepage: https://github.com/openteamsinc/scrud-nuxt/tree/master/cachingClient#readme
- Issues: https://github.com/openteamsinc/scrud-nuxt/issues
- npm.io page: https://npm.io/package/@openteamsinc/caching-client

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 0.1.6 (latest) — 2021-07-13
- 0.1.5 — 2021-07-09
- 0.1.4 — 2021-07-02
- 0.1.3 — 2021-06-10
- 0.1.2 — 2021-01-26
- 0.1.1 — 2020-12-11
- 0.1.0 — 2020-11-24

## README

# Caching Client

Caching Client (HTTP Client using the Cache API).

## Available functions

* `constructor`: Doing `new CachingClient` you can pass the following options:
    * `cacheVersion`: Default 1
    * `currentCache`: Default 'read-through'
    * `jsonSchemaRelHeader`: Default 'rel=\'describedBy\''
    * `jsonSchemaEnvelopType`: Default 'https://api.openteams.com/json-schema/Envelope'
* `clearCache`: Removes any entry in the managed cache store.
* `clearUnknownCache`: Removes any entry in caches not being managed by the client.
* Requests (`GET`, `OPTIONS`, `POST`, `PUT`, `DELETE`): Each request can be used calling its respective function (i.e `get(...)`, `options(...)`, `post(...)`, `put(...)`, and `delete(...)`).

    The parameters for the available functions are:
    * `url`: URL to fetch.
    * `body`: Content of the request (in the case of `POST` or `PUT` requests).
    * `options`: To add or override the options used to fetch the given URL (`headers`, `mode`, `method`, etc.). It is a key-value object. Also you can add a `json` option if you want to get the response JSON parsed body only i.e `{json: true}`

## Build lib

To build a lib to be used in the browser you can use `npm run build:lib` this will create the `index.js` file that can be used from an HTML file with a script tag like `<script type="text/javascript" src="index.js"></script>`

## Use the package

To use the package you need to install it from the source with something like `npm install --save <path to source>`

After that, you can use something like `import CachingClient from 'caching-client'`

## Demo Setup
To play with the caching client you can use the [`http-server`](https://www.npmjs.com/package/http-server) package:

```
npm install http-server -g
```

And under the `demo` directory:

```
http-server -p 3000
```

To build the demo after doing changes to the source code you can run `npm run build:demo`

## Demo

* Follow the setup above.
* Go to http://localhost:3000
* Open the console in your browser.
* Create an instance of the Caching Client: `client = cachingClient.default()` 
* Run something like `await cachingClient.get("https://jsonplaceholder.typicode.com/users/1/todos", true)`.
* Check with the browser devtools the Cache Storage section (in the case of Mozilla to update the cache view you need to close and reopen the devtool panel).

## Resources checked

* https://jasonwatmore.com/post/2020/04/18/fetch-a-lightweight-fetch-wrapper-to-simplify-http-requests
* https://github.com/GoogleChrome/samples/tree/gh-pages/service-worker/read-through-caching
* https://gist.github.com/niallo/3109252#gistcomment-2883309
* https://stackoverflow.com/a/58209729

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