@lomray/react-mobx-manager 4.0.1-beta.1 → 4.0.2-beta.1
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/package.json
CHANGED
|
@@ -4,11 +4,18 @@ interface IAsyncStorage {
|
|
|
4
4
|
setItem: (key: string, value: string) => Promise<void>;
|
|
5
5
|
removeItem: (key: string) => Promise<void>;
|
|
6
6
|
}
|
|
7
|
+
interface IAsyncStorageOptions {
|
|
8
|
+
storage: IAsyncStorage;
|
|
9
|
+
globalKey?: string;
|
|
10
|
+
}
|
|
7
11
|
/**
|
|
8
12
|
* Async storage for mobx store manager
|
|
9
13
|
*/
|
|
10
14
|
declare class AsyncStorage implements IStorage {
|
|
11
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Cookie storage key
|
|
17
|
+
*/
|
|
18
|
+
protected globalKey: string;
|
|
12
19
|
/**
|
|
13
20
|
* @protected
|
|
14
21
|
*/
|
|
@@ -19,7 +26,7 @@ declare class AsyncStorage implements IStorage {
|
|
|
19
26
|
/**
|
|
20
27
|
* @constructor
|
|
21
28
|
*/
|
|
22
|
-
constructor(
|
|
29
|
+
constructor({ storage, globalKey }: IAsyncStorageOptions);
|
|
23
30
|
/**
|
|
24
31
|
* @inheritDoc
|
|
25
32
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
class t{globalKey
|
|
1
|
+
class t{globalKey;storage;constructor({storage:t,globalKey:e}){this.storage=t,this.globalKey=e??"stores"}async get(){try{return JSON.parse(await this.storage.getItem(this.globalKey)||"{}")}catch(t){return console.error("Failed to get item from async storage:",t),{}}}async flush(){try{return await this.storage.removeItem(this.globalKey)}catch(t){console.error("Failed to flush async storage key:",t)}}async set(t){try{return await this.storage.setItem(this.globalKey,JSON.stringify(t||"{}"))}catch(t){console.error("Failed to set value to async storage:",t)}}}export{t as default};
|
|
2
2
|
//# sourceMappingURL=async-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-storage.js","sources":["../../src/storages/async-storage.ts"],"sourcesContent":["import type { IStorage } from '../types';\n\ninterface IAsyncStorage {\n getItem: (key: string) => Promise<string | null>;\n setItem: (key: string, value: string) => Promise<void>;\n removeItem: (key: string) => Promise<void>;\n}\n\n/**\n * Async storage for mobx store manager\n */\nclass AsyncStorage implements IStorage {\n globalKey
|
|
1
|
+
{"version":3,"file":"async-storage.js","sources":["../../src/storages/async-storage.ts"],"sourcesContent":["import type { IStorage } from '../types';\n\ninterface IAsyncStorage {\n getItem: (key: string) => Promise<string | null>;\n setItem: (key: string, value: string) => Promise<void>;\n removeItem: (key: string) => Promise<void>;\n}\n\ninterface IAsyncStorageOptions {\n storage: IAsyncStorage;\n globalKey?: string;\n}\n\n/**\n * Async storage for mobx store manager\n */\nclass AsyncStorage implements IStorage {\n /**\n * Cookie storage key\n */\n protected globalKey: string;\n\n /**\n * @protected\n */\n protected storage: IAsyncStorage;\n\n /**\n * @constructor\n */\n constructor({ storage, globalKey }: IAsyncStorageOptions) {\n this.storage = storage;\n this.globalKey = globalKey ?? 'stores';\n }\n\n /**\n * @inheritDoc\n */\n async get(): Promise<Record<string, any> | undefined> {\n try {\n return JSON.parse((await this.storage.getItem(this.globalKey)) || '{}') as Record<\n string,\n any\n >;\n } catch (e) {\n console.error('Failed to get item from async storage:', e);\n\n return {};\n }\n }\n\n /**\n * @inheritDoc\n */\n async flush(): Promise<any> {\n try {\n return await this.storage.removeItem(this.globalKey);\n } catch (e) {\n console.error('Failed to flush async storage key:', e);\n }\n }\n\n /**\n * @inheritDoc\n */\n async set(value: Record<string, any> | undefined): Promise<void> {\n try {\n return await this.storage.setItem(this.globalKey, JSON.stringify(value || '{}'));\n } catch (e) {\n console.error('Failed to set value to async storage:', e);\n }\n }\n}\n\nexport default AsyncStorage;\n"],"names":["AsyncStorage","globalKey","storage","constructor","this","async","JSON","parse","getItem","e","console","error","removeItem","value","setItem","stringify"],"mappings":"AAgBA,MAAMA,EAIMC,UAKAC,QAKVC,aAAYD,QAAEA,EAAOD,UAAEA,IACrBG,KAAKF,QAAUA,EACfE,KAAKH,UAAYA,GAAa,QAC/B,CAKDI,YACE,IACE,OAAOC,KAAKC,YAAaH,KAAKF,QAAQM,QAAQJ,KAAKH,YAAe,KAInE,CAAC,MAAOQ,GAGP,OAFAC,QAAQC,MAAM,yCAA0CF,GAEjD,EACR,CACF,CAKDJ,cACE,IACE,aAAaD,KAAKF,QAAQU,WAAWR,KAAKH,UAC3C,CAAC,MAAOQ,GACPC,QAAQC,MAAM,qCAAsCF,EACrD,CACF,CAKDJ,UAAUQ,GACR,IACE,aAAaT,KAAKF,QAAQY,QAAQV,KAAKH,UAAWK,KAAKS,UAAUF,GAAS,MAC3E,CAAC,MAAOJ,GACPC,QAAQC,MAAM,wCAAyCF,EACxD,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"../deep-compare.js";class e{storages;persistData={};defaultId;constructor(t){this.storages=t,this.defaultId=Object.keys(t)?.[0]}async get(){try{const t=await Promise.all(Object.values(this.storages).map((t=>t.get()||{})));return this.persistData=Object.keys(this.storages).reduce(((e,s,r)=>({...e,[s]:t[r]})),{}),this.persistData}catch(t){return{}}}flush(){return Promise.all(Object.values(this.storages).map((t=>t.flush())))}set(t,e){const s=this.storages[e??this.defaultId];if(s)return s.set(t)}getStoreOptions(t){return{attributes:{[this.defaultId]:["*"]},behaviour:"exclude",...t.libStorageOptions??{}}}getStoreData(t){const e=t.libStoreId,{attributes:s}=this.getStoreOptions(t);return Object.entries(s).reduce(((t,[s,r])=>{const a=this.persistData
|
|
1
|
+
import t from"../deep-compare.js";class e{storages;persistData={};defaultId;constructor(t){this.storages=t,this.defaultId=Object.keys(t)?.[0]}async get(){try{const t=await Promise.all(Object.values(this.storages).map((t=>t.get()||{})));return this.persistData=Object.keys(this.storages).reduce(((e,s,r)=>({...e,[s]:t[r]})),{}),this.persistData}catch(t){return{}}}flush(){return Promise.all(Object.values(this.storages).map((t=>t.flush())))}set(t,e){const s=this.storages[e??this.defaultId];if(s)return s.set(t)}getStoreOptions(t){return{attributes:{[this.defaultId]:["*"]},behaviour:"exclude",...t.libStorageOptions??{}}}getStoreData(t){const e=t.libStoreId,{attributes:s}=this.getStoreOptions(t);return Object.entries(s).reduce(((t,[s,r])=>{const a=this.persistData[s]?.[e]??{};return{...t,..."*"===r[0]?a:r.reduce(((t,e)=>({...t,...void 0!==a[e]?{[e]:a[e]}:{}})),{})}}),{})}async saveStoreData(e,s){const r=e.libStoreId,{attributes:a,behaviour:i}=this.getStoreOptions(e),o=new Set(Object.keys(s??{})),u=Object.entries(a).map((([e,a])=>{const u=("*"===a[0]?[...o]:a).reduce(((t,e)=>o.has(e)?("exclude"===i&&o.delete(e),{...t,[e]:s?.[e]}):t),{}),c={...this.persistData?.[e]??{},[r]:u};return t(this.persistData?.[e]?.[r]??{},u)?null:(this.persistData[e]?.[r]||(this.persistData[e][r]={}),this.persistData[e][r]=u,this.set(c,e))}));await Promise.all(u)}}export{e as default};
|
|
2
2
|
//# sourceMappingURL=combined-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combined-storage.js","sources":["../../src/storages/combined-storage.ts"],"sourcesContent":["import deepCompare from '../deep-compare';\nimport type { IPersistOptions, IStorage, IStorePersisted } from '../types';\n\ninterface ICombinedStorage {\n [name: string]: IStorage;\n}\n\n/**\n * Combined storage for mobx store manager\n */\nclass CombinedStorage implements IStorage {\n /**\n * @protected\n */\n protected storages: ICombinedStorage;\n\n /**\n * Restored persist storage data\n * @protected\n */\n protected persistData: Record<string, any> = {};\n\n /**\n * Default storage id\n * @protected\n */\n protected defaultId: string;\n\n /**\n * @constructor\n *\n * First storage will be used as default\n */\n constructor(storages: ICombinedStorage) {\n this.storages = storages;\n this.defaultId = Object.keys(storages)?.[0];\n }\n\n /**\n * @inheritDoc\n */\n public async get(): Promise<Record<string, any> | undefined> {\n try {\n const data = await Promise.all(\n Object.values(this.storages).map((storage) => storage.get() || {}),\n );\n\n this.persistData = Object.keys(this.storages).reduce(\n (res, key, index) => ({\n ...res,\n [key]: data[index],\n }),\n {},\n );\n\n return this.persistData;\n } catch (e) {\n return {};\n }\n }\n\n /**\n * @inheritDoc\n */\n public flush(): void | Promise<any> {\n return Promise.all(Object.values(this.storages).map((storage) => storage.flush()));\n }\n\n /**\n * @inheritDoc\n */\n public set(\n value: Record<string, any> | undefined,\n storageId?: string,\n ): ReturnType<IStorage['set']> {\n const storage = this.storages[storageId ?? this.defaultId];\n\n if (!storage) {\n return;\n }\n\n return storage.set(value);\n }\n\n /**\n * Return store storage options\n */\n protected getStoreOptions(store: IStorePersisted): IPersistOptions {\n return {\n attributes: {\n [this.defaultId]: ['*'],\n },\n behaviour: 'exclude',\n ...(store.libStorageOptions ?? {}),\n };\n }\n\n /**\n * Return store persist data\n */\n public getStoreData(store: IStorePersisted): Record<string, any> | undefined {\n const storeId = store.libStoreId!;\n const { attributes } = this.getStoreOptions(store);\n\n return Object.entries(attributes!).reduce((res, [storageId, attr]) => {\n const storageData = this.persistData
|
|
1
|
+
{"version":3,"file":"combined-storage.js","sources":["../../src/storages/combined-storage.ts"],"sourcesContent":["import deepCompare from '../deep-compare';\nimport type { IPersistOptions, IStorage, IStorePersisted } from '../types';\n\ninterface ICombinedStorage {\n [name: string]: IStorage;\n}\n\n/**\n * Combined storage for mobx store manager\n */\nclass CombinedStorage implements IStorage {\n /**\n * @protected\n */\n protected storages: ICombinedStorage;\n\n /**\n * Restored persist storage data\n * @protected\n */\n protected persistData: Record<string, any> = {};\n\n /**\n * Default storage id\n * @protected\n */\n protected defaultId: string;\n\n /**\n * @constructor\n *\n * First storage will be used as default\n */\n constructor(storages: ICombinedStorage) {\n this.storages = storages;\n this.defaultId = Object.keys(storages)?.[0];\n }\n\n /**\n * @inheritDoc\n */\n public async get(): Promise<Record<string, any> | undefined> {\n try {\n const data = await Promise.all(\n Object.values(this.storages).map((storage) => storage.get() || {}),\n );\n\n this.persistData = Object.keys(this.storages).reduce(\n (res, key, index) => ({\n ...res,\n [key]: data[index],\n }),\n {},\n );\n\n return this.persistData;\n } catch (e) {\n return {};\n }\n }\n\n /**\n * @inheritDoc\n */\n public flush(): void | Promise<any> {\n return Promise.all(Object.values(this.storages).map((storage) => storage.flush()));\n }\n\n /**\n * @inheritDoc\n */\n public set(\n value: Record<string, any> | undefined,\n storageId?: string,\n ): ReturnType<IStorage['set']> {\n const storage = this.storages[storageId ?? this.defaultId];\n\n if (!storage) {\n return;\n }\n\n return storage.set(value);\n }\n\n /**\n * Return store storage options\n */\n protected getStoreOptions(store: IStorePersisted): IPersistOptions {\n return {\n attributes: {\n [this.defaultId]: ['*'],\n },\n behaviour: 'exclude',\n ...(store.libStorageOptions ?? {}),\n };\n }\n\n /**\n * Return store persist data\n */\n public getStoreData(store: IStorePersisted): Record<string, any> | undefined {\n const storeId = store.libStoreId!;\n const { attributes } = this.getStoreOptions(store);\n\n return Object.entries(attributes!).reduce((res, [storageId, attr]) => {\n const storageData = this.persistData[storageId]?.[storeId] ?? {};\n const allowedData =\n attr[0] === '*'\n ? storageData\n : attr.reduce(\n (r, attrName) => ({\n ...r,\n ...(storageData[attrName] !== undefined\n ? { [attrName]: storageData[attrName] }\n : {}),\n }),\n {},\n );\n\n return {\n ...res,\n ...allowedData,\n };\n }, {});\n }\n\n /**\n * Save store data in storage\n */\n public async saveStoreData(\n store: IStorePersisted,\n data: Record<string, any> | undefined,\n ): Promise<void> {\n const storeId = store.libStoreId!;\n const { attributes, behaviour } = this.getStoreOptions(store);\n const dataKeys = new Set(Object.keys(data ?? {}));\n\n const dataByStorages = Object.entries(attributes!).map(([storageId, attr]) => {\n const storeData = (attr[0] === '*' ? [...dataKeys] : attr).reduce((r, attrName) => {\n if (!dataKeys.has(attrName)) {\n return r;\n }\n\n if (behaviour === 'exclude') {\n dataKeys.delete(attrName);\n }\n\n return {\n ...r,\n [attrName]: data?.[attrName],\n };\n }, {});\n\n const newData = {\n ...(this.persistData?.[storageId] ?? {}),\n [storeId]: storeData,\n } as Record<string, any>;\n\n // skip updating if nothing changed\n if (deepCompare(this.persistData?.[storageId]?.[storeId] ?? {}, storeData)) {\n return null;\n }\n\n if (!this.persistData[storageId]?.[storeId]) {\n this.persistData[storageId][storeId] = {};\n }\n\n this.persistData[storageId][storeId] = storeData;\n\n return this.set(newData, storageId);\n });\n\n await Promise.all(dataByStorages);\n }\n}\n\nexport default CombinedStorage;\n"],"names":["CombinedStorage","storages","persistData","defaultId","constructor","this","Object","keys","async","data","Promise","all","values","map","storage","get","reduce","res","key","index","e","flush","set","value","storageId","getStoreOptions","store","attributes","behaviour","libStorageOptions","getStoreData","storeId","libStoreId","entries","attr","storageData","r","attrName","undefined","dataKeys","Set","dataByStorages","storeData","has","delete","newData","deepCompare"],"mappings":"kCAUA,MAAMA,EAIMC,SAMAC,YAAmC,CAAA,EAMnCC,UAOVC,YAAYH,GACVI,KAAKJ,SAAWA,EAChBI,KAAKF,UAAYG,OAAOC,KAAKN,KAAY,EAC1C,CAKMO,YACL,IACE,MAAMC,QAAaC,QAAQC,IACzBL,OAAOM,OAAOP,KAAKJ,UAAUY,KAAKC,GAAYA,EAAQC,OAAS,CAAE,KAWnE,OARAV,KAAKH,YAAcI,OAAOC,KAAKF,KAAKJ,UAAUe,QAC5C,CAACC,EAAKC,EAAKC,KAAW,IACjBF,EACHC,CAACA,GAAMT,EAAKU,MAEd,CAAE,GAGGd,KAAKH,WACb,CAAC,MAAOkB,GACP,MAAO,EACR,CACF,CAKMC,QACL,OAAOX,QAAQC,IAAIL,OAAOM,OAAOP,KAAKJ,UAAUY,KAAKC,GAAYA,EAAQO,UAC1E,CAKMC,IACLC,EACAC,GAEA,MAAMV,EAAUT,KAAKJ,SAASuB,GAAanB,KAAKF,WAEhD,GAAKW,EAIL,OAAOA,EAAQQ,IAAIC,EACpB,CAKSE,gBAAgBC,GACxB,MAAO,CACLC,WAAY,CACV,CAACtB,KAAKF,WAAY,CAAC,MAErByB,UAAW,aACPF,EAAMG,mBAAqB,CAAE,EAEpC,CAKMC,aAAaJ,GAClB,MAAMK,EAAUL,EAAMM,YAChBL,WAAEA,GAAetB,KAAKoB,gBAAgBC,GAE5C,OAAOpB,OAAO2B,QAAQN,GAAaX,QAAO,CAACC,GAAMO,EAAWU,MAC1D,MAAMC,EAAc9B,KAAKH,YAAYsB,KAAaO,IAAY,GAc9D,MAAO,IACFd,KAbS,MAAZiB,EAAK,GACDC,EACAD,EAAKlB,QACH,CAACoB,EAAGC,KAAc,IACbD,UAC2BE,IAA1BH,EAAYE,GACZ,CAAEA,CAACA,GAAWF,EAAYE,IAC1B,CAAE,KAER,CAAE,GAMT,GACA,CAAE,EACN,CAKM7B,oBACLkB,EACAjB,GAEA,MAAMsB,EAAUL,EAAMM,YAChBL,WAAEA,EAAUC,UAAEA,GAAcvB,KAAKoB,gBAAgBC,GACjDa,EAAW,IAAIC,IAAIlC,OAAOC,KAAKE,GAAQ,CAAE,IAEzCgC,EAAiBnC,OAAO2B,QAAQN,GAAad,KAAI,EAAEW,EAAWU,MAClE,MAAMQ,GAAyB,MAAZR,EAAK,GAAa,IAAIK,GAAYL,GAAMlB,QAAO,CAACoB,EAAGC,IAC/DE,EAASI,IAAIN,IAIA,YAAdT,GACFW,EAASK,OAAOP,GAGX,IACFD,EACHC,CAACA,GAAW5B,IAAO4B,KATZD,GAWR,CAAE,GAECS,EAAU,IACVxC,KAAKH,cAAcsB,IAAc,CAAE,EACvCO,CAACA,GAAUW,GAIb,OAAII,EAAYzC,KAAKH,cAAcsB,KAAaO,IAAY,GAAIW,GACvD,MAGJrC,KAAKH,YAAYsB,KAAaO,KACjC1B,KAAKH,YAAYsB,GAAWO,GAAW,CAAA,GAGzC1B,KAAKH,YAAYsB,GAAWO,GAAWW,EAEhCrC,KAAKiB,IAAIuB,EAASrB,GAAU,UAG/Bd,QAAQC,IAAI8B,EACnB"}
|