crypto-browser-storage
Version:
☢ A simple package for secure local storage data by encryption using Crypto.JS
62 lines • 6.58 kB
JavaScript
// @ts-ignore
import * as Generator from 'generate-js';
export const SecureStorage = Generator.generate(function SecureStorage(storage, options) {
//@ts-ignore
var _ = this;
_.storage = storage;
if (options) {
_.hash = options.hash;
_.encrypt = options.encrypt;
_.decrypt = options.decrypt;
}
});
function through(data) {
return data;
}
SecureStorage.definePrototype({
hash: through,
encrypt: through,
decrypt: through,
}, {
writable: true
});
SecureStorage.definePrototype({
getItem: function getItem(key) {
var _ = this;
key = _.hash(key);
var value = _.storage.getItem(key);
if (typeof value !== 'string') {
return value;
}
value = _.decrypt(value);
return JSON.parse(value);
},
setItem: function setItem(key, value) {
var _ = this;
key = _.hash(key);
value = JSON.stringify(value);
value = _.encrypt(value);
return _.storage.setItem(key, value);
},
removeItem: function removeItem(key) {
var _ = this;
key = _.hash(key);
return _.storage.removeItem(key);
},
clear: function clear() {
var _ = this;
return _.storage.clear();
},
key: function key(id) {
var _ = this;
return _.storage.key(id);
},
length: {
get: function getLength() {
var _ = this;
// @ts-ignore
return _.storage.length;
}
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJlLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jcnlwdG8tYnJvd3Nlci1zdG9yYWdlL3NyYy9saWIvc2VjdXJlLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sS0FBSyxTQUFTLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUMzQyxTQUFTLGFBQWEsQ0FBQyxPQUFXLEVBQUUsT0FBVztJQUMzQyxZQUFZO0lBQ1osSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBRWIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDcEIsSUFBSSxPQUFPLEVBQUU7UUFDVCxDQUFDLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDdEIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUMvQjtBQUNMLENBQUMsQ0FDSixDQUFDO0FBRUYsU0FBUyxPQUFPLENBQUMsSUFBUTtJQUNyQixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsYUFBYSxDQUFDLGVBQWUsQ0FBQztJQUMxQixJQUFJLEVBQUUsT0FBTztJQUNiLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLE9BQU8sRUFBRSxPQUFPO0NBQ25CLEVBQUU7SUFDQyxRQUFRLEVBQUUsSUFBSTtDQUNqQixDQUFDLENBQUM7QUFFSCxhQUFhLENBQUMsZUFBZSxDQUFDO0lBQzFCLE9BQU8sRUFBRSxTQUFTLE9BQU8sQ0FBQyxHQUFPO1FBQzdCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUViLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRW5DLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxPQUFPLEVBQUUsU0FBUyxPQUFPLENBQUMsR0FBVSxFQUFFLEtBQVk7UUFDOUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBRWIsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEIsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUIsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsRUFBRSxTQUFTLFVBQVUsQ0FBQyxHQUFVO1FBQ3RDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUViLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUssRUFBRSxTQUFTLEtBQUs7UUFDakIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBRWIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxHQUFHLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBTTtRQUNwQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFYixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNLEVBQUU7UUFDSixHQUFHLEVBQUUsU0FBUyxTQUFTO1lBQ25CLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNiLGFBQWE7WUFDYixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzVCLENBQUM7S0FDSjtDQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIEdlbmVyYXRvciBmcm9tICdnZW5lcmF0ZS1qcyc7XG5cbmV4cG9ydCBjb25zdCBTZWN1cmVTdG9yYWdlID0gR2VuZXJhdG9yLmdlbmVyYXRlKFxuICAgIGZ1bmN0aW9uIFNlY3VyZVN0b3JhZ2Uoc3RvcmFnZTphbnksIG9wdGlvbnM6YW55KSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5zdG9yYWdlID0gc3RvcmFnZTtcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIF8uaGFzaCA9IG9wdGlvbnMuaGFzaDtcbiAgICAgICAgICAgIF8uZW5jcnlwdCA9IG9wdGlvbnMuZW5jcnlwdDtcbiAgICAgICAgICAgIF8uZGVjcnlwdCA9IG9wdGlvbnMuZGVjcnlwdDtcbiAgICAgICAgfVxuICAgIH1cbik7XG5cbmZ1bmN0aW9uIHRocm91Z2goZGF0YTphbnkpIHtcbiAgICByZXR1cm4gZGF0YTtcbn1cblxuU2VjdXJlU3RvcmFnZS5kZWZpbmVQcm90b3R5cGUoe1xuICAgIGhhc2g6IHRocm91Z2gsXG4gICAgZW5jcnlwdDogdGhyb3VnaCxcbiAgICBkZWNyeXB0OiB0aHJvdWdoLFxufSwge1xuICAgIHdyaXRhYmxlOiB0cnVlXG59KTtcblxuU2VjdXJlU3RvcmFnZS5kZWZpbmVQcm90b3R5cGUoe1xuICAgIGdldEl0ZW06IGZ1bmN0aW9uIGdldEl0ZW0oa2V5OmFueSkge1xuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAga2V5ID0gXy5oYXNoKGtleSk7XG5cbiAgICAgICAgdmFyIHZhbHVlID0gXy5zdG9yYWdlLmdldEl0ZW0oa2V5KTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUgPSBfLmRlY3J5cHQodmFsdWUpO1xuXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICB9LFxuXG4gICAgc2V0SXRlbTogZnVuY3Rpb24gc2V0SXRlbShrZXk6c3RyaW5nLCB2YWx1ZTpzdHJpbmcpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGtleSA9IF8uaGFzaChrZXkpO1xuXG4gICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXG4gICAgICAgIHZhbHVlID0gXy5lbmNyeXB0KHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gXy5zdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgfSxcblxuICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uIHJlbW92ZUl0ZW0oa2V5OnN0cmluZykge1xuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAga2V5ID0gXy5oYXNoKGtleSk7XG5cbiAgICAgICAgcmV0dXJuIF8uc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSxcblxuICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBfLnN0b3JhZ2UuY2xlYXIoKTtcbiAgICB9LFxuXG4gICAga2V5OiBmdW5jdGlvbiBrZXkoaWQ6YW55KSB7XG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICByZXR1cm4gXy5zdG9yYWdlLmtleShpZCk7XG4gICAgfSxcblxuICAgIGxlbmd0aDoge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldExlbmd0aCgpOmFueSB7XG4gICAgICAgICAgICB2YXIgXyA9IHRoaXM7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gXy5zdG9yYWdlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cbn0pO1xuXG4iXX0=