@nlabs/arkhamjs-storage-node
Version:
NodeJS storage for ArkhamJS
125 lines (124 loc) • 12.1 kB
JavaScript
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
/**
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
*/ import PersistStorage from 'node-persist';
export class NodeStorage {
/**
* Removes all keys from persistent data.
*
* @returns {Promise<boolean>} Whether data was successfully removed.
*/ static clearPersistData() {
try {
return new Promise((resolve)=>{
PersistStorage.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)=>{
PersistStorage.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)=>{
PersistStorage.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)=>{
PersistStorage.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);
}
constructor(options = {}){
_define_property(this, "options", {
dir: '/tmp',
encoding: 'utf8',
expiredInterval: 3 * 60 * 1000,
forgiveParseErrors: false,
logging: false,
parse: JSON.parse,
stringify: JSON.stringify
});
// Methods
this.clearStorageData = this.clearStorageData.bind(this);
this.getStorageData = this.getStorageData.bind(this);
this.setStorageData = this.setStorageData.bind(this);
// Configuration
this.options = {
...this.options,
...options
};
PersistStorage.init(this.options);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2Fya2hhbWpzL3BhY2thZ2VzL2Fya2hhbWpzLXN0b3JhZ2Utbm9kZS9zcmMvTm9kZVN0b3JhZ2UvTm9kZVN0b3JhZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBQZXJzaXN0U3RvcmFnZSwge0luaXRPcHRpb25zfSBmcm9tICdub2RlLXBlcnNpc3QnO1xuXG5leHBvcnQgY2xhc3MgTm9kZVN0b3JhZ2Uge1xuICBwcml2YXRlIG9wdGlvbnM6IEluaXRPcHRpb25zID0ge1xuICAgIGRpcjogJy90bXAnLFxuICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgZXhwaXJlZEludGVydmFsOiAzICogNjAgKiAxMDAwLFxuICAgIGZvcmdpdmVQYXJzZUVycm9yczogZmFsc2UsXG4gICAgbG9nZ2luZzogZmFsc2UsXG4gICAgcGFyc2U6IEpTT04ucGFyc2UsXG4gICAgc3RyaW5naWZ5OiBKU09OLnN0cmluZ2lmeVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEluaXRPcHRpb25zID0ge30pIHtcbiAgICAvLyBNZXRob2RzXG4gICAgdGhpcy5jbGVhclN0b3JhZ2VEYXRhID0gdGhpcy5jbGVhclN0b3JhZ2VEYXRhLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXRTdG9yYWdlRGF0YSA9IHRoaXMuZ2V0U3RvcmFnZURhdGEuYmluZCh0aGlzKTtcbiAgICB0aGlzLnNldFN0b3JhZ2VEYXRhID0gdGhpcy5zZXRTdG9yYWdlRGF0YS5iaW5kKHRoaXMpO1xuXG4gICAgLy8gQ29uZmlndXJhdGlvblxuICAgIHRoaXMub3B0aW9ucyA9IHsuLi50aGlzLm9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIFBlcnNpc3RTdG9yYWdlLmluaXQodGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBrZXlzIGZyb20gcGVyc2lzdGVudCBkYXRhLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gV2hldGhlciBkYXRhIHdhcyBzdWNjZXNzZnVsbHkgcmVtb3ZlZC5cbiAgICovXG4gIHN0YXRpYyBjbGVhclBlcnNpc3REYXRhKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgUGVyc2lzdFN0b3JhZ2UuY2xlYXIoKVxuICAgICAgICAgIC50aGVuKCgpID0+IHJlc29sdmUodHJ1ZSkpXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHJlc29sdmUoZmFsc2UpKTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEga2V5IGZyb20gcGVyc2lzdGVudCBkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IEtleSBhc3NvY2lhdGVkIHdpdGggdGhlIGRhdGEgdG8gcmVtb3ZlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gV2hldGhlciBkYXRhIHdhcyBzdWNjZXNzZnVsbHkgcmVtb3ZlZC5cbiAgICovXG4gIHN0YXRpYyBkZWxQZXJzaXN0RGF0YShrZXk6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgUGVyc2lzdFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gcmVzb2x2ZSh0cnVlKSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4gcmVzb2x2ZShmYWxzZSkpO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGtleSB2YWx1ZSBmcm9tIHBlcnNpc3RlbnQgZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IGZvciBkYXRhLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSB0aGUgZGF0YSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXkuXG4gICAqL1xuICBzdGF0aWMgZ2V0UGVyc2lzdERhdGEoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgUGVyc2lzdFN0b3JhZ2UuZ2V0SXRlbShrZXkpXG4gICAgICAgICAgLnRoZW4oKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRWYWx1ZSA9IHZhbHVlID8gSlNPTi5wYXJzZSh2YWx1ZSkgOiBudWxsO1xuICAgICAgICAgICAgcmVzb2x2ZSh1cGRhdGVkVmFsdWUpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKCgpID0+IHJlc29sdmUobnVsbCkpO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgZGF0YSB0byBwZXJzaXN0ZW50IGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IHRvIHN0b3JlIGRhdGEuXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSBEYXRhIHRvIHN0b3JlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gV2hldGhlciBkYXRhIHdhcyBzdWNjZXNzZnVsbHkgc2F2ZWQuXG4gICAqL1xuICBzdGF0aWMgc2V0UGVyc2lzdERhdGEoa2V5OiBzdHJpbmcsIHZhbHVlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBQZXJzaXN0U3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gcmVzb2x2ZSh0cnVlKSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4gcmVzb2x2ZShmYWxzZSkpO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgZGF0YSBmcm9tIHN0b3JhZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBXaGV0aGVyIGRhdGEgd2FzIHN1Y2Nlc3NmdWxseSBzYXZlZC5cbiAgICovXG4gIGNsZWFyU3RvcmFnZURhdGEoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIE5vZGVTdG9yYWdlLmNsZWFyUGVyc2lzdERhdGEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBrZXkgdmFsdWUgZnJvbSBzdG9yYWdlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgZm9yIGRhdGEuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59IHRoZSBkYXRhIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGtleS5cbiAgICovXG4gIGdldFN0b3JhZ2VEYXRhKGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gTm9kZVN0b3JhZ2UuZ2V0UGVyc2lzdERhdGEoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBkYXRhIHRvIHN0b3JhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5IHRvIHN0b3JlIGRhdGEuXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSBEYXRhIHRvIHN0b3JlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gV2hldGhlciBkYXRhIHdhcyBzdWNjZXNzZnVsbHkgc2F2ZWQuXG4gICAqL1xuICBzZXRTdG9yYWdlRGF0YShrZXk6IHN0cmluZywgdmFsdWUpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gTm9kZVN0b3JhZ2Uuc2V0UGVyc2lzdERhdGEoa2V5LCB2YWx1ZSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJQZXJzaXN0U3RvcmFnZSIsIk5vZGVTdG9yYWdlIiwiY2xlYXJQZXJzaXN0RGF0YSIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2xlYXIiLCJ0aGVuIiwiY2F0Y2giLCJlcnJvciIsImRlbFBlcnNpc3REYXRhIiwia2V5IiwicmVtb3ZlSXRlbSIsImdldFBlcnNpc3REYXRhIiwiZ2V0SXRlbSIsInZhbHVlIiwidXBkYXRlZFZhbHVlIiwiSlNPTiIsInBhcnNlIiwic2V0UGVyc2lzdERhdGEiLCJzZXRJdGVtIiwiY2xlYXJTdG9yYWdlRGF0YSIsImdldFN0b3JhZ2VEYXRhIiwic2V0U3RvcmFnZURhdGEiLCJvcHRpb25zIiwiZGlyIiwiZW5jb2RpbmciLCJleHBpcmVkSW50ZXJ2YWwiLCJmb3JnaXZlUGFyc2VFcnJvcnMiLCJsb2dnaW5nIiwic3RyaW5naWZ5IiwiYmluZCIsImluaXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0NBR0MsR0FDRCxPQUFPQSxvQkFBbUMsZUFBZTtBQUV6RCxPQUFPLE1BQU1DO0lBc0JYOzs7O0dBSUMsR0FDRCxPQUFPQyxtQkFBcUM7UUFDMUMsSUFBSTtZQUNGLE9BQU8sSUFBSUMsUUFBUSxDQUFDQztnQkFDbEJKLGVBQWVLLEtBQUssR0FDakJDLElBQUksQ0FBQyxJQUFNRixRQUFRLE9BQ25CRyxLQUFLLENBQUMsSUFBTUgsUUFBUTtZQUN6QjtRQUNGLEVBQUUsT0FBTUksT0FBTztZQUNiLE9BQU9MLFFBQVFDLE9BQU8sQ0FBQztRQUN6QjtJQUNGO0lBRUE7Ozs7O0dBS0MsR0FDRCxPQUFPSyxlQUFlQyxHQUFXLEVBQW9CO1FBQ25ELElBQUk7WUFDRixPQUFPLElBQUlQLFFBQVEsQ0FBQ0M7Z0JBQ2xCSixlQUFlVyxVQUFVLENBQUNELEtBQ3ZCSixJQUFJLENBQUMsSUFBTUYsUUFBUSxPQUNuQkcsS0FBSyxDQUFDLElBQU1ILFFBQVE7WUFDekI7UUFDRixFQUFFLE9BQU1JLE9BQU87WUFDYixPQUFPTCxRQUFRQyxPQUFPLENBQUM7UUFDekI7SUFDRjtJQUVBOzs7OztHQUtDLEdBQ0QsT0FBT1EsZUFBZUYsR0FBVyxFQUFnQjtRQUMvQyxJQUFJO1lBQ0YsT0FBTyxJQUFJUCxRQUFRLENBQUNDO2dCQUNsQkosZUFBZWEsT0FBTyxDQUFDSCxLQUNwQkosSUFBSSxDQUFDLENBQUNRO29CQUNMLE1BQU1DLGVBQWVELFFBQVFFLEtBQUtDLEtBQUssQ0FBQ0gsU0FBUztvQkFDakRWLFFBQVFXO2dCQUNWLEdBQ0NSLEtBQUssQ0FBQyxJQUFNSCxRQUFRO1lBQ3pCO1FBQ0YsRUFBRSxPQUFNSSxPQUFPO1lBQ2IsT0FBT0wsUUFBUUMsT0FBTyxDQUFDO1FBQ3pCO0lBQ0Y7SUFFQTs7Ozs7O0dBTUMsR0FDRCxPQUFPYyxlQUFlUixHQUFXLEVBQUVJLEtBQUssRUFBb0I7UUFDMUQsSUFBSTtZQUNGLE9BQU8sSUFBSVgsUUFBUSxDQUFDQztnQkFDbEJKLGVBQWVtQixPQUFPLENBQUNULEtBQUtJLE9BQ3pCUixJQUFJLENBQUMsSUFBTUYsUUFBUSxPQUNuQkcsS0FBSyxDQUFDLElBQU1ILFFBQVE7WUFDekI7UUFDRixFQUFFLE9BQU1JLE9BQU87WUFDYixPQUFPTCxRQUFRQyxPQUFPLENBQUM7UUFDekI7SUFDRjtJQUVBOzs7O0dBSUMsR0FDRGdCLG1CQUFxQztRQUNuQyxPQUFPbkIsWUFBWUMsZ0JBQWdCO0lBQ3JDO0lBRUE7Ozs7O0dBS0MsR0FDRG1CLGVBQWVYLEdBQVcsRUFBZ0I7UUFDeEMsT0FBT1QsWUFBWVcsY0FBYyxDQUFDRjtJQUNwQztJQUVBOzs7Ozs7R0FNQyxHQUNEWSxlQUFlWixHQUFXLEVBQUVJLEtBQUssRUFBb0I7UUFDbkQsT0FBT2IsWUFBWWlCLGNBQWMsQ0FBQ1IsS0FBS0k7SUFDekM7SUFsSEEsWUFBWVMsVUFBdUIsQ0FBQyxDQUFDLENBQUU7UUFWdkMsdUJBQVFBLFdBQXVCO1lBQzdCQyxLQUFLO1lBQ0xDLFVBQVU7WUFDVkMsaUJBQWlCLElBQUksS0FBSztZQUMxQkMsb0JBQW9CO1lBQ3BCQyxTQUFTO1lBQ1RYLE9BQU9ELEtBQUtDLEtBQUs7WUFDakJZLFdBQVdiLEtBQUthLFNBQVM7UUFDM0I7UUFHRSxVQUFVO1FBQ1YsSUFBSSxDQUFDVCxnQkFBZ0IsR0FBRyxJQUFJLENBQUNBLGdCQUFnQixDQUFDVSxJQUFJLENBQUMsSUFBSTtRQUN2RCxJQUFJLENBQUNULGNBQWMsR0FBRyxJQUFJLENBQUNBLGNBQWMsQ0FBQ1MsSUFBSSxDQUFDLElBQUk7UUFDbkQsSUFBSSxDQUFDUixjQUFjLEdBQUcsSUFBSSxDQUFDQSxjQUFjLENBQUNRLElBQUksQ0FBQyxJQUFJO1FBRW5ELGdCQUFnQjtRQUNoQixJQUFJLENBQUNQLE9BQU8sR0FBRztZQUFDLEdBQUcsSUFBSSxDQUFDQSxPQUFPO1lBQUUsR0FBR0EsT0FBTztRQUFBO1FBQzNDdkIsZUFBZStCLElBQUksQ0FBQyxJQUFJLENBQUNSLE9BQU87SUFDbEM7QUEwR0YifQ==