soon-storage
v2.2.0
Published
A type-safe storage solution for localStorage and sessionStorage with built-in TypeScript support, ensuring robust and scalable browser data persistence.
Maintainers
Readme
soon-storage 🚀
A type-safe storage solution for localStorage and sessionStorage with built-in TypeScript support, ensuring robust and scalable browser data persistence.
Features ✨
- 🔐 Type-Safe: Built with TypeScript for strong typing and better developer experience.
- 📦 Flexible Storage: Supports both
localStorageandsessionStorage. - ⚙️ Customizable: Easily define custom data transformations.

Usage
import { createStorage, parsers as p } from "soon-storage";
const storage = createStorage({
// stored key prefix
prefix: "soon-",
// choose localStorage or SessionStorage
provider: () => localStorage,
// string,number,boolean,json are built-in transform method
// you can define your own transform like below for a Date type
transforms: {
name: p.string("Guest"), // field with default value
age: p.number(() => Math.random() * 100), // field with default value function
birth: p.define({
getter: (val) => (val === null ? null : new Date(val)),
setter: (val) => val.toISOString(),
}),
graduated: p.boolean(false), // field with default value
school: p.json<{
name: string;
address: string;
}>(), // field without default value
},
onSet: (key, value, oldValue) => {
console.log(`set ${key} from ${oldValue} to ${value}`);
},
onRemoved: (key) => {
console.log(`removed ${key}`);
},
});
// set a key-value
storage.birth.set(new Date("2008-08-08"));
// get a key-value
storage.birth.get();
// remove a key-value
storage.birth.remove();
// Get values with and without defaults
console.log(storage.name.get()); // Returns "Guest" if not set
console.log(storage.age.get()); // Returns random number (0,1) if not set
console.log(storage.graduated.get()); // Returns false if not set
console.log(storage.school.get()); // Returns null if not set
//set all key-values
storage.$.setAll({
name: "Lucy",
age: 100,
birth: new Date(),
graduated: false,
school: {
name: "Green Land",
address: "Qingdao",
},
});
// get all key-values
const allData = storage.$.getAll();
console.log(allData);
// remove all key-values
// only this instance keys would be removed
storage.$.removeAll();
