@lytjs/plugin-storage 4.2.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,149 @@
1
+ # @lytjs/plugin-storage
2
+
3
+ > Lyt.js 本地存储持久化插件 - 自动保存响应式状态到 localStorage/sessionStorage
4
+
5
+ **版本:** 4.2.0
6
+
7
+ ## 安装
8
+
9
+ ```bash
10
+ npm install @lytjs/plugin-storage
11
+ ```
12
+
13
+ ## 使用
14
+
15
+ ### 注册插件
16
+
17
+ ```typescript
18
+ import { createApp } from '@lytjs/core'
19
+ import { createStorage } from '@lytjs/plugin-storage'
20
+
21
+ const storage = createStorage({
22
+ prefix: 'lyt_',
23
+ expire: 24 * 60 * 60 * 1000, // 24 小时过期
24
+ })
25
+
26
+ const app = createApp({})
27
+ app.use(storage)
28
+ ```
29
+
30
+ ### 基本读写
31
+
32
+ ```typescript
33
+ // 设置值
34
+ storage.set('user', { name: 'lyt', age: 18 })
35
+
36
+ // 获取值
37
+ const user = storage.get('user') // { name: 'lyt', age: 18 }
38
+
39
+ // 获取值(带默认值)
40
+ const theme = storage.get('theme', 'light') // 'light'
41
+
42
+ // 检查 key 是否存在
43
+ storage.has('user') // true
44
+
45
+ // 删除值
46
+ storage.remove('user')
47
+
48
+ // 获取所有 key
49
+ storage.keys() // ['theme']
50
+
51
+ // 获取存储项数量
52
+ storage.size() // 1
53
+
54
+ // 清空所有(仅当前前缀的)
55
+ storage.clear()
56
+ ```
57
+
58
+ ### 过期时间
59
+
60
+ ```typescript
61
+ // 全局过期时间(创建时设置)
62
+ const storage = createStorage({ expire: 3600000 }) // 1 小时
63
+
64
+ // 单个 key 设置过期时间(覆盖全局设置)
65
+ storage.set('token', 'abc123', 30 * 60 * 1000) // 30 分钟过期
66
+
67
+ // 过期后自动返回 null
68
+ storage.get('token') // null(已过期)
69
+ ```
70
+
71
+ ### 响应式状态自动保存
72
+
73
+ ```typescript
74
+ // 监听响应式对象变化,自动保存
75
+ const state = reactive({ count: 0, name: 'lyt' })
76
+
77
+ const unwatch = storage.watch(state, 'count', {
78
+ immediate: true, // 立即保存一次
79
+ deep: true, // 深度监听
80
+ debounce: 100, // 防抖 100ms
81
+ })
82
+
83
+ // 停止监听
84
+ unwatch()
85
+ ```
86
+
87
+ ### 从存储恢复状态
88
+
89
+ ```typescript
90
+ const state = reactive({ count: 0, name: 'lyt' })
91
+
92
+ // 从存储恢复值到响应式对象
93
+ storage.restore(state, 'count', 0)
94
+ ```
95
+
96
+ ### 自定义序列化
97
+
98
+ ```typescript
99
+ const storage = createStorage({
100
+ serialize: (value) => btoa(JSON.stringify(value)),
101
+ deserialize: (value) => JSON.parse(atob(value)),
102
+ })
103
+ ```
104
+
105
+ ## API
106
+
107
+ ### Options
108
+
109
+ | 选项 | 类型 | 默认值 | 描述 |
110
+ |------|------|--------|------|
111
+ | `prefix` | `string` | `'lyt_'` | key 前缀,避免与其他应用冲突 |
112
+ | `storage` | `Storage` | `localStorage` | 使用的存储对象,可替换为 `sessionStorage` |
113
+ | `expire` | `number` | - | 全局过期时间(毫秒),默认无过期 |
114
+ | `debug` | `boolean` | `false` | 是否开启调试模式 |
115
+ | `serialize` | `(value: any) => string` | `JSON.stringify` | 数据序列化函数 |
116
+ | `deserialize` | `(value: string) => any` | `JSON.parse` | 数据反序列化函数 |
117
+
118
+ ### 方法
119
+
120
+ | 方法 | 签名 | 描述 |
121
+ |------|------|------|
122
+ | `set` | `<T>(key: string, value: T, expire?: number) => void` | 设置值,支持单独设置过期时间 |
123
+ | `get` | `<T>(key: string, defaultValue?: T) => T \| null` | 获取值,过期自动返回 null |
124
+ | `remove` | `(key: string) => void` | 删除值 |
125
+ | `clear` | `() => void` | 清空所有当前前缀的存储项 |
126
+ | `has` | `(key: string) => boolean` | 检查 key 是否存在且未过期 |
127
+ | `keys` | `() => string[]` | 获取所有当前前缀的 key |
128
+ | `size` | `() => number` | 获取当前前缀的存储项数量 |
129
+ | `watch` | `(target: any, key: string, options?: WatchOptions) => () => void` | 监听响应式对象变化,自动保存 |
130
+ | `restore` | `<T>(target: any, key: string, defaultValue?: T) => T` | 从存储恢复响应式对象 |
131
+
132
+ ### WatchOptions
133
+
134
+ | 选项 | 类型 | 默认值 | 描述 |
135
+ |------|------|--------|------|
136
+ | `immediate` | `boolean` | `true` | 是否立即执行一次保存 |
137
+ | `deep` | `boolean` | `true` | 是否深度监听 |
138
+ | `debounce` | `number` | `100` | 防抖延迟(毫秒) |
139
+
140
+ ### 特性
141
+
142
+ - **前缀隔离**:通过 `prefix` 选项隔离不同应用的存储
143
+ - **自动过期**:支持全局和单 key 的过期时间设置
144
+ - **SSR 兼容**:localStorage 不可用时自动降级为内存存储
145
+ - **响应式集成**:支持监听响应式对象自动保存
146
+
147
+ ## License
148
+
149
+ MIT
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- var b=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var F=(n,t)=>{for(var o in t)b(n,o,{get:t[o],enumerable:!0})},R=(n,t,o,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let g of N(t))!_.call(n,g)&&g!==o&&b(n,g,{get:()=>t[g],enumerable:!(l=J(t,g))||l.enumerable});return n};var j=n=>R(b({},"__esModule",{value:!0}),n);var B={};F(B,{createStorage:()=>A});module.exports=j(B);function w(n,t){return`${t}${n}`}function q(n,t){return n.startsWith(t)?n.slice(t.length):n}function x(n,t){let o=null;return function(...l){o&&clearTimeout(o),o=setTimeout(()=>n.apply(this,l),t)}}function A(n={}){let{prefix:t="lyt_",storage:o=typeof localStorage!="undefined"?localStorage:{},expire:l,debug:g=!1,serialize:P=JSON.stringify,deserialize:O=JSON.parse}=n,u=(...r)=>{};function c(r,e,i){try{let s={value:e,timestamp:Date.now()},a=i!=null?i:l;a&&(s.expire=Date.now()+a);let y=w(r,t);o.setItem(y,P(s)),u(`set ${r}`,e)}catch(s){}}function m(r,e){try{let i=w(r,t),s=o.getItem(i);if(!s)return e!=null?e:null;let a=O(s);return a.expire&&Date.now()>a.expire?(u(`${r} expired, removing`),h(r),e!=null?e:null):(u(`get ${r}`,a.value),a.value)}catch(i){return e!=null?e:null}}function h(r){try{let e=w(r,t);o.removeItem(e),u(`removed ${r}`)}catch(e){}}function $(){try{let r=T();for(let e of r)h(e);u("cleared all")}catch(r){}}function I(r){return m(r)!==null}function T(){try{let r=[];for(let e=0;e<o.length;e++){let i=o.key(e);i&&i.startsWith(t)&&r.push(q(i,t))}return r}catch(r){return[]}}function z(){return T().length}function W(r,e,i={}){let{immediate:s=!0,deep:a=!0,debounce:y=100}=i;if(typeof r.$watch=="function")return r.$watch(e,y>0?x(p=>{c(e,p)},y):p=>{c(e,p)},{immediate:s,deep:a});if(typeof globalThis.watch=="function"){let f=globalThis.watch;return f(()=>r[e],y>0?x(S=>{c(e,S)},y):S=>{c(e,S)},{immediate:s,deep:a})}let d=r[e],D=setInterval(()=>{let f=r[e];f!==d&&(d=f,c(e,f))},200);return s&&c(e,d),()=>clearInterval(D)}function K(r,e,i){let s=m(e,i);return s!==null&&(r[e]=s,u(`restored ${e}`,s)),r[e]}let v={install(r,e){r.config=r.config||{},r.config.globalProperties=r.config.globalProperties||{},r.config.globalProperties.$storage=v,typeof r.provide=="function"&&r.provide("storage",v)},set:c,get:m,remove:h,clear:$,has:I,keys:T,size:z,watch:W,restore:K,get storage(){return o}};return v}
1
+ "use strict";var S=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var R=(n,t)=>{for(var o in t)S(n,o,{get:t[o],enumerable:!0})},_=(n,t,o,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let g of J(t))!N.call(n,g)&&g!==o&&S(n,g,{get:()=>t[g],enumerable:!(l=j(t,g))||l.enumerable});return n};var F=n=>_(S({},"__esModule",{value:!0}),n);var B={};R(B,{createStorage:()=>A});module.exports=F(B);function M(){let n={};return{getItem:t=>{var o;return(o=n[t])!=null?o:null},setItem:(t,o)=>{n[t]=String(o)},removeItem:t=>{delete n[t]},clear:()=>{Object.keys(n).forEach(t=>delete n[t])},get length(){return Object.keys(n).length},key:t=>{var o;return(o=Object.keys(n)[t])!=null?o:null}}}function w(n,t){return`${t}${n}`}function q(n,t){return n.startsWith(t)?n.slice(t.length):n}function O(n,t){let o=null;return function(...l){o&&clearTimeout(o),o=setTimeout(()=>n.apply(this,l),t)}}function A(n={}){let{prefix:t="lyt_",storage:o=typeof localStorage!="undefined"?localStorage:M(),expire:l,debug:g=!1,serialize:x=JSON.stringify,deserialize:I=JSON.parse}=n,u=(...r)=>{};function c(r,e,i){try{let s={value:e,timestamp:Date.now()},a=i!=null?i:l;a&&(s.expire=Date.now()+a);let y=w(r,t);o.setItem(y,x(s)),u(`set ${r}`,e)}catch(s){}}function p(r,e){try{let i=w(r,t),s=o.getItem(i);if(!s)return e!=null?e:null;let a=I(s);return a.expire&&Date.now()>a.expire?(u(`${r} expired, removing`),h(r),e!=null?e:null):(u(`get ${r}`,a.value),a.value)}catch(i){return e!=null?e:null}}function h(r){try{let e=w(r,t);o.removeItem(e),u(`removed ${r}`)}catch(e){}}function P(){try{let r=T();for(let e of r)h(e);u("cleared all")}catch(r){}}function $(r){return p(r)!==null}function T(){try{let r=[];for(let e=0;e<o.length;e++){let i=o.key(e);i&&i.startsWith(t)&&r.push(q(i,t))}return r}catch(r){return[]}}function z(){return T().length}function W(r,e,i={}){let{immediate:s=!0,deep:a=!0,debounce:y=100}=i;if(typeof r.$watch=="function")return r.$watch(e,y>0?O(m=>{c(e,m)},y):m=>{c(e,m)},{immediate:s,deep:a});if(typeof globalThis.watch=="function"){let f=globalThis.watch;return f(()=>r[e],y>0?O(v=>{c(e,v)},y):v=>{c(e,v)},{immediate:s,deep:a})}let d=r[e],D=setInterval(()=>{let f=r[e];f!==d&&(d=f,c(e,f))},200);return s&&c(e,d),()=>clearInterval(D)}function K(r,e,i){let s=p(e,i);return s!==null&&(r[e]=s,u(`restored ${e}`,s)),r[e]}let b={install(r,e){r.config=r.config||{},r.config.globalProperties=r.config.globalProperties||{},r.config.globalProperties.$storage=b,typeof r.provide=="function"&&r.provide("storage",b)},set:c,get:p,remove:h,clear:P,has:$,keys:T,size:z,watch:W,restore:K,get storage(){return o}};return b}
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- function S(a,o){return`${o}${a}`}function D(a,o){return a.startsWith(o)?a.slice(o.length):a}function b(a,o){let i=null;return function(...f){i&&clearTimeout(i),i=setTimeout(()=>a.apply(this,f),o)}}function J(a={}){let{prefix:o="lyt_",storage:i=typeof localStorage!="undefined"?localStorage:{},expire:f,debug:w=!1,serialize:x=JSON.stringify,deserialize:P=JSON.parse}=a,c=(...r)=>{};function g(r,e,t){try{let n={value:e,timestamp:Date.now()},s=t!=null?t:f;s&&(n.expire=Date.now()+s);let l=S(r,o);i.setItem(l,x(n)),c(`set ${r}`,e)}catch(n){}}function p(r,e){try{let t=S(r,o),n=i.getItem(t);if(!n)return e!=null?e:null;let s=P(n);return s.expire&&Date.now()>s.expire?(c(`${r} expired, removing`),m(r),e!=null?e:null):(c(`get ${r}`,s.value),s.value)}catch(t){return e!=null?e:null}}function m(r){try{let e=S(r,o);i.removeItem(e),c(`removed ${r}`)}catch(e){}}function O(){try{let r=h();for(let e of r)m(e);c("cleared all")}catch(r){}}function $(r){return p(r)!==null}function h(){try{let r=[];for(let e=0;e<i.length;e++){let t=i.key(e);t&&t.startsWith(o)&&r.push(D(t,o))}return r}catch(r){return[]}}function I(){return h().length}function z(r,e,t={}){let{immediate:n=!0,deep:s=!0,debounce:l=100}=t;if(typeof r.$watch=="function")return r.$watch(e,l>0?b(y=>{g(e,y)},l):y=>{g(e,y)},{immediate:n,deep:s});if(typeof globalThis.watch=="function"){let u=globalThis.watch;return u(()=>r[e],l>0?b(d=>{g(e,d)},l):d=>{g(e,d)},{immediate:n,deep:s})}let v=r[e],K=setInterval(()=>{let u=r[e];u!==v&&(v=u,g(e,u))},200);return n&&g(e,v),()=>clearInterval(K)}function W(r,e,t){let n=p(e,t);return n!==null&&(r[e]=n,c(`restored ${e}`,n)),r[e]}let T={install(r,e){r.config=r.config||{},r.config.globalProperties=r.config.globalProperties||{},r.config.globalProperties.$storage=T,typeof r.provide=="function"&&r.provide("storage",T)},set:g,get:p,remove:m,clear:O,has:$,keys:h,size:I,watch:z,restore:W,get storage(){return i}};return T}export{J as createStorage};
1
+ function D(){let o={};return{getItem:t=>{var n;return(n=o[t])!=null?n:null},setItem:(t,n)=>{o[t]=String(n)},removeItem:t=>{delete o[t]},clear:()=>{Object.keys(o).forEach(t=>delete o[t])},get length(){return Object.keys(o).length},key:t=>{var n;return(n=Object.keys(o)[t])!=null?n:null}}}function v(o,t){return`${t}${o}`}function j(o,t){return o.startsWith(t)?o.slice(t.length):o}function S(o,t){let n=null;return function(...f){n&&clearTimeout(n),n=setTimeout(()=>o.apply(this,f),t)}}function J(o={}){let{prefix:t="lyt_",storage:n=typeof localStorage!="undefined"?localStorage:D(),expire:f,debug:w=!1,serialize:O=JSON.stringify,deserialize:x=JSON.parse}=o,c=(...r)=>{};function g(r,e,i){try{let s={value:e,timestamp:Date.now()},a=i!=null?i:f;a&&(s.expire=Date.now()+a);let l=v(r,t);n.setItem(l,O(s)),c(`set ${r}`,e)}catch(s){}}function m(r,e){try{let i=v(r,t),s=n.getItem(i);if(!s)return e!=null?e:null;let a=x(s);return a.expire&&Date.now()>a.expire?(c(`${r} expired, removing`),p(r),e!=null?e:null):(c(`get ${r}`,a.value),a.value)}catch(i){return e!=null?e:null}}function p(r){try{let e=v(r,t);n.removeItem(e),c(`removed ${r}`)}catch(e){}}function I(){try{let r=h();for(let e of r)p(e);c("cleared all")}catch(r){}}function P(r){return m(r)!==null}function h(){try{let r=[];for(let e=0;e<n.length;e++){let i=n.key(e);i&&i.startsWith(t)&&r.push(j(i,t))}return r}catch(r){return[]}}function $(){return h().length}function z(r,e,i={}){let{immediate:s=!0,deep:a=!0,debounce:l=100}=i;if(typeof r.$watch=="function")return r.$watch(e,l>0?S(y=>{g(e,y)},l):y=>{g(e,y)},{immediate:s,deep:a});if(typeof globalThis.watch=="function"){let u=globalThis.watch;return u(()=>r[e],l>0?S(d=>{g(e,d)},l):d=>{g(e,d)},{immediate:s,deep:a})}let b=r[e],K=setInterval(()=>{let u=r[e];u!==b&&(b=u,g(e,u))},200);return s&&g(e,b),()=>clearInterval(K)}function W(r,e,i){let s=m(e,i);return s!==null&&(r[e]=s,c(`restored ${e}`,s)),r[e]}let T={install(r,e){r.config=r.config||{},r.config.globalProperties=r.config.globalProperties||{},r.config.globalProperties.$storage=T,typeof r.provide=="function"&&r.provide("storage",T)},set:g,get:m,remove:p,clear:I,has:P,keys:h,size:$,watch:z,restore:W,get storage(){return n}};return T}export{J as createStorage};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAeA,WAAW;AACX,KAAK,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;AAEtC,aAAa;AACb,UAAU,cAAc;IACtB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gCAAgC;IAChC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAA;IAClC,6BAA6B;IAC7B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAA;CACrC;AAYD,aAAa;AACb,UAAU,aAAa;IACrB,iBAAiB;IACjB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;IAC1C,UAAU;IACV,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1D,UAAU;IACV,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IACrD,UAAU;IACV,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mBAAmB;IACnB,KAAK,IAAI,IAAI,CAAA;IACb,kBAAkB;IAClB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACzB,uBAAuB;IACvB,IAAI,IAAI,MAAM,EAAE,CAAA;IAChB,eAAe;IACf,IAAI,IAAI,MAAM,CAAA;IACd,qBAAqB;IACrB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,IAAI,CAAA;IACnE,iBAAiB;IACjB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAC/D,aAAa;IACb,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAED,iBAAiB;AACjB,UAAU,YAAY;IACpB,iBAAiB;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW;IACX,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAkCD;;;;GAIG;AACH,iBAAS,aAAa,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CA8OlE;AAED,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAeA,WAAW;AACX,KAAK,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;AAEtC,aAAa;AACb,UAAU,cAAc;IACtB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gCAAgC;IAChC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAA;IAClC,6BAA6B;IAC7B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAA;CACrC;AAYD,aAAa;AACb,UAAU,aAAa;IACrB,iBAAiB;IACjB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;IAC1C,UAAU;IACV,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1D,UAAU;IACV,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IACrD,UAAU;IACV,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mBAAmB;IACnB,KAAK,IAAI,IAAI,CAAA;IACb,kBAAkB;IAClB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACzB,uBAAuB;IACvB,IAAI,IAAI,MAAM,EAAE,CAAA;IAChB,eAAe;IACf,IAAI,IAAI,MAAM,CAAA;IACd,qBAAqB;IACrB,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,IAAI,CAAA;IACnE,iBAAiB;IACjB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAC/D,aAAa;IACb,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAED,iBAAiB;AACjB,UAAU,YAAY;IACpB,iBAAiB;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW;IACX,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAoDD;;;;GAIG;AACH,iBAAS,aAAa,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CAgPlE;AAED,OAAO,EAAE,aAAa,EAAE,CAAA;AACxB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lytjs/plugin-storage",
3
- "version": "4.2.0",
3
+ "version": "5.0.0",
4
4
  "description": "Lyt.js 本地存储持久化插件 - 自动保存响应式状态到 localStorage/sessionStorage",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",