import DataStore from "@modules/datastore"; /** * `Data` is a simple utility class for the management of plugin data. An instance is available on {@link BdApi}. * @type Data * @summary {@link Data} is a simple utility class for the management of plugin data. * @name Data */ class Data { #callerName = ""; constructor(callerName) { if (!callerName) return; this.#callerName = callerName; } /** * Saves JSON-serializable data. * * @param {string} pluginName Name of the plugin saving data * @param {string} key Which piece of data to store * @param {any} data The data to be saved */ save(pluginName, key, data) { if (this.#callerName) { data = key; key = pluginName; pluginName = this.#callerName; } return DataStore.setPluginData(pluginName, key, data); } /** * Loads previously stored data. * * @param {string} pluginName Name of the plugin loading data * @param {string} key Which piece of data to load * @returns {any} The stored data */ load(pluginName, key) { if (this.#callerName) { key = pluginName; pluginName = this.#callerName; } return DataStore.getPluginData(pluginName, key); } /** * Deletes a piece of stored data. This is different than saving `null` or `undefined`. * * @param {string} pluginName Name of the plugin deleting data * @param {string} key Which piece of data to delete. */ delete(pluginName, key) { if (this.#callerName) { key = pluginName; pluginName = this.#callerName; } return DataStore.deletePluginData(pluginName, key); } } Object.freeze(Data); Object.freeze(Data.prototype); export default Data;