full site update
This commit is contained in:
73
node_modules/unstorage/drivers/localstorage.cjs
generated
vendored
Normal file
73
node_modules/unstorage/drivers/localstorage.cjs
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _utils = require("./utils/index.cjs");
|
||||
const DRIVER_NAME = "localstorage";
|
||||
module.exports = (0, _utils.defineDriver)((opts = {}) => {
|
||||
const storage = opts.storage || opts.localStorage || opts.sessionStorage || (opts.window || globalThis.window)?.[opts.windowKey || "localStorage"];
|
||||
if (!storage) {
|
||||
throw (0, _utils.createRequiredError)(DRIVER_NAME, "localStorage");
|
||||
}
|
||||
const base = opts.base ? (0, _utils.normalizeKey)(opts.base) : "";
|
||||
const r = key => (base ? `${base}:` : "") + key;
|
||||
let _storageListener;
|
||||
const _unwatch = () => {
|
||||
if (_storageListener) {
|
||||
opts.window?.removeEventListener("storage", _storageListener);
|
||||
}
|
||||
_storageListener = void 0;
|
||||
};
|
||||
return {
|
||||
name: DRIVER_NAME,
|
||||
options: opts,
|
||||
getInstance: () => storage,
|
||||
hasItem(key) {
|
||||
return Object.prototype.hasOwnProperty.call(storage, r(key));
|
||||
},
|
||||
getItem(key) {
|
||||
return storage.getItem(r(key));
|
||||
},
|
||||
setItem(key, value) {
|
||||
return storage.setItem(r(key), value);
|
||||
},
|
||||
removeItem(key) {
|
||||
return storage.removeItem(r(key));
|
||||
},
|
||||
getKeys() {
|
||||
const allKeys = Object.keys(storage);
|
||||
return base ? allKeys.filter(key => key.startsWith(`${base}:`)).map(key => key.slice(base.length + 1)) : allKeys;
|
||||
},
|
||||
clear(prefix) {
|
||||
const _base = [base, prefix].filter(Boolean).join(":");
|
||||
if (_base) {
|
||||
for (const key of Object.keys(storage)) {
|
||||
if (key.startsWith(`${_base}:`)) {
|
||||
storage?.removeItem(key);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
storage.clear();
|
||||
}
|
||||
},
|
||||
dispose() {
|
||||
if (opts.window && _storageListener) {
|
||||
opts.window.removeEventListener("storage", _storageListener);
|
||||
}
|
||||
},
|
||||
watch(callback) {
|
||||
if (!opts.window) {
|
||||
return _unwatch;
|
||||
}
|
||||
_storageListener = ev => {
|
||||
if (ev.key) {
|
||||
callback(ev.newValue ? "update" : "remove", ev.key);
|
||||
}
|
||||
};
|
||||
opts.window.addEventListener("storage", _storageListener);
|
||||
return _unwatch;
|
||||
}
|
||||
};
|
||||
});
|
Reference in New Issue
Block a user