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

lightweight-localstorage

v1.0.5

Published

lightweight-localstorage is a lightweight utility for managing local storage in React and Next.js applications. It provides an easy-to-use API for setting, getting, and deleting items in local storage with support for a parent key to namespace the stored

Downloads

19

Readme

lightweight-localstorage

lightweight-localstorage is a lightweight utility for managing local storage in React and Next.js applications. It provides an easy-to-use API for setting, getting, and deleting items in local storage with support for a parent key to namespace the stored data.

Benefits

  • Namespace Support: Organize your local storage data under a parent key to avoid key collisions.
  • Ease of Use: Simple API for common local storage operations.
  • JSON Handling: Automatically handles JSON stringification and parsing.
  • Custom Parent Key: Flexibility to use a custom parent key if needed.

Installation

You can install lightweight-localstorage via npm:

npm i lightweight-localstorage

Usage
Importing the Package
First, import the package in your Next.js component or utility file:
import { ls } from "lightweight-localstorage";

Setting a Value

To set a value in local storage:

ls.set("key", "value");

Getting a Value

To get a value from local storage:

const value = ls.get("key");
console.log(value); // Output: 'value'

Getting All Values

To get all values from local storage:

const allData = ls.getAll();
console.log(allData);

Deleting a Value

To delete a value from local storage:

ls.remove("key");

Deleting All Values

To delete all values under the parent key:

ls.removeAll();

Clearing All Local Storage

To clear all local storage:

ls.clear();

Using a Custom Parent Key

You can create an instance with a custom parent key:

const ls = persistance("customKey");
ls.set("key", "value");
const value = ls.get("key");
console.log(value); // Output: 'value'

Example Code

Here's an example of how you can use lightweight-localstorage in a Next.js component to display local storage data:

import { useEffect, useState } from "react";
import { ls } from "lightweight-localstorage";

export default function LocalStorageComponent() {
  const [data, setData] = useState(null);

  useEffect(() => {
    const storedData = ls.getAll();
    setData(storedData);
  }, []);

  return (
    <div>
      <h1>Local Storage Data:</h1>
      <pre>{JSON.stringify(data, null, 2)}</pre>
    </div>
  );
}

Manual Implementation

If you prefer not to install the package, you can manually add the following code to your project: Visit if you like Subscribe a link

export const persistance = (parentKey = "nextpersist") => {
  const ls = {
    set: function (key, value, pkey = parentKey) {
      if (typeof window !== "undefined") {
        const storedData = localStorage.getItem(pkey);
        let data = storedData ? JSON.parse(storedData) : {};
        data[key] = JSON.stringify(value);
        localStorage.setItem(pkey, JSON.stringify(data));
      }
    },
    get: function (key, pkey = parentKey) {
      if (typeof window !== "undefined") {
        const storedData = localStorage.getItem(pkey);
        if (!storedData) return null;
        const data = JSON.parse(storedData);
        return data[key] ? JSON.parse(data[key]) : null;
      }
      return null;
    },
    getAll: function (pkey = parentKey) {
      if (typeof window !== "undefined") {
        const storedData = localStorage.getItem(pkey);
        if (!storedData) return null;
        const data = JSON.parse(storedData);
        Object.keys(data).forEach((key) => {
          data[key] = JSON.parse(data[key]);
        });
        ls.data = data;
        return data;
      }
      return null;
    },
    delete: function (key, pkey = parentKey) {
      if (typeof window !== "undefined") {
        const storedData = localStorage.getItem(pkey);
        if (!storedData) return;
        const data = JSON.parse(storedData);
        delete data[key];
        localStorage.setItem(pkey, JSON.stringify(data));
      }
    },
    deleteAll: function (pkey = parentKey) {
      if (typeof window !== "undefined") {
        return localStorage.removeItem(pkey);
      }
    },
    clear: function () {
      if (typeof window !== "undefined") {
        return localStorage.clear();
      }
    },
  };
  return ls;
};

export const ls = persistance("nextpersist");