npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@slothkit/storage

v1.2.1

Published

Enhanced localStorage with expiration, encryption, and compression.

Downloads

9

Readme

NPM Version GitHub last commit NPM Downloads

Storage Manager

The Storage Manager is a utility library that extends the functionality of the browser's localStorage, adding support for expiration management, data encryption, and data compression.

Features

  • Expiration Management: Automatically manage the expiration time of stored data.
  • Encryption: Protect your stored data with encryption.
  • Compression: Reduce the size of stored data.

Installation

Install the Storage Manager using npm:

npm install @slothkit/storage

Usage

Initialization

Before using the Storage Manager, you need to initialize it with optional global configuration.

import { init } from '@slothkit/storage'

init({
  // Custom encryptor, if not configured, the built-in encryptor will be used
  encryptor: {
    encrypt: yourEncryptFunction,
    decrypt: yourDecryptFunction
  },
  // Whether to encrypt all data
  encrypt: true,
  // Whether to compress all data
  compress: true
})

You can alse import by this way:

import { storage } from '@slothkit/storage'
storage.init({/** your config */})

Saving Data

You can save data in localStorage with optional configuration for encryption, compression, and expiration time.

import { set } from '@slothkit/storage'

// Expires in 1 hour, and encrypts, compresses the data
set('myKey', 'myValue', { encrypt: true, compress: true, ttl: 3600 })

// Expires in 1s
set('myKey2', 'myValue2', { expires: Date.now() + 1 })

Retrieving Data

Retrieve data from localStorage, automatically handling encryption, compression, and expiration.

import { get } from '@slothkit/storage'

// If the data has expired, you will get null
const value = get('myKey')

Removing Items

Remove items from localStorage.

import { remove } from '@slothkit/storage'

remove('myKey')

Flushing Expired Items

Remove all expired items from localStorage. You can also force remove all items with expiration times.

import { flush } from '@slothkit/storage'

// Removes only expired items
flush()

// Removes all items with expiration times, regardless of whether they have expired or not
flush(true)

Clearing All Items

Clear all items from localStorage.

import { clear } from '@slothkit/storage'

clear()

API

init(config: GlobalConfig = {})

Initialize the Storage Manager with global configuration.

  • config: Global configuration object.
    • encryptor: Object containing encrypt and decrypt functions.
    • encrypt: Boolean indicating whether to enable encryption by default.
    • compress: Boolean indicating whether to enable compression by default.

set<T = any>(key: string, value: T, config: StorageConfig = {})

Save data in localStorage.

  • key: The key for the item.
  • value: The value to store.
  • config: Configuration object.
    • encrypt: Boolean indicating whether to encrypt the item.
    • compress: Boolean indicating whether to compress the item.
    • ttl: Time to live in seconds.
    • expires: Expiration timestamp.

get<T = any>(key: string): T | null

Retrieve data from localStorage.

  • key: The key for the item.

remove(key: string)

Remove an item from localStorage.

  • key: The key for the item.

flush(force: boolean = false)

Remove expired items from localStorage.

  • force: Boolean indicating whether to force remove all items with expiration times.

clear()

Clear all items from localStorage.

getExp(key: string): number | void | null

Get the expiration timestamp of an item.

  • key: The key for the item.

License

This project is licensed under the MIT License. See the LICENSE file for details.