UNPKG

pinia-lasting

Version:

一个基于pinia的插件,自动数据持久化,直接引入就是持久化

57 lines (50 loc) 1.83 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _ = require('lodash'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var ___default = /*#__PURE__*/_interopDefaultLegacy(_); const mergeStoreObject = (options) => { if (!options.state) throw new Error('No current undefined state'); let storeObject = options.state(); return Object.assign({}, storeObject); }; const setStorage = (storageKey, storageObject) => { sessionStorage.setItem(storageKey, JSON.stringify(storageObject)); }; const getStorage = (storageKey) => { return sessionStorage.getItem(storageKey); }; const moveStorage = (storageKey, store, storageObject) => { const storage = getStorage(storageKey) ? JSON.parse(getStorage(storageKey)) : ''; if (storage && storage !== '') { Object.keys(storage).forEach(key => { if (store.hasOwnProperty(key)) { store[key] = storage[key]; } }); } else { setStorage(storageKey, storageObject); } }; const subscribe = (store) => { store.$subscribe((subscribeObject, store) => { const storeId = subscribeObject.storeId; if (subscribeObject.events) { if (subscribeObject.events.type !== 'set') return; } ___default["default"].debounce(setStorage, 300)(storeId, store); }); }; const piniaLasting = (context) => { const { store, options } = context; const storeName = store.$id; if (!storeName) throw new Error('No current id'); const afterMerger = mergeStoreObject(options); moveStorage(storeName, store, afterMerger); subscribe(store); }; exports.piniaLasting = piniaLasting;