react-native-global-state-hooks 2.0.5 → 2.0.7

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.
@@ -1,5 +1,6 @@
1
+ import { Dispatch, SetStateAction } from 'react';
1
2
  import * as IGlobalStore from './GlobalStoreTypes';
2
- export declare type IValueWithMedaData = {
3
+ export type IValueWithMedaData = {
3
4
  _type_?: 'map' | 'set' | 'date';
4
5
  value?: unknown;
5
6
  };
@@ -23,27 +24,29 @@ export declare class GlobalStore<IState, IPersist extends string | null, IAction
23
24
  private storedStateItem;
24
25
  protected getAsyncStoreItemPromise: Promise<IState> | null;
25
26
  protected asyncStorageGetItem(): Promise<string | null>;
26
- protected getAsyncStoreItem(): Promise<IState>;
27
+ protected getAsyncStoreItem({ invokerSetState }: {
28
+ invokerSetState?: React.Dispatch<React.SetStateAction<IState>>;
29
+ }): Promise<IState>;
27
30
  protected asyncStorageSetItem(valueToStore: string): Promise<void>;
28
31
  protected setAsyncStoreItem(): Promise<void>;
29
32
  protected getStateCopy: () => IState;
30
33
  getHook: <IApi extends IGlobalStore.IActionCollectionResult<IState, IActions> | null = IActions extends null ? null : IGlobalStore.IActionCollectionResult<IState, IActions>>() => () => [IState, IGlobalStore.IHookResult<IState, IActions, IApi>, IPersist extends null ? false : boolean];
31
34
  getHookDecoupled: <IApi extends IGlobalStore.IActionCollectionResult<IState, IActions> | null = IActions extends null ? null : IGlobalStore.IActionCollectionResult<IState, IActions>>() => [() => IPersist extends string ? Promise<IState> : IState, IGlobalStore.IHookResult<IState, IActions, IApi>];
32
- private _stateOrchestrator;
33
- protected get stateOrchestrator(): IGlobalStore.StateSetter<IState> | IGlobalStore.IActionCollectionResult<IState, IActions>;
34
- /**
35
- ** [subscriber-update-callback, hook]
36
- */
37
- protected static batchedUpdates: [() => void, object][];
38
- protected globalSetter: (setter: IState | ((state: IState) => IState), callback: () => void) => void;
39
- protected globalSetterAsync: (setter: IState | ((state: IState) => IState)) => Promise<IState>;
40
- protected globalSetterToPersistStoreAsync: (setter: IState | ((state: IState) => IState)) => Promise<IState>;
41
- static ExecutePendingBatchesCallbacks: (() => void)[];
42
- /**
43
- * React native cannot use unstable_batchedUpdates, it does not have any effect
44
- */
45
- static ExecutePendingBatches: () => void;
46
- protected getActions: <IApi extends IGlobalStore.IActionCollectionResult<IState, IGlobalStore.IActionCollectionConfig<IState>>>() => IApi;
35
+ protected getInternalSetter: ({ invokerSetState }?: {
36
+ invokerSetState?: Dispatch<SetStateAction<IState>> | undefined;
37
+ }) => IGlobalStore.StateSetter<IState>;
38
+ protected getStateOrchestrator(invokerSetState?: React.Dispatch<React.SetStateAction<IState>>): IGlobalStore.StateSetter<IState> | IGlobalStore.IActionCollectionResult<IState, IActions>;
39
+ protected globalSetter: ({ setter, invokerSetState }: {
40
+ setter: IState | ((state: IState) => IState);
41
+ invokerSetState?: Dispatch<SetStateAction<IState>> | undefined;
42
+ }) => void;
43
+ protected globalSetterToPersistStoreAsync: ({ setter, invokerSetState }: {
44
+ setter: IState | ((state: IState) => IState);
45
+ invokerSetState?: Dispatch<SetStateAction<IState>> | undefined;
46
+ }) => Promise<IState>;
47
+ protected getApiActions: <IApi extends IGlobalStore.IActionCollectionResult<IState, IGlobalStore.IActionCollectionConfig<IState>>>({ invokerSetState }: {
48
+ invokerSetState?: Dispatch<SetStateAction<IState>> | undefined;
49
+ }) => IApi;
47
50
  deleteAsyncStoreItem: () => Promise<void>;
48
51
  }
49
52
  export default GlobalStore;
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalStore.d.ts","sourceRoot":"","sources":["../src/GlobalStore.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AAEnD,oBAAY,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAA;AAED,eAAO,MAAM,QAAQ,uDAUpB,CAAC;AAEF,qBAAa,WAAW,CACtB,MAAM,EACN,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,QAAQ,SAAS,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAC3E,YAAW,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAS9D,SAAS,CAAC,KAAK,EAAE,MAAM;IACvB,SAAS,CAAC,OAAO,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IAE/B;;MAEE;IACK,oBAAoB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IAdzD,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAM;IAE5D,IAAW,cAAc,IAAI,OAAO,CAEnC;gBAGW,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,QAA2B,EACvC,cAAc,GAAE,QAA2B;IAElD;;MAEE;IACK,oBAAoB,GAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAc;IAG7E,OAAO,KAAK,wBAAwB,GAEnC;IAED,OAAO,CAAC,eAAe,CAAiC;IAExD,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAQ;IAElE,SAAS,CAAC,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;cAIvC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;cA2BpC,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAIxD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlD,SAAS,CAAC,YAAY,QAAO,MAAM,CAAqC;IAEjE,OAAO,sRA2BZ;IAEK,gBAAgB,mLAGV,QAAQ,SAAS,MAAM,GAAG,QAAQ,MAAM,CAAC,GAAG,MAAM,oDAO7D;IAEF,OAAO,CAAC,kBAAkB,CAA0G;IAEpI,SAAS,KAAK,iBAAiB,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAY3H;IAED;;MAEE;IACF,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,IAAI,EAAE,MAAM,CAAC,EAAE,CAAM;IAE7D,SAAS,CAAC,YAAY,6BAA8B,MAAM,KAAK,MAAM,aAAa,MAAM,IAAI,UAqB1F;IAEF,SAAS,CAAC,iBAAiB,6BAAoC,MAAM,KAAK,MAAM,MAC9E,QAAQ,MAAM,CAAC,CAAmF;IAEpG,SAAS,CAAC,+BAA+B,6BAAoC,MAAM,KAAK,MAAM,MAAI,QAAQ,MAAM,CAAC,CAK/G;IAEF,MAAM,CAAC,8BAA8B,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAM;IAE3D;;MAEE;IACF,MAAM,CAAC,qBAAqB,aAQtB;IAEN,SAAS,CAAC,UAAU,sHA0BlB;IAEK,oBAAoB,QAAa,QAAQ,IAAI,CAAC,CAIpD;CAEF;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"GlobalStore.d.ts","sourceRoot":"","sources":["../src/GlobalStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAAE,cAAc,EACzB,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAA;AAED,eAAO,MAAM,QAAQ,uDAUpB,CAAC;AAEF,qBAAa,WAAW,CACtB,MAAM,EACN,QAAQ,SAAS,MAAM,GAAG,IAAI,EAC9B,QAAQ,SAAS,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAC3E,YAAW,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAS9D,SAAS,CAAC,KAAK,EAAE,MAAM;IACvB,SAAS,CAAC,OAAO,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IAE/B;;MAEE;IACK,oBAAoB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IAdzD,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAM;IAE5D,IAAW,cAAc,IAAI,OAAO,CAEnC;gBAGW,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,QAA2B,EACvC,cAAc,GAAE,QAA2B;IAElD;;MAEE;IACK,oBAAoB,GAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAc;IAG7E,OAAO,KAAK,wBAAwB,GAEnC;IAED,OAAO,CAAC,eAAe,CAAiC;IAExD,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAQ;IAElE,SAAS,CAAC,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;cAIvC,iBAAiB,CAAC,EAAE,eAAe,EAAE,EAAE;QACrD,eAAe,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;KAC/D,GAAG,OAAO,CAAC,MAAM,CAAC;cA8BH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAIxD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlD,SAAS,CAAC,YAAY,QAAO,MAAM,CAAqC;IAEjE,OAAO,sRA2BZ;IAEK,gBAAgB,mLAGV,QAAQ,SAAS,MAAM,GAAG,QAAQ,MAAM,CAAC,GAAG,MAAM,oDAa7D;IAEF,SAAS,CAAC,iBAAiB;;UAElB,aAAa,WAAW,CAAC,MAAM,CAAC,CAYxC;IAED,SAAS,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,GAC/H,YAAY,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC;IAWvD,SAAS,CAAC,YAAY;kCACM,MAAM,KAAK,MAAM;;eAgB3C;IAEF,SAAS,CAAC,+BAA+B;kCACb,MAAM,KAAK,MAAM;;UAEzC,QAAQ,MAAM,CAAC,CAMjB;IAEF,SAAS,CAAC,aAAa;;eAyBrB;IAEK,oBAAoB,QAAa,QAAQ,IAAI,CAAC,CAIpD;CAEF;AAED,eAAe,WAAW,CAAC"}
@@ -4,7 +4,7 @@ exports.GlobalStore = exports.debounce = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = require("react");
6
6
  const json_storage_formatter_1 = require("json-storage-formatter");
7
- const async_storage_1 = (0, tslib_1.__importDefault)(require("@react-native-async-storage/async-storage"));
7
+ const async_storage_1 = tslib_1.__importDefault(require("@react-native-async-storage/async-storage"));
8
8
  const debounce = (callback, wait = 300) => {
9
9
  let timer;
10
10
  return ((...args) => {
@@ -16,6 +16,9 @@ const debounce = (callback, wait = 300) => {
16
16
  };
17
17
  exports.debounce = debounce;
18
18
  class GlobalStore {
19
+ get isPersistStore() {
20
+ return !!this.persistStoreAs;
21
+ }
19
22
  constructor(state, actions = null, persistStoreAs = null,
20
23
  /**
21
24
  * This function can be used to format the data after it is loaded from the asyncStorage
@@ -30,93 +33,98 @@ class GlobalStore {
30
33
  this.getAsyncStoreItemPromise = null;
31
34
  this.getStateCopy = () => Object.freeze((0, json_storage_formatter_1.clone)(this.state));
32
35
  this.getHook = () => () => {
33
- const [value, setter] = (0, react_1.useState)(() => this.state);
36
+ const [value, invokerSetState] = (0, react_1.useState)(() => this.state);
34
37
  (0, react_1.useEffect)(() => {
35
- this.subscribers.push(setter);
38
+ this.subscribers.push(invokerSetState);
36
39
  if (this.isPersistStore) {
37
- this.getAsyncStoreItem();
40
+ this.getAsyncStoreItem({ invokerSetState });
38
41
  }
39
42
  return () => {
40
- this.subscribers = this.subscribers.filter((hook) => setter !== hook);
43
+ this.subscribers = this.subscribers.filter((hook) => invokerSetState !== hook);
41
44
  };
42
45
  }, []);
43
46
  return [
44
47
  value,
45
- this.stateOrchestrator,
48
+ this.getStateOrchestrator(invokerSetState),
46
49
  this.isStoredStateItemUpdated,
47
50
  ];
48
51
  };
49
52
  this.getHookDecoupled = () => {
50
- const valueWrapper = this.isPersistStore ? this.getAsyncStoreItem() : () => this.state;
53
+ const getState = () => {
54
+ if (this.isPersistStore) {
55
+ return this.getAsyncStoreItem({});
56
+ }
57
+ return this.state;
58
+ };
51
59
  return [
52
- valueWrapper,
53
- this.stateOrchestrator,
60
+ getState,
61
+ this.getStateOrchestrator(),
54
62
  ];
55
63
  };
56
- this._stateOrchestrator = null;
57
- this.globalSetter = (setter, callback) => {
58
- // avoid perform multiple updates over the same state
59
- GlobalStore.batchedUpdates = GlobalStore.batchedUpdates.filter(([, hook]) => {
60
- const isSameHook = hook === this;
61
- if (isSameHook) {
62
- // eslint-disable-next-line no-console
63
- console.warn('You should try avoid call the same state-setter multiple times at one execution line');
64
- }
65
- return !isSameHook;
66
- });
64
+ this.getInternalSetter = ({ invokerSetState } = {}) => {
65
+ let stateOrchestrator;
66
+ if (this.persistStoreAs) {
67
+ stateOrchestrator = this.globalSetterToPersistStoreAsync;
68
+ }
69
+ else {
70
+ stateOrchestrator = this.globalSetter;
71
+ }
72
+ return (setter) => {
73
+ stateOrchestrator({ invokerSetState, setter });
74
+ };
75
+ };
76
+ this.globalSetter = ({ setter, invokerSetState }) => {
67
77
  const newState = typeof setter === 'function' ? setter(this.getStateCopy()) : setter;
68
78
  this.state = newState;
69
- // batch store updates
70
- GlobalStore.batchedUpdates.push([() => this.subscribers.forEach((updateChild) => updateChild(newState)), this]);
71
- GlobalStore.ExecutePendingBatchesCallbacks.push(callback);
72
- GlobalStore.ExecutePendingBatches();
79
+ // execute the invoke setter before the batched updates to avoid delays on the UI
80
+ invokerSetState === null || invokerSetState === void 0 ? void 0 : invokerSetState(newState);
81
+ // update all the subscribers
82
+ this.subscribers.forEach((setState) => {
83
+ if (setState === invokerSetState)
84
+ return;
85
+ setState(newState);
86
+ });
73
87
  };
74
- this.globalSetterAsync = (setter) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () { return new Promise((resolve) => this.globalSetter(setter, () => resolve(this.state))); });
75
- this.globalSetterToPersistStoreAsync = (setter) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
76
- yield this.globalSetterAsync(setter);
88
+ this.globalSetterToPersistStoreAsync = ({ setter, invokerSetState }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
89
+ this.globalSetter({ invokerSetState, setter });
77
90
  yield this.setAsyncStoreItem();
78
91
  return this.state;
79
92
  });
80
- this.getActions = () => {
81
- const actions = this.actions;
82
- // Setter is allways async because of the render batch
83
- // but we are typing the setter as synchronous to avoid the developer has extra complexity that useState do not handle
84
- const setter = this.isPersistStore ? this.globalSetterToPersistStoreAsync : this.globalSetterAsync;
85
- return Object.keys(actions).reduce((accumulator, key) => (Object.assign(Object.assign({}, accumulator), { [key]: (...parameres) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
86
- let promise;
87
- const setterWrapper = (value) => {
88
- promise = setter(value);
89
- return promise;
90
- };
91
- const result = actions[key](...parameres)(setterWrapper, this.getStateCopy());
92
- const resultPromise = Promise.resolve(result) === result ? result : Promise.resolve();
93
- yield Promise.all([promise, resultPromise]);
93
+ this.getApiActions = ({ invokerSetState }) => {
94
+ const actionsConfig = this.actions;
95
+ const actionsKeys = Object.keys(actionsConfig);
96
+ const internalSetter = this.getInternalSetter({ invokerSetState });
97
+ const actionsApi = actionsKeys.reduce((accumulator, key) => (Object.assign(Object.assign({}, accumulator), { [key]: (...parameres) => {
98
+ const actionConfig = actionsConfig[key];
99
+ const action = actionConfig(...parameres);
100
+ // executes the actions bringing access to the state setter and a copy of the state
101
+ const result = action(internalSetter, this.getStateCopy());
94
102
  return result;
95
- }) })), {});
103
+ } })), {});
104
+ return actionsApi;
96
105
  };
97
- this.deleteAsyncStoreItem = () => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
106
+ this.deleteAsyncStoreItem = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
98
107
  if (!this.isPersistStore)
99
108
  return;
100
109
  yield async_storage_1.default.removeItem(this.persistStoreAs);
101
110
  });
102
111
  }
103
- get isPersistStore() {
104
- return !!this.persistStoreAs;
105
- }
106
112
  get isStoredStateItemUpdated() {
107
113
  return this.storedStateItem !== undefined;
108
114
  }
109
115
  asyncStorageGetItem() {
110
116
  return async_storage_1.default.getItem(this.persistStoreAs);
111
117
  }
112
- getAsyncStoreItem() {
113
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
118
+ getAsyncStoreItem({ invokerSetState }) {
119
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
120
+ // If the state is already updated, return it
114
121
  if (this.isStoredStateItemUpdated)
115
122
  return this.storedStateItem;
123
+ // If the promise to get the state is already running, return it
116
124
  if (this.getAsyncStoreItemPromise)
117
125
  return this.getAsyncStoreItemPromise;
118
126
  this.getAsyncStoreItemPromise = new Promise((resolve) => {
119
- (() => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
127
+ (() => tslib_1.__awaiter(this, void 0, void 0, function* () {
120
128
  var _a;
121
129
  const item = yield this.asyncStorageGetItem();
122
130
  if (item) {
@@ -124,7 +132,8 @@ class GlobalStore {
124
132
  /** This allow users to review what is been stored */
125
133
  value = (_a = this.onPersistStorageLoad(value)) !== null && _a !== void 0 ? _a : value;
126
134
  const newState = (0, json_storage_formatter_1.formatFromStore)(value);
127
- yield this.globalSetterAsync(newState);
135
+ const stateSetter = this.getInternalSetter({ invokerSetState });
136
+ stateSetter(newState);
128
137
  }
129
138
  resolve(this.state);
130
139
  }))();
@@ -133,12 +142,12 @@ class GlobalStore {
133
142
  });
134
143
  }
135
144
  asyncStorageSetItem(valueToStore) {
136
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
145
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
137
146
  yield async_storage_1.default.setItem(this.persistStoreAs, valueToStore);
138
147
  });
139
148
  }
140
149
  setAsyncStoreItem() {
141
- return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
150
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
142
151
  if (this.storedStateItem === this.state)
143
152
  return;
144
153
  this.storedStateItem = this.state;
@@ -146,36 +155,14 @@ class GlobalStore {
146
155
  yield this.asyncStorageSetItem(JSON.stringify(valueToStore));
147
156
  });
148
157
  }
149
- get stateOrchestrator() {
150
- if (this._stateOrchestrator)
151
- return this._stateOrchestrator;
158
+ getStateOrchestrator(invokerSetState) {
152
159
  if (this.actions) {
153
- this._stateOrchestrator = this.getActions();
154
- }
155
- else if (this.persistStoreAs) {
156
- this._stateOrchestrator = this.globalSetterToPersistStoreAsync;
157
- }
158
- else {
159
- this._stateOrchestrator = this.globalSetterAsync;
160
+ return this.getApiActions({
161
+ invokerSetState,
162
+ });
160
163
  }
161
- return this._stateOrchestrator;
164
+ return this.getInternalSetter({ invokerSetState });
162
165
  }
163
166
  }
164
167
  exports.GlobalStore = GlobalStore;
165
- /**
166
- ** [subscriber-update-callback, hook]
167
- */
168
- GlobalStore.batchedUpdates = [];
169
- GlobalStore.ExecutePendingBatchesCallbacks = [];
170
- /**
171
- * React native cannot use unstable_batchedUpdates, it does not have any effect
172
- */
173
- GlobalStore.ExecutePendingBatches = (0, exports.debounce)(() => {
174
- GlobalStore.batchedUpdates.forEach(([execute]) => {
175
- execute();
176
- });
177
- GlobalStore.batchedUpdates = [];
178
- GlobalStore.ExecutePendingBatchesCallbacks.forEach((callback) => callback());
179
- GlobalStore.ExecutePendingBatchesCallbacks = [];
180
- }, 0);
181
168
  exports.default = GlobalStore;
@@ -2,11 +2,11 @@
2
2
  * @param {StateSetter<IState>} setter - add a new value to the state
3
3
  * @returns {void} result - void
4
4
  */
5
- export declare type StateSetter<IState> = (setter: IState | ((state: IState) => IState)) => Promise<IState>;
5
+ export type StateSetter<IState> = (setter: IState | ((state: IState) => IState)) => void;
6
6
  /**
7
7
  * This is the structure required by the API actions in order to be able to capture action parameters and inject state setter into actions.
8
8
  */
9
- export declare type IActionConfig<IState> = (...params: any[]) => (setter: StateSetter<IState>, currentState: IState) => Promise<unknown>;
9
+ export type IActionConfig<IState> = (...params: any[]) => (setter: StateSetter<IState>, currentState: IState) => unknown;
10
10
  /**
11
11
  * Configuration of you API
12
12
  */
@@ -16,13 +16,13 @@ export interface IActionCollectionConfig<IState> {
16
16
  /**
17
17
  * This is the API result of the hook (if you passed an API as a parameter)
18
18
  */
19
- export declare type IActionCollectionResult<IState, IActions extends IActionCollectionConfig<IState> | null> = {
19
+ export type IActionCollectionResult<IState, IActions extends IActionCollectionConfig<IState> | null> = {
20
20
  [key in keyof IActions]: (...params: any[]) => unknown;
21
21
  };
22
22
  /**
23
23
  * Hook result, if you passed an API as a parameter it will be returned in the second position of the hook invoke.
24
24
  */
25
- export declare type IHookResult<IState, IActions extends IActionCollectionConfig<IState> | null = null, IApi extends IActionCollectionResult<IState, IActions> | null = IActions extends null ? null : IActionCollectionResult<IState, IActions>> = IApi extends null ? StateSetter<IState> : IActions extends IActionCollectionConfig<IState> ? IApi extends IActionCollectionResult<IState, IActions> ? IApi : StateSetter<IState> : StateSetter<IState>;
25
+ export type IHookResult<IState, IActions extends IActionCollectionConfig<IState> | null = null, IApi extends IActionCollectionResult<IState, IActions> | null = IActions extends null ? null : IActionCollectionResult<IState, IActions>> = IApi extends null ? StateSetter<IState> : IActions extends IActionCollectionConfig<IState> ? IApi extends IActionCollectionResult<IState, IActions> ? IApi : StateSetter<IState> : StateSetter<IState>;
26
26
  /**
27
27
  * This is a class to create global-store objects
28
28
  * @template IState
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalStoreTypes.d.ts","sourceRoot":"","sources":["../src/GlobalStoreTypes.ts"],"names":[],"mappings":"AAAA;;;EAGE;AACF,oBAAY,WAAW,CAAC,MAAM,IAAI,CAChC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,KACzC,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;EAEE;AACF,oBAAY,aAAa,CAAC,MAAM,IAAI,CAElC,GAAG,MAAM,EAAE,GAAG,EAAE,KACb,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7E;;EAEE;AACF,MAAM,WAAW,uBAAuB,CAAC,MAAM;IAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;CACtC;AAED;;EAEE;AACF,oBAAY,uBAAuB,CAAC,MAAM,EAAE,QAAQ,SAAS,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI;KAEpG,GAAG,IAAI,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,OAAO;CACvD,CAAC;AAEF;;EAEE;AACF,oBAAY,WAAW,CACrB,MAAM,EACN,QAAQ,SAAS,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,EAC9D,IAAI,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,QAAQ,SAAS,IAAI,GAAG,IAAI,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,IACtI,IAAI,SAAS,IAAI,GACjB,WAAW,CAAC,MAAM,CAAC,GACnB,QAAQ,SAAS,uBAAuB,CAAC,MAAM,CAAC,GAChD,IAAI,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GACpD,IAAI,GACJ,WAAW,CAAC,MAAM,CAAC,GACrB,WAAW,CAAC,MAAM,CAAC,CAAC;AAExB;;;;;;;;;;;;IAYI;AACJ,MAAM,WAAW,YAAY,CAC3B,MAAM,EACN,QAAQ,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,EACrC,QAAQ,SAAS,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI;IAG9D,cAAc,EAAE,QAAQ,CAAC;IAEzB,cAAc,EAAE,OAAO,CAAC;IAExB;;MAEE;IACF,oBAAoB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAExD;;;MAGE;IACF,OAAO,EAAE,CAAC,IAAI,SAAS,QAAQ,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO,MAAM;QAC/I,MAAM;QACN,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;QACnC,QAAQ,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,SAAS,IAAI,GAAG,OAAO,GAAG,IAAI;KACnE,CAAC;IAEF;;;;MAIE;IACF,gBAAgB,EAAE,CAAC,IAAI,SAAS,QAAQ,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO;QAClJ,MAAM,QAAQ,SAAS,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;QACxD,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;KACpC,CAAC;IAEF,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C"}
1
+ {"version":3,"file":"GlobalStoreTypes.d.ts","sourceRoot":"","sources":["../src/GlobalStoreTypes.ts"],"names":[],"mappings":"AAAA;;;EAGE;AACF,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI,CAChC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,KACzC,IAAI,CAAC;AAEV;;EAEE;AACF,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI,CAElC,GAAG,MAAM,EAAE,GAAG,EAAE,KACb,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;AAEpE;;EAEE;AACF,MAAM,WAAW,uBAAuB,CAAC,MAAM;IAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;CACtC;AAED;;EAEE;AACF,MAAM,MAAM,uBAAuB,CAAC,MAAM,EAAE,QAAQ,SAAS,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI;KAEpG,GAAG,IAAI,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,OAAO;CACvD,CAAC;AAEF;;EAEE;AACF,MAAM,MAAM,WAAW,CACrB,MAAM,EACN,QAAQ,SAAS,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,EAC9D,IAAI,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,GAAG,QAAQ,SAAS,IAAI,GAAG,IAAI,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,IACtI,IAAI,SAAS,IAAI,GACjB,WAAW,CAAC,MAAM,CAAC,GACnB,QAAQ,SAAS,uBAAuB,CAAC,MAAM,CAAC,GAChD,IAAI,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GACpD,IAAI,GACJ,WAAW,CAAC,MAAM,CAAC,GACrB,WAAW,CAAC,MAAM,CAAC,CAAC;AAExB;;;;;;;;;;;;IAYI;AACJ,MAAM,WAAW,YAAY,CAC3B,MAAM,EACN,QAAQ,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,EACrC,QAAQ,SAAS,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI;IAG9D,cAAc,EAAE,QAAQ,CAAC;IAEzB,cAAc,EAAE,OAAO,CAAC;IAExB;;MAEE;IACF,oBAAoB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAExD;;;MAGE;IACF,OAAO,EAAE,CAAC,IAAI,SAAS,QAAQ,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO,MAAM;QAC/I,MAAM;QACN,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;QACnC,QAAQ,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,SAAS,IAAI,GAAG,OAAO,GAAG,IAAI;KACnE,CAAC;IAEF;;;;MAIE;IACF,gBAAgB,EAAE,CAAC,IAAI,SAAS,QAAQ,SAAS,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,IAAI,OAAO;QAClJ,MAAM,QAAQ,SAAS,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM;QACxD,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;KACpC,CAAC;IAEF,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-global-state-hooks",
3
- "version": "2.0.5",
3
+ "version": "2.0.7",
4
4
  "description": "This is a package to easily handling global-state across your react-native-components No-redux",
5
5
  "main": "lib/GlobalStore.js",
6
6
  "files": [
@@ -58,6 +58,7 @@
58
58
  "react": "workspace:*",
59
59
  "react-test-renderer": "^17.0.1",
60
60
  "ts-jest": "^26.4.4",
61
+ "tslib": "^2.5.0",
61
62
  "typescript": "^4.1.2"
62
63
  },
63
64
  "peerDependencies": {
@@ -65,6 +66,6 @@
65
66
  "react": "workspace:*"
66
67
  },
67
68
  "dependencies": {
68
- "json-storage-formatter": "^1.0.0"
69
+ "json-storage-formatter": "^1.0.2"
69
70
  }
70
71
  }