@erboladaiorg/totam-ratione-deleniti v7.11.77
Installation
yarn add @erboladaiorg/totam-ratione-deleniti --save
Usage
const { Cache } = require("@erboladaiorg/totam-ratione-deleniti")
const maxSize = 2 // will limit max cache size upon cache.get()
const getUser = async (id) => {
const response = await fetch("https://dummyjson.com/users/" + id)
const { firstName, lastName, address } = await response.json()
return {
id,
name: `${firstName} ${lastName}`,
address,
}
}
const usersCached = new Cache(getUser, maxSize)
Promise.all([
usersCached.get(1),
usersCached.get(2),
usersCached.get(3),
usersCached.get(4),
]).then((users) => {
console.log(usersCached.data) // contains only last maxSize users (3 and 4)
console.log(usersCached.size) // 2
})
const { Cache } = require("@erboladaiorg/totam-ratione-deleniti")
// create cache with factory function (may take any number of parameters)
const cache = new Cache(() => Math.random())
// each time you call the cache.get with same parameters
// you will get the same once lazy cached answer
const a = cache.get(1, 2, 3)
const b = cache.get(1, 2, 3) // this will return the same as above
const c = cache.get(1, 2)
const d = cache.get(1, 2, 4)
console.log(a === b) // true
console.log(a !== c) // true
console.log(a !== d) // true
API
class Cache<T = unknown> {
constructor(factoryFunction: (...args: any[]) => T, maxSize: number = Infinity) {
//
}
}
- creates a LaterMom (Lazy Map) instance with factory function for lazy cache
methods
get(...args: any[]): T
- get entry at key created from args, lazy instantiated by factorycreateKey(...args: any[]): string
- creates string keycreate(...args: any[]): T
- wrapped factory functionhasKey(key: string): boolean
- check if has entry at keyhas(...args: any[]): boolean
- check if has entry at key created from argsdeleteKey(key: string): boolean
- deletes entry from data at keydelete(...args): boolean
- deletes entry from data at key created from argssize: number
- returns size of datamaxSize: number
- on insert the oldest items are deleted until reached maxSize
properties:
- data: Map
Tests
$ jest
PASS ./index.test.js
✓ Calls factory once when asked for same key many times (62 ms)
✓ Getter is able to handle multiple arguments
✓ Readme has working code (1 ms)
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Snapshots: 0 total
Time: 0.946 s, estimated 1 s
Ran all test suites.
Done in 1.44s.
License
MIT
Author
Jacek Pietal @ 2019-2021
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago