UNPKG

@activejs/core

Version:

Pragmatic, Reactive State Management for JavaScript Apps

65 lines 7.17 kB
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=