What is unstorage?
The 'unstorage' npm package is a versatile storage utility that provides a unified API for interacting with various storage backends. It allows developers to easily switch between different storage mechanisms such as local storage, session storage, and even remote storage solutions without changing the core logic of their applications.
What are unstorage's main functionalities?
Local Storage
This feature allows you to interact with local storage using a simple API. You can set, get, and remove items from local storage.
const { createStorage } = require('unstorage');
const localStorage = createStorage();
// Set a value
await localStorage.setItem('key', 'value');
// Get a value
const value = await localStorage.getItem('key');
console.log(value); // Outputs: 'value'
// Remove a value
await localStorage.removeItem('key');
Session Storage
This feature allows you to interact with session storage using the same API as local storage. You can set, get, and remove items from session storage.
const { createStorage } = require('unstorage');
const sessionStorage = createStorage({ driver: 'session' });
// Set a value
await sessionStorage.setItem('key', 'value');
// Get a value
const value = await sessionStorage.getItem('key');
console.log(value); // Outputs: 'value'
// Remove a value
await sessionStorage.removeItem('key');
Remote Storage
This feature allows you to interact with remote storage solutions via HTTP. You can set, get, and remove items from a remote storage backend.
const { createStorage } = require('unstorage');
const remoteStorage = createStorage({ driver: 'http', baseURL: 'https://api.example.com/storage' });
// Set a value
await remoteStorage.setItem('key', 'value');
// Get a value
const value = await remoteStorage.getItem('key');
console.log(value); // Outputs: 'value'
// Remove a value
await remoteStorage.removeItem('key');
Other packages similar to unstorage
localforage
LocalForage is a fast and simple storage library for JavaScript. It improves the offline experience of your web app by using asynchronous storage (IndexedDB or WebSQL) with a simple, localStorage-like API. Compared to unstorage, LocalForage is more focused on client-side storage and does not provide a unified API for different storage backends.
idb-keyval
idb-keyval is a small library that provides a simple key-value store backed by IndexedDB. It is very lightweight and easy to use, making it a good choice for simple storage needs. However, it lacks the flexibility and unified API of unstorage, which supports multiple storage backends.
store2
store2 is a versatile storage library for all JavaScript environments, including Node.js and browsers. It provides a unified API for localStorage, sessionStorage, and memory storage. While it offers similar functionality to unstorage, it does not support remote storage solutions.
💾 Unstorage
Unstorage provides an async Key-Value storage API with conventional features like multi driver mounting, watching and working with metadata, dozens of built-in drivers and a tiny core.
👉 Documentation
Features
- Designed for all environments: Browser, NodeJS, and Workers
- Lots of Built-in drivers
- Asynchronous API
- Unix-style driver mounting to combine storages
- Default in-memory storage
- Tree-shakable utils and tiny core
- Auto JSON value serialization and deserialization
- Banary and raw value support
- State snapshots and hydration
- Storage watcher
- HTTP Storage with built-in server
Usage
Install unstorage
npm package:
yarn add unstorage
npm install unstorage
pnpm add unstorage
import { createStorage } from "unstorage";
const storage = createStorage();
await storage.getItem("foo:bar");
👉 Check out the the documentation for usage information.
Contribution
- Clone repository
- Install dependencies with
pnpm install
- Use
pnpm dev
to start jest watcher verifying changes - Use
pnpm test
before pushing to ensure all tests and lint checks passing
License
MIT