
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
@thetaproom/simple-cache
Advanced tools
A tiny, zero-dependency library which implements additional utilities on top of the Storage API we're all used to.
A tiny, zero-dependency library which implements additional utilities on top of the Storage API we're all used to. Features include:
yarn add simple-cache
The utility class implements the same interface you're used with the native (Storage Web API)[https://developer.mozilla.org/en-US/docs/Web/API/Storage].
const cache = new Cache({
storage: localStorage || sessionStorage,
expiration: {
amount: 1,
unit: "minutes" || "hours" || "days"
},
});
/**
* @param key
* @param value
* @param expirationSettings - optional
*/
cache.setItem(
"resource",
{
test:
"test"
},
{
amount: 60,
unit: "minutes"|"hours"|"days",
neverExpire: true|false
}
)
/**
* @param key name of key being cahed
* @param value value being stored, uses JSON.stringify for all implemenations currently
*/
cache.setItem("resource", { test: "test" });
/**
* @returns cached resource or undefined if expired
*/
cache.getItem("resource");
/**
* get item return a wrapped version of your data with the expiration date and settings
* @param {string} resource get from cache
* @param {boolean} returnOld optional, if expired, return resource and expiration time
*/
cache.getItem("resource", true);
/**
* @returns {void}
*/
cache.clear()
/**
* @returns {void}
*/
cache.removeItem("resource")
/**
* the library assumes soft deleting if you pass
* expirations to removeItem and soft deleted items
* can be retrieved from cache.getRemovedItem(original key)
*
* if expiration is set, this method will return the key to the archived resource
* @returns {void|string}
*/
cache.removeItem("resource", expiration)
/**
* change the global configuration later in the appliction
* lifecycle
*/
cache.setExpiration({
amount: 2,
unit: "days",
neverExpire: true, // never expire overrides other settings
})
Cacher is static utility class so to extend upon it you can simply inherit or inject the class.
inject config options into the new instances of the class. The flexibility here allows for you to create many different types of storage i.e. one for localStorage, one for sessionStorage.
Defaults:
you can change these defaults on a global level by passing a config object into the constructor of the class. This give you the flexibility to generate as many caches as you need.
{
storage: sessionStorage || localStorage
expiration: {
amount: 30,
unit: "minutes" | "hours" | "days"
}
}
yarn test
FAQs
A tiny, zero-dependency library which implements additional utilities on top of the Storage API we're all used to.
We found that @thetaproom/simple-cache demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

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.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.