estruyf / indexeddb-cache

IndexedDB Caching Solution

Home Page:https://www.npmjs.com/package/@estruyf/icache

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IndexedDB Caching Solution

Cache solution which makes use of IndexedDB storage in the browser to avoid reaching the size limits of localStorage and sessionStorage.

Installation

# NPM
npm i @estruyf/icache

# pnpm
pnpm i @estruyf/icache

# Yarn
yarn add @estruyf/icache

Usage

You can start using the cache service as follows:

import { CacheService, DateHelper, DateInterval } from '@estruyf/icache';

const cache = new CacheService(`EventCache`);
await cache.init();

// Write data to the cache
await cache.put(`YourCacheKey`, <data>, DateHelper.dateAdd(Date(), DateInterval.minute, 1));

// Read data from the cache
const eventData = await cache.get(`YourCacheKey`);

CacheService

The CacheService is the main class which you will use to interact with the cache. It has the following methods:

init

The init method will initialize the cache. This will create the IndexedDB database and the required tables.

const cache = new CacheService(`EventCache`);
await cache.init();

get

The get method will read the data from the cache.

// When the cache key is not found, it will throw an error
const eventData = await cache.get<string>(`YourCacheKey`);

// If you want, you can also tell the service to not throw an error when the cache key is not found
const eventData = await cache.get<string>(`YourCacheKey`, false);

put

The put method will write data to the cache. You can also define an expiration date for the data.

// If no expiration date is defined, the data will be stored for 1 hour
await cache.put(`YourCacheKey`, <data>);

// If you want to define an expiration date, you can do it as follows
await cache.put(`YourCacheKey`, <data>, DateHelper.dateAdd(Date(), DateInterval.minute, 1));

delete

The delete method will remove the data from the cache.

await cache.delete(`YourCacheKey`);

flush

The flush method will remove all the data from the cache.

await cache.flush();

DateHelper

The DateHelper is a helper class which you can use to calculate the expiration date of your cache.

import { DateHelper, DateInterval } from '@estruyf/icache';

// Add 1 minute to the current date
const expirationDate = DateHelper.dateAdd(Date(), DateInterval.minute, 1);

DateInterval

The DateInterval is an enum which you can use to define the interval you want to add to a date.

  • second
  • minute
  • hour
  • day
  • week
  • month
  • quarter
  • year

Changelog

Check it out here: changelog

Feedback

If you have feedback or issues, feel free to report them on the issue list of this project: estruyf/indexeddb-cache.

Visitors

About

IndexedDB Caching Solution

https://www.npmjs.com/package/@estruyf/icache

License:MIT License


Languages

Language:TypeScript 96.4%Language:JavaScript 3.6%