New: Introducing PHP and Composer Support.Read the Announcement
Socket
Book a DemoInstallSign in
Socket

redux-persist-expire

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redux-persist-expire

Create expiring storage for your Redux stores

latest
Source
npmnpm
Version
1.1.1
Version published
Maintainers
1
Created
Source

redux-persist-expire

npm

Expiring transformer for redux-persist – Create expiring storage for your Redux stores

Installation

npm install redux-persist-expire

Usage

Create a transform using expireReducer(reducerKey, config) where reducerKey is the reducer to which expiry is to be applied and configuration can be used to configure expire behavior.

const { persistReducer, persistStore } = require('redux-persist');

// Import the transformer creator
const expireReducer = require('redux-persist-expire');

// Create persisted reducers using redux-persist
const persistedReducers = persistReducer({
    transforms: [
       // Create a transformer by passing the reducer key and configuration. Values
       // shown below are the available configurations with default values
       expireReducer('preference', {
         // (Optional) Key to be used for the time relative to which store is to be expired
         persistedAtKey: '__persisted_at',
         // (Required) Seconds after which store will be expired
         expireSeconds: null,
         // (Optional) State to be used for resetting e.g. provide initial reducer state
         expiredState: {},
         // (Optional) Use it if you don't want to manually set the time in the reducer i.e. at `persistedAtKey` 
         // and want the store to  be automatically expired if the record is not updated in the `expireSeconds` time
         autoExpire: false
       })
       // You can add more `expireReducer` calls here for different reducers
       // that you may want to expire
    ]
  },
  rootReducer,
);

export const store = createStore(persistedReducers);
export const persist = persistStore(store);

Examples

Here is the configuration for the common usecases

Expire the item in store if it has not been updated for the past n seconds

// Reset `preference` key to empty object if it has not been updated for the past hour
expireReducer('preference', {
    expireSeconds: 3600
})

Reset an item to empty array after it has not been updated for the past 30 minutes

// Reset `preference` key to given defaults if it has not been updated for the past hour
expireReducer('preference', {
    expireSeconds: 1800,
    expiredState: {
      viewType: 'list',
      token: ''
    }
})

Expire the item in store after 30 minutes of loading it

// Reset `users` key to empty array if it had been loaded 30 minutes ago
expireReducer('users', {
    persistedAtKey: 'loadedAt',
    expireSeconds: 1800,
    expiredState: []        // Reset to empty array after expiry
})

// Note that in this case, you have to manually set the `loadedAt` in
// this case e.g. your reducer might look like this
...
case USERS_LOADED:
    return {
      loadedAt: moment(),  // or use (new Date()).toJSON()
      users: payload
    };
...

Feel free to open an issue if you need help with some specific usecase.

Contributions

  • Report issues with problems and suggestions
  • Open pull request with improvements
  • Spread the word
  • Reach out with any feedback Twitter URL

License

MIT © Kamran Ahmed

FAQs

Package last updated on 27 Aug 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts