@activejs/core
Version:
Pragmatic, Reactive State Management for JavaScript Apps
65 lines • 7.17 kB
JavaScript
import { Configuration } from './configuration';
/**
* @internal
* The prefix string for ids of persistent Units, applied when saving/retrieving value to/from persistent storage,
* This is intended to avoid conflicts with other items in the storage that do not belong to ActiveJS,
* and to identify items in the storage that belong to ActiveJS for features like {@link clearPersistentStorage} to work as intended.
*/
export const KeyPrefix = '_AJS_UNIT_';
/**
* To clear persisted values of persistent Units from storage.
*
* Note: It does not clear the value of Units, only the persisted value is cleared.
*
* See {@link https://docs.activejs.dev/guides/persistence} for more details.
*
* @param storage The Storage from where the Units' persisted values need to be removed. \
* {@link Configuration.storage} is used as storage by default. \
* You can pass a reference to whichever storage you want to clean up.
* @category Global
*/
export function clearPersistentStorage(storage = Configuration.storage) {
Object.keys(storage).forEach(key => {
if (key.startsWith(KeyPrefix)) {
storage.removeItem(key);
}
});
}
/**
* @internal please do not use.
*/
export function save(key, value, storage = Configuration.storage) {
let jsonString;
try {
// wrap the value to later easily determine whether any value has been
// saved to storage or not.
// eg: If storage.get('item') is null, it can mean many things,
// but {value: null} can only mean that the value is null.
jsonString = JSON.stringify({ value });
}
catch (e) {
/* istanbul ignore next */
jsonString = JSON.stringify({ value: String(value) });
}
storage.setItem(KeyPrefix + key, jsonString);
}
/**
* @internal please do not use.
*/
export function retrieve(key, storage = Configuration.storage) {
const raw = storage.getItem(KeyPrefix + key);
try {
return JSON.parse(raw);
}
catch (e) {
/* istanbul ignore next */
return null;
}
}
/**
* @internal please do not use.
*/
export function remove(key, storage = Configuration.storage) {
storage.removeItem(KeyPrefix + key);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVuY2UuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvYWN0aXZlanMvYWN0aXZlanMvcGFja2FnZXMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvcGVyc2lzdGVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTlDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQztBQUV0Qzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxVQUFtQixhQUFhLENBQUMsT0FBTztJQUM3RSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLElBQUksQ0FBSSxHQUFXLEVBQUUsS0FBUSxFQUFFLFVBQW1CLGFBQWEsQ0FBQyxPQUFPO0lBQ3JGLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJO1FBQ0Ysc0VBQXNFO1FBQ3RFLDJCQUEyQjtRQUMzQiwrREFBK0Q7UUFDL0QsMERBQTBEO1FBQzFELFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztLQUN0QztJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsMEJBQTBCO1FBQzFCLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUM7S0FDckQ7SUFDRCxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsR0FBVyxFQUNYLFVBQW1CLGFBQWEsQ0FBQyxPQUFPO0lBRXhDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDeEI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLDBCQUEwQjtRQUMxQixPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBSSxHQUFXLEVBQUUsVUFBbUIsYUFBYSxDQUFDLE9BQU87SUFDN0UsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnLi9jb25maWd1cmF0aW9uJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIFRoZSBwcmVmaXggc3RyaW5nIGZvciBpZHMgb2YgcGVyc2lzdGVudCBVbml0cywgYXBwbGllZCB3aGVuIHNhdmluZy9yZXRyaWV2aW5nIHZhbHVlIHRvL2Zyb20gcGVyc2lzdGVudCBzdG9yYWdlLFxuICogVGhpcyBpcyBpbnRlbmRlZCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvdGhlciBpdGVtcyBpbiB0aGUgc3RvcmFnZSB0aGF0IGRvIG5vdCBiZWxvbmcgdG8gQWN0aXZlSlMsXG4gKiBhbmQgdG8gaWRlbnRpZnkgaXRlbXMgaW4gdGhlIHN0b3JhZ2UgdGhhdCBiZWxvbmcgdG8gQWN0aXZlSlMgZm9yIGZlYXR1cmVzIGxpa2Uge0BsaW5rIGNsZWFyUGVyc2lzdGVudFN0b3JhZ2V9IHRvIHdvcmsgYXMgaW50ZW5kZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBLZXlQcmVmaXggPSAnX0FKU19VTklUXyc7XG5cbi8qKlxuICogVG8gY2xlYXIgcGVyc2lzdGVkIHZhbHVlcyBvZiBwZXJzaXN0ZW50IFVuaXRzIGZyb20gc3RvcmFnZS5cbiAqXG4gKiBOb3RlOiBJdCBkb2VzIG5vdCBjbGVhciB0aGUgdmFsdWUgb2YgVW5pdHMsIG9ubHkgdGhlIHBlcnNpc3RlZCB2YWx1ZSBpcyBjbGVhcmVkLlxuICpcbiAqIFNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmFjdGl2ZWpzLmRldi9ndWlkZXMvcGVyc2lzdGVuY2V9IGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHBhcmFtIHN0b3JhZ2UgVGhlIFN0b3JhZ2UgZnJvbSB3aGVyZSB0aGUgVW5pdHMnIHBlcnNpc3RlZCB2YWx1ZXMgbmVlZCB0byBiZSByZW1vdmVkLiBcXFxuICoge0BsaW5rIENvbmZpZ3VyYXRpb24uc3RvcmFnZX0gaXMgdXNlZCBhcyBzdG9yYWdlIGJ5IGRlZmF1bHQuIFxcXG4gKiBZb3UgY2FuIHBhc3MgYSByZWZlcmVuY2UgdG8gd2hpY2hldmVyIHN0b3JhZ2UgeW91IHdhbnQgdG8gY2xlYW4gdXAuXG4gKiBAY2F0ZWdvcnkgR2xvYmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclBlcnNpc3RlbnRTdG9yYWdlKHN0b3JhZ2U6IFN0b3JhZ2UgPSBDb25maWd1cmF0aW9uLnN0b3JhZ2UpOiB2b2lkIHtcbiAgT2JqZWN0LmtleXMoc3RvcmFnZSkuZm9yRWFjaChrZXkgPT4ge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChLZXlQcmVmaXgpKSB7XG4gICAgICBzdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBwbGVhc2UgZG8gbm90IHVzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhdmU8VD4oa2V5OiBzdHJpbmcsIHZhbHVlOiBULCBzdG9yYWdlOiBTdG9yYWdlID0gQ29uZmlndXJhdGlvbi5zdG9yYWdlKTogdm9pZCB7XG4gIGxldCBqc29uU3RyaW5nOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgLy8gd3JhcCB0aGUgdmFsdWUgdG8gbGF0ZXIgZWFzaWx5IGRldGVybWluZSB3aGV0aGVyIGFueSB2YWx1ZSBoYXMgYmVlblxuICAgIC8vIHNhdmVkIHRvIHN0b3JhZ2Ugb3Igbm90LlxuICAgIC8vIGVnOiBJZiBzdG9yYWdlLmdldCgnaXRlbScpIGlzIG51bGwsIGl0IGNhbiBtZWFuIG1hbnkgdGhpbmdzLFxuICAgIC8vIGJ1dCB7dmFsdWU6IG51bGx9IGNhbiBvbmx5IG1lYW4gdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC5cbiAgICBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoe3ZhbHVlfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh7dmFsdWU6IFN0cmluZyh2YWx1ZSl9KTtcbiAgfVxuICBzdG9yYWdlLnNldEl0ZW0oS2V5UHJlZml4ICsga2V5LCBqc29uU3RyaW5nKTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgcGxlYXNlIGRvIG5vdCB1c2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXRyaWV2ZTxUPihcbiAga2V5OiBzdHJpbmcsXG4gIHN0b3JhZ2U6IFN0b3JhZ2UgPSBDb25maWd1cmF0aW9uLnN0b3JhZ2Vcbik6IHt2YWx1ZTogVH0gfCBudWxsIHtcbiAgY29uc3QgcmF3ID0gc3RvcmFnZS5nZXRJdGVtKEtleVByZWZpeCArIGtleSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgcGxlYXNlIGRvIG5vdCB1c2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmU8VD4oa2V5OiBzdHJpbmcsIHN0b3JhZ2U6IFN0b3JhZ2UgPSBDb25maWd1cmF0aW9uLnN0b3JhZ2UpOiB2b2lkIHtcbiAgc3RvcmFnZS5yZW1vdmVJdGVtKEtleVByZWZpeCArIGtleSk7XG59XG4iXX0=