appcacher

1.0.8 • Public • Published

Appcacher npm NPM total downloads

Create and manage your cache with Appcacher.

NOTE: Appcacher only works for caching GET requests.

Install

Install with npm:

$ npm install appcacher

Quickstart

import { AppCacher } from "appcacher";
 
 
const app = new AppCacher('my-pokemon-cache', 60 * 60 * 1000); // keep the cache for 1 hour
app.create();
 
const url = 'https://pokeapi.co/api/v2/pokemon/1';
const req = new Request(url);
 
app.add(req);           
 
//or 
 
app.add(url);
 
async function fetchResponse() {
    const cachedResponse = await app.get(req);
    console.log(cachedResponse.json().then((result) => console.log(result))); // will console result from the cache which came from the pokeApi. 
}
 
fetchResponse();

API

Constructor

Params

  • name {String}: Name for the cache.
  • ttl {Number}: Time to live for the cache.

Example

const app = new AppCacher('my-pokemon-cache');

.create

Creates a cache.

Params

  • returns {Object}: A Promise that resolves to the requested Cache object.

Example

app.create();

.add

Add request to cache. You can either use the url or the object of the request.

Params

  • req {String|Object}: The url of the request to be cached, or the request object to be cached. For example: const req = new Request(url)

Example

app.add('https://request/to/cache');
// or
const otherRequestParams = {}; // like headers, method etc
const req = new Request('https://request/to/cache', otherRequestParams)
app.add(req);

.addAll

Add multiple requests to cache. You can either use the urls or the objects of the request.

Params

  • req {Array}: The Array of urls of the request to be cached, or the request objects to be cached.

Example

app.addAll(['https://request/to/cache/1', 'https://request/to/cache/2', 'https://request/to/cache/3']);
// or
const otherRequestParams = {}; // like headers, method etc
const req1 = new Request('https://request/to/cache/1', otherRequestParams)
const req2 = new Request('https://request/to/cache/2', {})
const req3 = new Request('https://request/to/cache/3', {})
app.addAll([req1, req2, req3]);

.get

Return the response of request from cache. You can use the url or the object of the request.

Params

  • req {String|Object}: The url of the request to be matched, or the request object.
  • returns {Object}: Returns a Promise that resolves to the Response associated with the first matching request in the Cache object. If no match is found, the Promise resolves to undefined.

Example

let cachedResponse; 
cachedResponse = app.get('https://request/to/cache');
// or
const otherRequestParams = {}; // like headers, method etc
const req = new Request('https://request/to/cache', otherRequestParams)
cachedResponse = app.get(req);
console.log(cachedResponse); // API response. 

.getAll

Return all responses of a matching request from cache. You can use the url or the object of the request.

Params

  • req {Array}: The url of the request to be matched, or the request object.
  • options {Object}: (Optional params) An options object allowing you to set specific control options for the matching performed. The available options are given below. Default is an empty object.
  • returns {Object}: Returns a Promise that resolves to the array of all matching responses. If no match is found, the Promise resolves to undefined.

Optional Params

  • ignoreSearch {Boolean}: A Boolean that specifies whether the matching process should ignore the query string in the url. It defaults to false.
  • ignoreMethod {Boolean}: A Boolean that, when set to true, prevents matching operations from validating the Request http method.
  • ignoreVary {Boolean}: A Boolean that when set to true tells the matching operation not to perform VARY header matching — i.e. if the URL matches you will get a match regardless of the Response object having a VARY header or not. It defaults to false.

Example

let cachedResponse; 
cachedResponse = app.getAll('/cache');
// or
const otherRequestParams = {}; // like headers, method etc
const req = new Request('/cache', otherRequestParams)
cachedResponse = app.getAll(req);
console.log(cachedResponse); // API responses Array. 

.remove

Removes a specific request from the cache. You can use the url or the object of the request.

Params

  • req {String|Object}: The url of the request to be removed, or the request object to be removed.
  • returns {Object}: a Promise that resolves to true if the cache entry is removed, or false otherwise.

Example

app.remove('https://request/to/cache');
// or
const otherRequestParams = {}; // like headers, method etc
const req = new Request('https://request/to/cache', otherRequestParams)
app.remove(req);

.delete

Deletes the entire cache from the browser.

Params

  • returns {Object}: a Promise that resolves to true if the cache is deleted, or false otherwise.

Example

app.delete().then(function(response) {
    console.log(response);   // true
});

.put

Allows key/value to be added to the current Cache object. Note that put will overwrite any key/value pair previously stored in the cache that matches the request.

Params

  • req {String|Object}: The url of the request to add, or the request object to be added.
  • resp {Object}: The response of the request to add, for ex: new Response('{"foo": "bar"}')). If you don't want to pass anything in response param, use add().

Example

app.put('https://request/to/cache', {foo: 'bar'});
// or
const otherRequestParams = {}; // like headers, method etc
const req = new Request('https://request/to/cache', otherRequestParams)
const options = {
    headers: {
      'Content-Type': 'application/json'
    }
  }
const resp = new Response({foo: 'bar'}, options);
app.put(req, resp).then(function(response) {
    console.log(response);   // true
});

.has

Check whether your cache is present or not

Params

  • cacheName {String}: The name of the cache to check.
  • returns {Boolean}: returns true if the cache is present, or false otherwise.

Example

app.has('my-pokemon-cache'); // returns true

.getAllCacheNames

Returns an array with the names of all caches present. This can be useful if you want to iterate over the entries in all caches.

Params

  • returns {Array}: list with the names of all caches present.

Example

getAllCacheNames(); // returns ['my-pokemon-cache']

.getStorageQouta[EXPERIMENTAL]

Returns the size, in bytes, the total qouta and the used qouta.

Params

  • returns {Object}: list with the usage and total qouta with details.

Example

getStorageQouta(); // returns {quota: 239400581529, usage: 725290, usageDetails: {caches: 721920, indexedDB: 3370}}

License

Copyright © 2020, Gautam Pahuja. Released under the MIT License.

Package Sidebar

Install

npm i appcacher

Weekly Downloads

8

Version

1.0.8

License

MIT

Unpacked Size

50.3 kB

Total Files

17

Last publish

Collaborators

  • gpahuja