@lomray/react-mobx-manager 4.1.0 → 4.2.0-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/index.d.ts CHANGED
@@ -5,5 +5,6 @@ export { default as onChangeListener } from "./on-change-listener.js";
5
5
  export { default as wakeup } from "./wakeup.js";
6
6
  export { default as withStores } from "./with-stores.js";
7
7
  export * from "./make-exported.js";
8
+ export * from "./make-fetching.js";
8
9
  export { default as Events } from "./events.js";
9
10
  export { default as Logger } from "./logger.js";
package/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{StoreManagerContext,StoreManagerParentContext,StoreManagerParentProvider,StoreManagerProvider,useStoreManager,useStoreManagerParent}from"./context.js";export{default as Manager}from"./manager.js";export{default as onChangeListener}from"./on-change-listener.js";export{default as wakeup}from"./wakeup.js";export{default as withStores}from"./with-stores.js";export{isPropExcludedFromExport,isPropObservableExported,isPropSimpleExported,makeExported}from"./make-exported.js";export{default as Events}from"./events.js";export{default as Logger}from"./logger.js";
1
+ export{StoreManagerContext,StoreManagerParentContext,StoreManagerParentProvider,StoreManagerProvider,useStoreManager,useStoreManagerParent}from"./context.js";export{default as Manager}from"./manager.js";export{default as onChangeListener}from"./on-change-listener.js";export{default as wakeup}from"./wakeup.js";export{default as withStores}from"./with-stores.js";export{isPropExcludedFromExport,isPropObservableExported,isPropSimpleExported,makeExported}from"./make-exported.js";import"mobx";export{default as Events}from"./events.js";export{default as Logger}from"./logger.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,8 @@
1
+ type TParams<T> = {
2
+ [K in keyof T]?: keyof T;
3
+ };
4
+ /**
5
+ * Wrap functions to manage their fetching indicator
6
+ */
7
+ declare const makeFetching: <T extends Record<any, any>>(instance: T, params?: TParams<T>, hasLock?: boolean) => void;
8
+ export { makeFetching as default };
@@ -0,0 +1,2 @@
1
+ import{runInAction as t}from"mobx";const o=(o,e={},r=!1)=>{Object.entries(e).forEach(([e,n])=>{const f=o[e],c=e=>{t(()=>{o[n]=e})};o[e]=(...t)=>{if(r&&o[n])return;c(!0);const e=f(...t);return"object"==typeof e&&e.finally?e.finally(()=>{c(!1)}):c(!1),e}})};export{o as default};
2
+ //# sourceMappingURL=make-fetching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-fetching.js","sources":["../src/make-fetching.ts"],"sourcesContent":["import { runInAction } from 'mobx';\n\ntype TParams<T> = {\n [K in keyof T]?: keyof T;\n};\n\n/**\n * Wrap functions to manage their fetching indicator\n */\nconst makeFetching = <T extends Record<any, any>>(\n instance: T,\n params: TParams<T> = {},\n hasLock = false,\n): void => {\n Object.entries(params).forEach(([funcName, propName]) => {\n const callback = instance[funcName] as (...arg: any[]) => any;\n const setValue = (value: boolean) => {\n runInAction(() => {\n // @ts-expect-error not necessary\n instance[propName] = value;\n });\n };\n\n // @ts-expect-error not necessary\n instance[funcName] = (...args: any[]) => {\n if (hasLock && instance[propName]) {\n return;\n }\n\n setValue(true);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const result = callback(...args);\n\n if (typeof result === 'object' && result.finally) {\n result.finally(() => {\n setValue(false);\n });\n } else {\n setValue(false);\n }\n\n return result;\n };\n });\n};\n\nexport default makeFetching;\n"],"names":["makeFetching","instance","params","hasLock","Object","entries","forEach","funcName","propName","callback","setValue","value","runInAction","args","result","finally"],"mappings":"mCASA,MAAMA,EAAe,CACnBC,EACAC,EAAqB,CAAA,EACrBC,GAAU,KAEVC,OAAOC,QAAQH,GAAQI,QAAQ,EAAEC,EAAUC,MACzC,MAAMC,EAAWR,EAASM,GACpBG,EAAYC,IAChBC,EAAY,KAEVX,EAASO,GAAYG,KAKzBV,EAASM,GAAY,IAAIM,KACvB,GAAIV,GAAWF,EAASO,GACtB,OAGFE,GAAS,GAGT,MAAMI,EAASL,KAAYI,GAU3B,MARsB,iBAAXC,GAAuBA,EAAOC,QACvCD,EAAOC,QAAQ,KACbL,GAAS,KAGXA,GAAS,GAGJI"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lomray/react-mobx-manager",
3
- "version": "4.1.0",
3
+ "version": "4.2.0-beta.1",
4
4
  "description": "This package provides Mobx stores manager for react.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -64,7 +64,7 @@
64
64
  "sinon": "^17.0.2",
65
65
  "sinon-chai": "^3.7.0",
66
66
  "typescript": "4.9.5",
67
- "vite": "^6.3.5",
67
+ "vite": "^6.4.1",
68
68
  "vite-tsconfig-paths": "^4.3.2",
69
69
  "vitest": "^3.0.6"
70
70
  },
@@ -15,6 +15,15 @@ declare class StateListener {
15
15
  * @protected
16
16
  */
17
17
  protected static listeners: Record<Listeners | string, () => void>;
18
+ /**
19
+ * Last mobx event
20
+ * @private
21
+ */
22
+ private _lastEvent;
23
+ /**
24
+ * @private
25
+ */
26
+ private readonly _throttleMs;
18
27
  /**
19
28
  * @constructor
20
29
  */
@@ -32,16 +41,28 @@ declare class StateListener {
32
41
  */
33
42
  protected getContextKey(contextId: string, nestedKey?: string): string;
34
43
  /**
35
- * Get stores state
36
- * @protected
44
+ * Store snapshot WITHOUT creating mobx dependencies
37
45
  */
38
46
  /**
39
- * Get stores state
40
- * @protected
47
+ * Store snapshot WITHOUT creating mobx dependencies
41
48
  */
42
49
  protected getStoresState(): {
43
50
  root: Record<string, any>;
44
51
  };
52
+ /**
53
+ * Safe clone
54
+ * @private
55
+ */
56
+ /**
57
+ * Safe clone
58
+ * @private
59
+ */
60
+ private getSafeEvent;
61
+ /**
62
+ * Batch sending
63
+ * @private
64
+ */
65
+ private emitChange;
45
66
  /**
46
67
  * Subscribe on stores changes
47
68
  * @protected
@@ -1,2 +1,2 @@
1
- import t from"lodash";import{spy as e}from"mobx";import{ROOT_CONTEXT_ID as s}from"../../constants.js";import r from"../../manager.js";var o;!function(t){t.SPY="spy"}(o||(o={}));class n{manager;static listeners={};constructor(t){this.manager=t,Object.values(n.listeners).forEach(t=>{t()})}getContextKey(t,e){if(t===s)return t;const{parentId:r}=this.manager.getStoresRelations().get(t)??{};return r&&r!==s?this.getContextKey(r,`${r}.${e??t}`):`${r??s}.${e??t}`}getStoresState(){const e={root:{}};try{const s=this.manager.getStores();this.manager.getStoresRelations().forEach(({ids:o,componentName:n},a)=>{const i=this.getContextKey(a);o.forEach(o=>{const a=s.get(o);if(a){const s=a?.toJSON?.()??r.getObservableProps(a);t.set(e,`${i}.stores.${o}`,s),t.set(e,`${i}.componentName`,n)}})})}catch(t){}return e}subscribe(){return n.listeners[o.SPY]=e(e=>{["report-end","reaction"].includes(e.type)||this.manager?.__devOnChange?.({event:t.cloneDeep(e),storesState:this.getStoresState()})}),this.manager}}export{n as default};
1
+ import t from"lodash";import{untracked as e,spy as s}from"mobx";import{ROOT_CONTEXT_ID as n}from"../../constants.js";import r from"../../manager.js";var o;!function(t){t.SPY="spy"}(o||(o={}));class a{manager;static listeners={};_lastEvent=null;_throttleMs=16;constructor(t){this.manager=t,Object.values(a.listeners).forEach(t=>{t()})}getContextKey(t,e){if(t===n)return t;const{parentId:s}=this.manager.getStoresRelations().get(t)??{};return s&&s!==n?this.getContextKey(s,`${s}.${e??t}`):`${s??n}.${e??t}`}getStoresState(){return e(()=>{const e={root:{}};try{const s=this.manager.getStores();this.manager.getStoresRelations().forEach(({ids:n,componentName:o},a)=>{const i=this.getContextKey(a);n.forEach(n=>{const a=s.get(n);if(a){const s=a?.toJSON?.()??r.getObservableProps(a);t.set(e,`${i}.stores.${n}`,s),t.set(e,`${i}.componentName`,o)}})})}catch{}return e})}getSafeEvent(e){const s=t.mapValues(e,t=>{if(null==t)return t;const e=typeof t;return"string"===e||"number"===e||"boolean"===e?t:Array.isArray(t)?{length:t.length}:"function"!==e&&"symbol"!==e&&"object"===e?{objectType:t?.constructor?.name??"Object"}:void 0});return t.pickBy(s,t=>void 0!==t)}emitChange=t.throttle(()=>{const t={event:this._lastEvent,storesState:this.getStoresState()};this.manager?.__devOnChange?.(t),this._lastEvent=null},this._throttleMs,{leading:!1,trailing:!0});subscribe(){return a.listeners[o.SPY]=s(t=>{["report-end","reaction"].includes(t?.type)||(this._lastEvent=this.getSafeEvent(t),this.emitChange())}),this.manager}}export{a as default};
2
2
  //# sourceMappingURL=state-listener.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state-listener.js","sources":["../../../src/plugins/dev-extension/state-listener.ts"],"sourcesContent":["import _ from 'lodash';\nimport { spy } from 'mobx';\nimport { ROOT_CONTEXT_ID } from '@src/constants';\nimport Manager from '../../manager';\n\nenum Listeners {\n SPY = 'spy',\n}\n\n/**\n * State listener\n */\nclass StateListener {\n /**\n * @protected\n */\n protected manager: Manager;\n\n /**\n * Store global listeners\n * @protected\n */\n protected static listeners: Record<Listeners | string, () => void> = {} as never;\n\n /**\n * @constructor\n */\n public constructor(manager: Manager) {\n this.manager = manager;\n\n Object.values(StateListener.listeners).forEach((unsubscribe) => {\n unsubscribe();\n });\n }\n\n /**\n * Get context tree key\n * @protected\n */\n protected getContextKey(contextId: string, nestedKey?: string): string {\n if (contextId === ROOT_CONTEXT_ID) {\n return contextId;\n }\n\n const { parentId } = this.manager.getStoresRelations().get(contextId) ?? {};\n\n if (!parentId || parentId === ROOT_CONTEXT_ID) {\n return `${parentId ?? ROOT_CONTEXT_ID}.${nestedKey ?? contextId}`;\n }\n\n return this.getContextKey(parentId, `${parentId}.${nestedKey ?? contextId}`);\n }\n\n /**\n * Get stores state\n * @protected\n */\n protected getStoresState(): { root: Record<string, any> } {\n const state: { root: Record<string, any> } = { root: {} };\n\n try {\n const stores = this.manager.getStores();\n\n this.manager.getStoresRelations().forEach(({ ids, componentName }, contextId) => {\n const key = this.getContextKey(contextId);\n\n ids.forEach((id) => {\n const store = stores.get(id);\n\n if (store) {\n const storeState = store?.toJSON?.() ?? Manager.getObservableProps(store);\n\n _.set(state, `${key}.stores.${id}`, storeState);\n _.set(state, `${key}.componentName`, componentName);\n }\n });\n });\n } catch (e) {\n // manager has not initialized yet\n }\n\n return state;\n }\n\n /**\n * Subscribe on stores changes\n * @protected\n */\n public subscribe(): Manager {\n StateListener.listeners[Listeners.SPY] = spy((event) => {\n if (['report-end', 'reaction'].includes(event.type)) {\n return;\n }\n\n this.manager?.['__devOnChange']?.({\n event: _.cloneDeep(event),\n storesState: this.getStoresState(),\n });\n });\n\n return this.manager;\n }\n}\n\nexport default StateListener;\n"],"names":["Listeners","StateListener","manager","static","constructor","this","Object","values","listeners","forEach","unsubscribe","getContextKey","contextId","nestedKey","ROOT_CONTEXT_ID","parentId","getStoresRelations","get","getStoresState","state","root","stores","getStores","ids","componentName","key","id","store","storeState","toJSON","Manager","getObservableProps","_","set","e","subscribe","SPY","spy","event","includes","type","cloneDeep","storesState"],"mappings":"sIAKA,IAAKA,GAAL,SAAKA,GACHA,EAAA,IAAA,KACD,CAFD,CAAKA,IAAAA,EAAS,CAAA,IAOd,MAAMC,EAIMC,QAMAC,iBAA2D,CAAA,EAKrE,WAAAC,CAAmBF,GACjBG,KAAKH,QAAUA,EAEfI,OAAOC,OAAON,EAAcO,WAAWC,QAASC,IAC9CA,KAEJ,CAMU,aAAAC,CAAcC,EAAmBC,GACzC,GAAID,IAAcE,EAChB,OAAOF,EAGT,MAAMG,SAAEA,GAAaV,KAAKH,QAAQc,qBAAqBC,IAAIL,IAAc,CAAA,EAEzE,OAAKG,GAAYA,IAAaD,EAIvBT,KAAKM,cAAcI,EAAU,GAAGA,KAAYF,GAAaD,KAHvD,GAAGG,GAAYD,KAAmBD,GAAaD,GAI1D,CAMU,cAAAM,GACR,MAAMC,EAAuC,CAAEC,KAAM,IAErD,IACE,MAAMC,EAAShB,KAAKH,QAAQoB,YAE5BjB,KAAKH,QAAQc,qBAAqBP,QAAQ,EAAGc,MAAKC,iBAAiBZ,KACjE,MAAMa,EAAMpB,KAAKM,cAAcC,GAE/BW,EAAId,QAASiB,IACX,MAAMC,EAAQN,EAAOJ,IAAIS,GAEzB,GAAIC,EAAO,CACT,MAAMC,EAAaD,GAAOE,YAAcC,EAAQC,mBAAmBJ,GAEnEK,EAAEC,IAAId,EAAO,GAAGM,YAAcC,IAAME,GACpCI,EAAEC,IAAId,EAAO,GAAGM,kBAAqBD,EACtC,KAGN,CAAC,MAAOU,GAER,CAED,OAAOf,CACT,CAMO,SAAAgB,GAYL,OAXAlC,EAAcO,UAAUR,EAAUoC,KAAOC,EAAKC,IACxC,CAAC,aAAc,YAAYC,SAASD,EAAME,OAI9CnC,KAAKH,SAAyB,gBAAI,CAChCoC,MAAON,EAAES,UAAUH,GACnBI,YAAarC,KAAKa,qBAIfb,KAAKH,OACd"}
1
+ {"version":3,"file":"state-listener.js","sources":["../../../src/plugins/dev-extension/state-listener.ts"],"sourcesContent":["import _ from 'lodash';\nimport { spy, untracked } from 'mobx';\nimport { ROOT_CONTEXT_ID } from '@src/constants';\nimport Manager from '../../manager';\n\nenum Listeners {\n SPY = 'spy',\n}\n\ntype SpyEvent = Parameters<Parameters<typeof spy>[0]>[0];\n\n/**\n * State listener\n */\nclass StateListener {\n /**\n * @protected\n */\n protected manager: Manager;\n\n /**\n * Store global listeners\n * @protected\n */\n protected static listeners: Record<Listeners | string, () => void> = {} as never;\n\n /**\n * Last mobx event\n * @private\n */\n private _lastEvent: SpyEvent | null = null;\n\n /**\n * @private\n */\n private readonly _throttleMs = 16;\n\n /**\n * @constructor\n */\n public constructor(manager: Manager) {\n this.manager = manager;\n\n Object.values(StateListener.listeners).forEach((unsubscribe) => {\n unsubscribe();\n });\n }\n\n /**\n * Get context tree key\n * @protected\n */\n protected getContextKey(contextId: string, nestedKey?: string): string {\n if (contextId === ROOT_CONTEXT_ID) {\n return contextId;\n }\n\n const { parentId } = this.manager.getStoresRelations().get(contextId) ?? {};\n\n if (!parentId || parentId === ROOT_CONTEXT_ID) {\n return `${parentId ?? ROOT_CONTEXT_ID}.${nestedKey ?? contextId}`;\n }\n\n return this.getContextKey(parentId, `${parentId}.${nestedKey ?? contextId}`);\n }\n\n /**\n * Store snapshot WITHOUT creating mobx dependencies\n */\n protected getStoresState(): { root: Record<string, any> } {\n return untracked(() => {\n const state: { root: Record<string, any> } = { root: {} };\n\n try {\n const stores = this.manager.getStores();\n\n this.manager.getStoresRelations().forEach(({ ids, componentName }, contextId) => {\n const key = this.getContextKey(contextId);\n\n ids.forEach((id) => {\n const store = stores.get(id);\n\n if (store) {\n const storeState = store?.toJSON?.() ?? Manager.getObservableProps(store);\n\n _.set(state, `${key}.stores.${id}`, storeState);\n _.set(state, `${key}.componentName`, componentName);\n }\n });\n });\n } catch {\n // manager has not initialized yet\n }\n\n return state;\n });\n }\n\n /**\n * Safe clone\n * @private\n */\n private getSafeEvent(event: SpyEvent): SpyEvent {\n const normalized = _.mapValues(event, (v) => {\n if (v == null) {\n return v;\n }\n\n const t = typeof v;\n\n if (t === 'string' || t === 'number' || t === 'boolean') {\n return v;\n }\n\n if (Array.isArray(v)) {\n return { length: v.length };\n }\n\n if (t === 'function' || t === 'symbol') {\n return undefined;\n }\n\n if (t === 'object') {\n return { objectType: v?.constructor?.name ?? 'Object' };\n }\n\n return undefined;\n });\n\n return _.pickBy(normalized, (v) => v !== undefined) as SpyEvent;\n }\n\n /**\n * Batch sending\n * @private\n */\n private emitChange = _.throttle(\n () => {\n const payload = {\n event: this._lastEvent,\n storesState: this.getStoresState(),\n };\n\n this.manager?.['__devOnChange']?.(payload);\n this._lastEvent = null;\n },\n this._throttleMs,\n { leading: false, trailing: true },\n );\n\n /**\n * Subscribe on stores changes\n * @protected\n */\n public subscribe(): Manager {\n StateListener.listeners[Listeners.SPY] = spy((event) => {\n if (['report-end', 'reaction'].includes(event?.type)) {\n return;\n }\n\n this._lastEvent = this.getSafeEvent(event);\n\n this.emitChange();\n });\n\n return this.manager;\n }\n}\n\nexport default StateListener;\n"],"names":["Listeners","StateListener","manager","static","_lastEvent","_throttleMs","constructor","this","Object","values","listeners","forEach","unsubscribe","getContextKey","contextId","nestedKey","ROOT_CONTEXT_ID","parentId","getStoresRelations","get","getStoresState","untracked","state","root","stores","getStores","ids","componentName","key","id","store","storeState","toJSON","Manager","getObservableProps","_","set","getSafeEvent","event","normalized","mapValues","v","t","Array","isArray","length","objectType","name","pickBy","undefined","emitChange","throttle","payload","storesState","leading","trailing","subscribe","SPY","spy","includes","type"],"mappings":"qJAKA,IAAKA,GAAL,SAAKA,GACHA,EAAA,IAAA,KACD,CAFD,CAAKA,IAAAA,EAAS,CAAA,IASd,MAAMC,EAIMC,QAMAC,iBAA2D,CAAA,EAM7DC,WAA8B,KAKrBC,YAAc,GAK/B,WAAAC,CAAmBJ,GACjBK,KAAKL,QAAUA,EAEfM,OAAOC,OAAOR,EAAcS,WAAWC,QAASC,IAC9CA,KAEJ,CAMU,aAAAC,CAAcC,EAAmBC,GACzC,GAAID,IAAcE,EAChB,OAAOF,EAGT,MAAMG,SAAEA,GAAaV,KAAKL,QAAQgB,qBAAqBC,IAAIL,IAAc,CAAA,EAEzE,OAAKG,GAAYA,IAAaD,EAIvBT,KAAKM,cAAcI,EAAU,GAAGA,KAAYF,GAAaD,KAHvD,GAAGG,GAAYD,KAAmBD,GAAaD,GAI1D,CAKU,cAAAM,GACR,OAAOC,EAAU,KACf,MAAMC,EAAuC,CAAEC,KAAM,IAErD,IACE,MAAMC,EAASjB,KAAKL,QAAQuB,YAE5BlB,KAAKL,QAAQgB,qBAAqBP,QAAQ,EAAGe,MAAKC,iBAAiBb,KACjE,MAAMc,EAAMrB,KAAKM,cAAcC,GAE/BY,EAAIf,QAASkB,IACX,MAAMC,EAAQN,EAAOL,IAAIU,GAEzB,GAAIC,EAAO,CACT,MAAMC,EAAaD,GAAOE,YAAcC,EAAQC,mBAAmBJ,GAEnEK,EAAEC,IAAId,EAAO,GAAGM,YAAcC,IAAME,GACpCI,EAAEC,IAAId,EAAO,GAAGM,kBAAqBD,EACtC,KAGN,CAAC,MAED,CAED,OAAOL,GAEX,CAMQ,YAAAe,CAAaC,GACnB,MAAMC,EAAaJ,EAAEK,UAAUF,EAAQG,IACrC,GAAS,MAALA,EACF,OAAOA,EAGT,MAAMC,SAAWD,EAEjB,MAAU,WAANC,GAAwB,WAANA,GAAwB,YAANA,EAC/BD,EAGLE,MAAMC,QAAQH,GACT,CAAEI,OAAQJ,EAAEI,QAGX,aAANH,GAA0B,WAANA,GAId,WAANA,EACK,CAAEI,WAAYL,GAAGnC,aAAayC,MAAQ,eAL/C,IAWF,OAAOZ,EAAEa,OAAOT,EAAaE,QAAYQ,IAANR,EACrC,CAMQS,WAAaf,EAAEgB,SACrB,KACE,MAAMC,EAAU,CACdd,MAAO/B,KAAKH,WACZiD,YAAa9C,KAAKa,kBAGpBb,KAAKL,SAAyB,gBAAIkD,GAClC7C,KAAKH,WAAa,MAEpBG,KAAKF,YACL,CAAEiD,SAAS,EAAOC,UAAU,IAOvB,SAAAC,GAWL,OAVAvD,EAAcS,UAAUV,EAAUyD,KAAOC,EAAKpB,IACxC,CAAC,aAAc,YAAYqB,SAASrB,GAAOsB,QAI/CrD,KAAKH,WAAaG,KAAK8B,aAAaC,GAEpC/B,KAAK2C,gBAGA3C,KAAKL,OACd"}
@@ -44,4 +44,4 @@ declare class LocalStorage implements IStorage {
44
44
  */
45
45
  set(value: Record<string, any> | undefined): void;
46
46
  }
47
- export { LocalStorage as default };
47
+ export { LocalStorage as default, ILocalStorageOptions };
@@ -1 +1 @@
1
- {"version":3,"file":"local-storage.js","sources":["../../src/storages/local-storage.ts"],"sourcesContent":["import type { IStorage } from '../types';\n\ninterface ILocalStorageOptions {\n globalKey?: string;\n storage?: Storage;\n}\n\n/**\n * Local storage for mobx store manager\n */\nclass LocalStorage implements IStorage {\n /**\n * Local storage key\n */\n protected globalKey: string;\n\n /**\n * @protected\n */\n protected storage: Storage;\n\n /**\n * @constructor\n */\n constructor({ storage, globalKey }: ILocalStorageOptions = {}) {\n this.storage = storage ?? localStorage;\n this.globalKey = globalKey ?? 'stores';\n }\n\n /**\n * @inheritDoc\n */\n get(): Record<string, any> | Promise<Record<string, any> | undefined> {\n try {\n return JSON.parse(this.storage.getItem(this.globalKey) || '{}') as Record<string, any>;\n } catch (e) {\n return {};\n }\n }\n\n /**\n * @inheritDoc\n */\n flush(): void | Promise<any> {\n return this.storage.removeItem(this.globalKey);\n }\n\n /**\n * @inheritDoc\n */\n set(value: Record<string, any> | undefined): void {\n return this.storage.setItem(this.globalKey, JSON.stringify(value || '{}'));\n }\n}\n\nexport default LocalStorage;\n"],"names":["LocalStorage","globalKey","storage","constructor","this","localStorage","get","JSON","parse","getItem","e","flush","removeItem","set","value","setItem","stringify"],"mappings":"AAUA,MAAMA,EAIMC,UAKAC,QAKV,WAAAC,EAAYD,QAAEA,EAAOD,UAAEA,GAAoC,CAAA,GACzDG,KAAKF,QAAUA,GAAWG,aAC1BD,KAAKH,UAAYA,GAAa,QAChC,CAKA,GAAAK,GACE,IACE,OAAOC,KAAKC,MAAMJ,KAAKF,QAAQO,QAAQL,KAAKH,YAAc,KAC3D,CAAC,MAAOS,GACP,MAAO,CAAA,CACR,CACH,CAKA,KAAAC,GACE,OAAOP,KAAKF,QAAQU,WAAWR,KAAKH,UACtC,CAKA,GAAAY,CAAIC,GACF,OAAOV,KAAKF,QAAQa,QAAQX,KAAKH,UAAWM,KAAKS,UAAUF,GAAS,MACtE"}
1
+ {"version":3,"file":"local-storage.js","sources":["../../src/storages/local-storage.ts"],"sourcesContent":["import type { IStorage } from '../types';\n\nexport interface ILocalStorageOptions {\n globalKey?: string;\n storage?: Storage;\n}\n\n/**\n * Local storage for mobx store manager\n */\nclass LocalStorage implements IStorage {\n /**\n * Local storage key\n */\n protected globalKey: string;\n\n /**\n * @protected\n */\n protected storage: Storage;\n\n /**\n * @constructor\n */\n constructor({ storage, globalKey }: ILocalStorageOptions = {}) {\n this.storage = storage ?? localStorage;\n this.globalKey = globalKey ?? 'stores';\n }\n\n /**\n * @inheritDoc\n */\n get(): Record<string, any> | Promise<Record<string, any> | undefined> {\n try {\n return JSON.parse(this.storage.getItem(this.globalKey) || '{}') as Record<string, any>;\n } catch (e) {\n return {};\n }\n }\n\n /**\n * @inheritDoc\n */\n flush(): void | Promise<any> {\n return this.storage.removeItem(this.globalKey);\n }\n\n /**\n * @inheritDoc\n */\n set(value: Record<string, any> | undefined): void {\n return this.storage.setItem(this.globalKey, JSON.stringify(value || '{}'));\n }\n}\n\nexport default LocalStorage;\n"],"names":["LocalStorage","globalKey","storage","constructor","this","localStorage","get","JSON","parse","getItem","e","flush","removeItem","set","value","setItem","stringify"],"mappings":"AAUA,MAAMA,EAIMC,UAKAC,QAKV,WAAAC,EAAYD,QAAEA,EAAOD,UAAEA,GAAoC,CAAA,GACzDG,KAAKF,QAAUA,GAAWG,aAC1BD,KAAKH,UAAYA,GAAa,QAChC,CAKA,GAAAK,GACE,IACE,OAAOC,KAAKC,MAAMJ,KAAKF,QAAQO,QAAQL,KAAKH,YAAc,KAC3D,CAAC,MAAOS,GACP,MAAO,CAAA,CACR,CACH,CAKA,KAAAC,GACE,OAAOP,KAAKF,QAAQU,WAAWR,KAAKH,UACtC,CAKA,GAAAY,CAAIC,GACF,OAAOV,KAAKF,QAAQa,QAAQX,KAAKH,UAAWM,KAAKS,UAAUF,GAAS,MACtE"}
@@ -0,0 +1,15 @@
1
+ import LocalStorage from "./local-storage.js";
2
+ import { ILocalStorageOptions } from "./local-storage.js";
3
+ /**
4
+ * Session storage for mobx store manager
5
+ */
6
+ declare class SessionStorage extends LocalStorage {
7
+ /**
8
+ * @constructor
9
+ */
10
+ /**
11
+ * @constructor
12
+ */
13
+ constructor({ storage, globalKey }: ILocalStorageOptions);
14
+ }
15
+ export { SessionStorage as default };
@@ -0,0 +1,2 @@
1
+ import o from"./local-storage.js";class s extends o{constructor({storage:o,globalKey:s}){super({globalKey:s,storage:o??sessionStorage})}}export{s as default};
2
+ //# sourceMappingURL=session-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-storage.js","sources":["../../src/storages/session-storage.ts"],"sourcesContent":["import LocalStorage, { type ILocalStorageOptions } from './local-storage';\n\n/**\n * Session storage for mobx store manager\n */\nclass SessionStorage extends LocalStorage {\n /**\n * @constructor\n */\n constructor({ storage, globalKey }: ILocalStorageOptions) {\n super({ globalKey, storage: storage ?? sessionStorage });\n }\n}\n\nexport default SessionStorage;\n"],"names":["SessionStorage","LocalStorage","constructor","storage","globalKey","super","sessionStorage"],"mappings":"kCAKA,MAAMA,UAAuBC,EAI3B,WAAAC,EAAYC,QAAEA,EAAOC,UAAEA,IACrBC,MAAM,CAAED,YAAWD,QAASA,GAAWG,gBACzC"}