full site update
This commit is contained in:
57
node_modules/unstorage/drivers/lru-cache.mjs
generated
vendored
Normal file
57
node_modules/unstorage/drivers/lru-cache.mjs
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
import { defineDriver } from "./utils/index.mjs";
|
||||
import { LRUCache } from "lru-cache";
|
||||
const DRIVER_NAME = "lru-cache";
|
||||
export default defineDriver((opts = {}) => {
|
||||
const cache = new LRUCache({
|
||||
max: 1e3,
|
||||
sizeCalculation: opts.maxSize || opts.maxEntrySize ? (value, key) => {
|
||||
return key.length + byteLength(value);
|
||||
} : void 0,
|
||||
...opts
|
||||
});
|
||||
return {
|
||||
name: DRIVER_NAME,
|
||||
options: opts,
|
||||
getInstance: () => cache,
|
||||
hasItem(key) {
|
||||
return cache.has(key);
|
||||
},
|
||||
getItem(key) {
|
||||
return cache.get(key) ?? null;
|
||||
},
|
||||
getItemRaw(key) {
|
||||
return cache.get(key) ?? null;
|
||||
},
|
||||
setItem(key, value) {
|
||||
cache.set(key, value);
|
||||
},
|
||||
setItemRaw(key, value) {
|
||||
cache.set(key, value);
|
||||
},
|
||||
removeItem(key) {
|
||||
cache.delete(key);
|
||||
},
|
||||
getKeys() {
|
||||
return [...cache.keys()];
|
||||
},
|
||||
clear() {
|
||||
cache.clear();
|
||||
},
|
||||
dispose() {
|
||||
cache.clear();
|
||||
}
|
||||
};
|
||||
});
|
||||
function byteLength(value) {
|
||||
if (typeof Buffer !== "undefined") {
|
||||
try {
|
||||
return Buffer.byteLength(value);
|
||||
} catch {
|
||||
}
|
||||
}
|
||||
try {
|
||||
return typeof value === "string" ? value.length : JSON.stringify(value).length;
|
||||
} catch {
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user