pinia-plugin-data
Advanced tools
+2
-1
@@ -16,3 +16,3 @@ import { PiniaPluginContext, StateTree } from 'pinia'; | ||
| */ | ||
| afterRestore?: (context: PiniaPluginContext) => void | boolean; | ||
| afterRestore?: (context: PiniaPluginContext) => void; | ||
| } | ||
@@ -22,2 +22,3 @@ interface PersistentCenterStateOption extends PersistentStateOption { | ||
| center: boolean; | ||
| onExpire(store: StateTree): boolean; | ||
| } | ||
@@ -24,0 +25,0 @@ |
+1
-1
@@ -1,1 +0,1 @@ | ||
| import"pinia";import{shallowRef as e}from"vue";class t{key;storage;serializer;constructor(e,t,s){this.key=e,this.storage=t,this.serializer=s}beforeRestore(){}afterRestore(){}}const s=e(window.localStorage);class r{getItem(e){return s.value.getItem(e)}setItem(e,t){s.value.setItem(e,t)}removeItem(e){s.value.removeItem(e)}}class i{deserialize(e){return JSON.parse(e)}serialize(e){return JSON.stringify(e)}}class o{state="onWaiting";slave;values=[];constructor(e){this.slave=e}trigger(e){if(e.center){!0===e.dispatch()?(this.state="onResolve",this.values.forEach((({dispatch:e})=>e()))):(this.state="onReject",e.reset(),this.values.forEach((({reset:e})=>e()))),this.values.length=0}else"onResolve"===this.state?e.dispatch():"onWaiting"===this.state?this.values.push({dispatch:e.dispatch,reset:e.reset}):e.reset()}}const a=new Map;function n(e,t){try{const s=e.serializer,r=e.key,i=e.storage,n=s.serialize(r),c=i.getItem(n);if(null==c)return;const l=s.deserialize(c);if(void 0===l)return;const u=()=>(e.beforeRestore(t),t.store.$patch(l),e.afterRestore(t)),h=()=>{const e=t.options.state?.();e&&t.store.$patch(e),i.removeItem(n)},f=Reflect.get(e,"slave",e),v=Reflect.get(e,"center",e);if(void 0===f)return void u();(function(e){const t=a.get(e);if(t)return t;{const t=new o(e);return a.set(e,t),t}})(f).trigger({dispatch:u,center:v,reset:h})}catch(e){throw e}}function c(e,s){const o=function(e,s){return"boolean"==typeof s?new t(e.store.$id,new r,new i):{key:s.key??e.store.$id,afterRestore:s.afterRestore??(()=>{}),beforeRestore:s.beforeRestore??(()=>{}),serializer:s.serializer??new i,storage:s.storage??new r,slave:s.slave??void 0,center:s.center??!1}}(e,s);n(o,e),e.store.$subscribe(((e,t)=>{const s=o.serializer,r=o.key;o.storage.setItem(s.serialize(r),s.serialize(t))}),{deep:!0,detached:!0})}function l(e){e.options.persistence&&c(e,e.options.persistence)}export{l as default}; | ||
| import"pinia";import{shallowRef as e}from"vue";class t{key;storage;serializer;constructor(e,t,s){this.key=e,this.storage=t,this.serializer=s}beforeRestore(){}afterRestore(){}}const s=e(window.localStorage);class r{getItem(e){return s.value.getItem(e)}setItem(e,t){s.value.setItem(e,t)}removeItem(e){s.value.removeItem(e)}}class i{deserialize(e){return JSON.parse(e)}serialize(e){return JSON.stringify(e)}}class o{state;slave;values=[];constructor(e){this.slave=e,this.state="onWaiting"}trigger(e){if(e.center)e.dispatch().then((()=>{const t=e.onExpire();t||void 0===t?(this.state="onReject",this.values.forEach((({reset:e})=>e()))):(this.state="onResolve",this.values.forEach((({dispatch:e})=>e())))})),this.values.length=0;else if("onResolve"===this.state)e.dispatch();else if("onWaiting"===this.state)this.values.push({dispatch:e.dispatch,reset:e.reset});else{if("onReject"!==this.state)throw new Error(`未知的${this.state}状态`);e.reset()}}}const a=new Map,n=()=>{};function c(e,t){try{const s=e.serializer,r=e.key,i=e.storage,n=s.serialize(r),c=i.getItem(n);if(null===c)return;const l=s.deserialize(c),h=async()=>(await Promise.resolve(e.beforeRestore(t)),await Promise.resolve(t.store.$patch(l)),await Promise.resolve(e.afterRestore(t))),u=()=>{const e=t.options.state?.();e&&t.store.$patch(e),i.removeItem(n)};"slave"in e?function(e){const t=a.get(e);if(t)return t;{const t=new o(e);return a.set(e,t),t}}(e.slave).trigger({dispatch:h,center:e.center,reset:u,onExpire:()=>e.onExpire(t.store)}):h()}catch(e){throw e}}function l(e,s){const o=function(e,s){if("boolean"==typeof s)return new t(e.store.$id,new r,new i);{const t=s;return{key:t.key??e.store.$id,afterRestore:t.afterRestore??n,beforeRestore:t.beforeRestore??n,serializer:t.serializer??new i,storage:t.storage??new r,slave:t.slave??void 0,center:t.center??!1,onExpire:t.onExpire??n}}}(e,s);c(o,e),e.store.$subscribe(((e,t)=>{const s=o.serializer,r=o.key;o.storage.setItem(s.serialize(r),s.serialize(t))}),{deep:!0,detached:!0})}function h(e){e.options.persistence&&l(e,e.options.persistence)}export{h as default}; |
| import { PersistentCenterStateOption, PersistentStateOption } from "../type"; | ||
| import type { PiniaPluginContext } from "pinia"; | ||
| export declare function executor(context: PiniaPluginContext, persistence: boolean | PersistentStateOption | PersistentCenterStateOption): void; | ||
| export declare function executor( | ||
| context: PiniaPluginContext, | ||
| persistence: boolean | PersistentStateOption | PersistentCenterStateOption | ||
| ): void; |
@@ -7,6 +7,7 @@ export declare class PluginCenter { | ||
| trigger(options: { | ||
| dispatch: () => void | boolean; | ||
| dispatch: () => Promise<any>; | ||
| center: boolean; | ||
| reset: () => void; | ||
| onExpire: () => boolean; | ||
| }): void; | ||
| } |
| import { Serializer, StorageLike } from "./index"; | ||
| import { PiniaPluginContext } from "pinia"; | ||
| import { PiniaPluginContext, StateTree } from "pinia"; | ||
| export interface PersistentStateOption { | ||
@@ -16,3 +16,3 @@ readonly key?: string; | ||
| */ | ||
| afterRestore?: (context: PiniaPluginContext) => void | boolean; | ||
| afterRestore?: (context: PiniaPluginContext) => void; | ||
| } | ||
@@ -22,2 +22,3 @@ export interface PersistentCenterStateOption extends PersistentStateOption { | ||
| center: boolean; | ||
| onExpire(store: StateTree): boolean; | ||
| } | ||
@@ -24,0 +25,0 @@ export declare class DefaultPersistentStateOption implements Required<PersistentStateOption> { |
+1
-1
| { | ||
| "name": "pinia-plugin-data", | ||
| "version": "0.0.6", | ||
| "version": "0.0.7", | ||
| "main": "./lib/index.min.js", | ||
@@ -5,0 +5,0 @@ "types": "./lib/index.d.ts", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
8370
3.91%0
-100%121
-1.63%