@nlabs/arkhamjs-storage-node
Version:
NodeJS storage for ArkhamJS
147 lines (146 loc) • 12.6 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var NodeStorage_exports = {};
__export(NodeStorage_exports, {
NodeStorage: () => NodeStorage
});
module.exports = __toCommonJS(NodeStorage_exports);
var import_node_persist = __toESM(require("node-persist"));
class NodeStorage {
constructor(options = {}) {
this.options = {
dir: "/tmp",
encoding: "utf8",
expiredInterval: 3 * 60 * 1e3,
forgiveParseErrors: false,
logging: false,
parse: JSON.parse,
stringify: JSON.stringify
};
this.clearStorageData = this.clearStorageData.bind(this);
this.getStorageData = this.getStorageData.bind(this);
this.setStorageData = this.setStorageData.bind(this);
this.options = { ...this.options, ...options };
import_node_persist.default.init(this.options);
}
/**
* Removes all keys from persistent data.
*
* @returns {Promise<boolean>} Whether data was successfully removed.
*/
static clearPersistData() {
try {
return new Promise((resolve) => {
import_node_persist.default.clear().then(() => resolve(true)).catch(() => resolve(false));
});
} catch (error) {
return Promise.resolve(false);
}
}
/**
* Removes a key from persistent data.
*
* @param {string} key Key associated with the data to remove.
* @returns {Promise<boolean>} Whether data was successfully removed.
*/
static delPersistData(key) {
try {
return new Promise((resolve) => {
import_node_persist.default.removeItem(key).then(() => resolve(true)).catch(() => resolve(false));
});
} catch (error) {
return Promise.resolve(false);
}
}
/**
* Get a key value from persistent data.
*
* @param {string} key The key for data.
* @returns {Promise<any>} the data object associated with the key.
*/
static getPersistData(key) {
try {
return new Promise((resolve) => {
import_node_persist.default.getItem(key).then((value) => {
const updatedValue = value ? JSON.parse(value) : null;
resolve(updatedValue);
}).catch(() => resolve(null));
});
} catch (error) {
return Promise.resolve(null);
}
}
/**
* Saves data to persistent data.
*
* @param {string} key Key to store data.
* @param {any} value Data to store.
* @returns {Promise<boolean>} Whether data was successfully saved.
*/
static setPersistData(key, value) {
try {
return new Promise((resolve) => {
import_node_persist.default.setItem(key, value).then(() => resolve(true)).catch(() => resolve(false));
});
} catch (error) {
return Promise.resolve(false);
}
}
/**
* Clears all data from storage.
*
* @returns {Promise<boolean>} Whether data was successfully saved.
*/
clearStorageData() {
return NodeStorage.clearPersistData();
}
/**
* Get a key value from storage.
*
* @param {string} key The key for data.
* @returns {Promise<any>} the data object associated with the key.
*/
getStorageData(key) {
return NodeStorage.getPersistData(key);
}
/**
* Saves data to storage.
*
* @param {string} key Key to store data.
* @param {any} value Data to store.
* @returns {Promise<boolean>} Whether data was successfully saved.
*/
setStorageData(key, value) {
return NodeStorage.setPersistData(key, value);
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
NodeStorage
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL05vZGVTdG9yYWdlL05vZGVTdG9yYWdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IFBlcnNpc3RTdG9yYWdlLCB7SW5pdE9wdGlvbnN9IGZyb20gJ25vZGUtcGVyc2lzdCc7XG5cbmV4cG9ydCBjbGFzcyBOb2RlU3RvcmFnZSB7XG4gIHByaXZhdGUgb3B0aW9uczogSW5pdE9wdGlvbnMgPSB7XG4gICAgZGlyOiAnL3RtcCcsXG4gICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICBleHBpcmVkSW50ZXJ2YWw6IDMgKiA2MCAqIDEwMDAsXG4gICAgZm9yZ2l2ZVBhcnNlRXJyb3JzOiBmYWxzZSxcbiAgICBsb2dnaW5nOiBmYWxzZSxcbiAgICBwYXJzZTogSlNPTi5wYXJzZSxcbiAgICBzdHJpbmdpZnk6IEpTT04uc3RyaW5naWZ5XG4gIH07XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogSW5pdE9wdGlvbnMgPSB7fSkge1xuICAgIC8vIE1ldGhvZHNcbiAgICB0aGlzLmNsZWFyU3RvcmFnZURhdGEgPSB0aGlzLmNsZWFyU3RvcmFnZURhdGEuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFN0b3JhZ2VEYXRhID0gdGhpcy5nZXRTdG9yYWdlRGF0YS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0U3RvcmFnZURhdGEgPSB0aGlzLnNldFN0b3JhZ2VEYXRhLmJpbmQodGhpcyk7XG5cbiAgICAvLyBDb25maWd1cmF0aW9uXG4gICAgdGhpcy5vcHRpb25zID0gey4uLnRoaXMub3B0aW9ucywgLi4ub3B0aW9uc307XG4gICAgUGVyc2lzdFN0b3JhZ2UuaW5pdCh0aGlzLm9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGtleXMgZnJvbSBwZXJzaXN0ZW50IGRhdGEuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkLlxuICAgKi9cbiAgc3RhdGljIGNsZWFyUGVyc2lzdERhdGEoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBQZXJzaXN0U3RvcmFnZS5jbGVhcigpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gcmVzb2x2ZSh0cnVlKSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4gcmVzb2x2ZShmYWxzZSkpO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBrZXkgZnJvbSBwZXJzaXN0ZW50IGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGF0YSB0byByZW1vdmUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkLlxuICAgKi9cbiAgc3RhdGljIGRlbFBlcnNpc3REYXRhKGtleTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBQZXJzaXN0U3RvcmFnZS5yZW1vdmVJdGVtKGtleSlcbiAgICAgICAgICAudGhlbigoKSA9PiByZXNvbHZlKHRydWUpKVxuICAgICAgICAgIC5jYXRjaCgoKSA9PiByZXNvbHZlKGZhbHNlKSk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEga2V5IHZhbHVlIGZyb20gcGVyc2lzdGVudCBkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgZm9yIGRhdGEuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59IHRoZSBkYXRhIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGtleS5cbiAgICovXG4gIHN0YXRpYyBnZXRQZXJzaXN0RGF0YShrZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBQZXJzaXN0U3RvcmFnZS5nZXRJdGVtKGtleSlcbiAgICAgICAgICAudGhlbigodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlID0gdmFsdWUgPyBKU09OLnBhcnNlKHZhbHVlKSA6IG51bGw7XG4gICAgICAgICAgICByZXNvbHZlKHVwZGF0ZWRWYWx1ZSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4gcmVzb2x2ZShudWxsKSk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBkYXRhIHRvIHBlcnNpc3RlbnQgZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXkgdG8gc3RvcmUgZGF0YS5cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlIERhdGEgdG8gc3RvcmUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSBzYXZlZC5cbiAgICovXG4gIHN0YXRpYyBzZXRQZXJzaXN0RGF0YShrZXk6IHN0cmluZywgdmFsdWUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIFBlcnNpc3RTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSlcbiAgICAgICAgICAudGhlbigoKSA9PiByZXNvbHZlKHRydWUpKVxuICAgICAgICAgIC5jYXRjaCgoKSA9PiByZXNvbHZlKGZhbHNlKSk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBkYXRhIGZyb20gc3RvcmFnZS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IFdoZXRoZXIgZGF0YSB3YXMgc3VjY2Vzc2Z1bGx5IHNhdmVkLlxuICAgKi9cbiAgY2xlYXJTdG9yYWdlRGF0YSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gTm9kZVN0b3JhZ2UuY2xlYXJQZXJzaXN0RGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGtleSB2YWx1ZSBmcm9tIHN0b3JhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBmb3IgZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn0gdGhlIGRhdGEgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5LlxuICAgKi9cbiAgZ2V0U3RvcmFnZURhdGEoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBOb2RlU3RvcmFnZS5nZXRQZXJzaXN0RGF0YShrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGRhdGEgdG8gc3RvcmFnZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXkgdG8gc3RvcmUgZGF0YS5cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlIERhdGEgdG8gc3RvcmUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSBzYXZlZC5cbiAgICovXG4gIHNldFN0b3JhZ2VEYXRhKGtleTogc3RyaW5nLCB2YWx1ZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBOb2RlU3RvcmFnZS5zZXRQZXJzaXN0RGF0YShrZXksIHZhbHVlKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBLDBCQUEwQztBQUVuQyxNQUFNLFlBQVk7QUFBQSxFQVd2QixZQUFZLFVBQXVCLENBQUMsR0FBRztBQVZ2QyxTQUFRLFVBQXVCO0FBQUEsTUFDN0IsS0FBSztBQUFBLE1BQ0wsVUFBVTtBQUFBLE1BQ1YsaUJBQWlCLElBQUksS0FBSztBQUFBLE1BQzFCLG9CQUFvQjtBQUFBLE1BQ3BCLFNBQVM7QUFBQSxNQUNULE9BQU8sS0FBSztBQUFBLE1BQ1osV0FBVyxLQUFLO0FBQUEsSUFDbEI7QUFJRSxTQUFLLG1CQUFtQixLQUFLLGlCQUFpQixLQUFLLElBQUk7QUFDdkQsU0FBSyxpQkFBaUIsS0FBSyxlQUFlLEtBQUssSUFBSTtBQUNuRCxTQUFLLGlCQUFpQixLQUFLLGVBQWUsS0FBSyxJQUFJO0FBR25ELFNBQUssVUFBVSxFQUFDLEdBQUcsS0FBSyxTQUFTLEdBQUcsUUFBTztBQUMzQyx3QkFBQUEsUUFBZSxLQUFLLEtBQUssT0FBTztBQUFBLEVBQ2xDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBTyxtQkFBcUM7QUFDMUMsUUFBSTtBQUNGLGFBQU8sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM5Qiw0QkFBQUEsUUFBZSxNQUFNLEVBQ2xCLEtBQUssTUFBTSxRQUFRLElBQUksQ0FBQyxFQUN4QixNQUFNLE1BQU0sUUFBUSxLQUFLLENBQUM7QUFBQSxNQUMvQixDQUFDO0FBQUEsSUFDSCxTQUFRLE9BQU87QUFDYixhQUFPLFFBQVEsUUFBUSxLQUFLO0FBQUEsSUFDOUI7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFPLGVBQWUsS0FBK0I7QUFDbkQsUUFBSTtBQUNGLGFBQU8sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM5Qiw0QkFBQUEsUUFBZSxXQUFXLEdBQUcsRUFDMUIsS0FBSyxNQUFNLFFBQVEsSUFBSSxDQUFDLEVBQ3hCLE1BQU0sTUFBTSxRQUFRLEtBQUssQ0FBQztBQUFBLE1BQy9CLENBQUM7QUFBQSxJQUNILFNBQVEsT0FBTztBQUNiLGFBQU8sUUFBUSxRQUFRLEtBQUs7QUFBQSxJQUM5QjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQU8sZUFBZSxLQUEyQjtBQUMvQyxRQUFJO0FBQ0YsYUFBTyxJQUFJLFFBQVEsQ0FBQyxZQUFZO0FBQzlCLDRCQUFBQSxRQUFlLFFBQVEsR0FBRyxFQUN2QixLQUFLLENBQUMsVUFBa0I7QUFDdkIsZ0JBQU0sZUFBZSxRQUFRLEtBQUssTUFBTSxLQUFLLElBQUk7QUFDakQsa0JBQVEsWUFBWTtBQUFBLFFBQ3RCLENBQUMsRUFDQSxNQUFNLE1BQU0sUUFBUSxJQUFJLENBQUM7QUFBQSxNQUM5QixDQUFDO0FBQUEsSUFDSCxTQUFRLE9BQU87QUFDYixhQUFPLFFBQVEsUUFBUSxJQUFJO0FBQUEsSUFDN0I7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLE9BQU8sZUFBZSxLQUFhLE9BQXlCO0FBQzFELFFBQUk7QUFDRixhQUFPLElBQUksUUFBUSxDQUFDLFlBQVk7QUFDOUIsNEJBQUFBLFFBQWUsUUFBUSxLQUFLLEtBQUssRUFDOUIsS0FBSyxNQUFNLFFBQVEsSUFBSSxDQUFDLEVBQ3hCLE1BQU0sTUFBTSxRQUFRLEtBQUssQ0FBQztBQUFBLE1BQy9CLENBQUM7QUFBQSxJQUNILFNBQVEsT0FBTztBQUNiLGFBQU8sUUFBUSxRQUFRLEtBQUs7QUFBQSxJQUM5QjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxtQkFBcUM7QUFDbkMsV0FBTyxZQUFZLGlCQUFpQjtBQUFBLEVBQ3RDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxlQUFlLEtBQTJCO0FBQ3hDLFdBQU8sWUFBWSxlQUFlLEdBQUc7QUFBQSxFQUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTQSxlQUFlLEtBQWEsT0FBeUI7QUFDbkQsV0FBTyxZQUFZLGVBQWUsS0FBSyxLQUFLO0FBQUEsRUFDOUM7QUFDRjsiLAogICJuYW1lcyI6IFsiUGVyc2lzdFN0b3JhZ2UiXQp9Cg==