Files
Tiber365/node_modules/unstorage/drivers/capacitor-preferences.mjs
2025-07-24 18:46:24 +02:00

44 lines
1.4 KiB
JavaScript

import { Preferences } from "@capacitor/preferences";
import { defineDriver, joinKeys, normalizeKey } from "./utils/index.mjs";
const DRIVER_NAME = "capacitor-preferences";
export default defineDriver(
(opts) => {
const base = normalizeKey(opts?.base || "");
const resolveKey = (key) => joinKeys(base, key);
return {
name: DRIVER_NAME,
options: opts,
getInstance: () => Preferences,
hasItem(key) {
return Preferences.keys().then((r) => r.keys.includes(resolveKey(key)));
},
getItem(key) {
return Preferences.get({ key: resolveKey(key) }).then((r) => r.value);
},
getItemRaw(key) {
return Preferences.get({ key: resolveKey(key) }).then((r) => r.value);
},
setItem(key, value) {
return Preferences.set({ key: resolveKey(key), value });
},
setItemRaw(key, value) {
return Preferences.set({ key: resolveKey(key), value });
},
removeItem(key) {
return Preferences.remove({ key: resolveKey(key) });
},
async getKeys() {
const { keys } = await Preferences.keys();
return keys.map((key) => key.slice(base.length));
},
async clear(prefix) {
const { keys } = await Preferences.keys();
const _prefix = resolveKey(prefix || "");
await Promise.all(
keys.filter((key) => key.startsWith(_prefix)).map((key) => Preferences.remove({ key }))
);
}
};
}
);