react-app-store-manager 2.0.3 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
1
  import { ReactNode } from 'react';
2
- import { StoreInterface } from "./Store";
3
- interface Props {
2
+ import { Store } from "./Store";
3
+ interface Props<V, E> {
4
4
  children?: ReactNode;
5
- store: StoreInterface<any, any>;
5
+ store: Store<V, E>;
6
6
  }
7
- export declare function Provider({ store, children }: Props): JSX.Element;
7
+ export declare function Provider<V, E>({ store, children }: Props<V, E>): JSX.Element;
8
8
  export {};
package/dist/Provider.js CHANGED
@@ -27,7 +27,7 @@ exports.Provider = void 0;
27
27
  var react_1 = __importStar(require("react"));
28
28
  function Provider(_a) {
29
29
  var store = _a.store, children = _a.children;
30
- var Provider = store.context;
30
+ var Provider = store.__store.__context;
31
31
  var _b = (0, react_1.useReducer)(function (x) { return !x; }, true), updater = _b[0], forceUpdate = _b[1];
32
32
  var value = (0, react_1.useMemo)(function () { return store.value; }, [store.value, updater]);
33
33
  (0, react_1.useEffect)(function () {
@@ -36,8 +36,8 @@ function Provider(_a) {
36
36
  forceUpdate();
37
37
  }
38
38
  };
39
- store.subscribe(listener);
40
- return function () { return store.unsubscribe(listener); };
39
+ store.__store.__subscribe(listener);
40
+ return function () { return store.__store.__unsubscribe(listener); };
41
41
  }, [store]);
42
42
  return (react_1["default"].createElement(Provider.Provider, { value: value }, children));
43
43
  }
package/dist/Store.d.ts CHANGED
@@ -2,23 +2,34 @@ import React, { Context } from "react";
2
2
  interface ListenerInterface {
3
3
  onUpdate(): void;
4
4
  }
5
- export interface StoreInterface<Value, Action> {
6
- context: Context<Value>;
5
+ declare type update<Value> = (store: Value) => Value;
6
+ export interface StoreInterface<Value, Actions> {
7
7
  value: Value;
8
+ actions: Actions;
8
9
  update(store: (store: Value) => Value): void;
9
- action(actions: (action: Action) => any): any;
10
+ action(actions: (action: Actions) => any): any;
11
+ context: Context<Value>;
10
12
  subscribe(listener: ListenerInterface): void;
11
13
  unsubscribe(listener: ListenerInterface): void;
12
14
  }
13
- export declare class Store<Value, Action> implements StoreInterface<Value, Action> {
14
- context: React.Context<Value>;
15
+ export declare class Store<Value, Actions> {
16
+ private __value;
17
+ private readonly __actions?;
18
+ private readonly __context;
19
+ private __listeners;
20
+ constructor(__value: Value, __actions?: Actions | undefined, __context?: Context<Value>, __listeners?: ListenerInterface[]);
15
21
  value: Value;
16
- private readonly actions?;
17
- private listeners;
18
- constructor(value: Value, actions?: Action);
19
- update(callback: any): void;
20
- action(callback: any): any;
21
- subscribe(listener: ListenerInterface): void;
22
- unsubscribe(listener: ListenerInterface): void;
22
+ actions: Actions | undefined;
23
+ update(store: update<Value>): boolean;
24
+ private __subscribe;
25
+ private __unsubscribe;
26
+ __store: {
27
+ __context: React.Context<Value>;
28
+ __value: Value;
29
+ __actions: Actions | undefined;
30
+ __listeners: ListenerInterface[];
31
+ __subscribe: (listener: ListenerInterface) => void;
32
+ __unsubscribe: (listener: ListenerInterface) => void;
33
+ };
23
34
  }
24
35
  export {};
package/dist/Store.js CHANGED
@@ -7,27 +7,38 @@ exports.Store = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
8
  var isEqual_1 = require("./isEqual");
9
9
  var Store = /** @class */ (function () {
10
- function Store(value, actions) {
11
- this.listeners = [];
12
- this.context = react_1["default"].createContext(value);
13
- this.value = value;
14
- this.actions = actions;
10
+ function Store(__value, __actions, __context, __listeners) {
11
+ if (__context === void 0) { __context = react_1["default"].createContext(__value); }
12
+ if (__listeners === void 0) { __listeners = []; }
13
+ this.__value = __value;
14
+ this.__actions = __actions;
15
+ this.__context = __context;
16
+ this.__listeners = __listeners;
17
+ this.value = this.__value;
18
+ this.actions = this.__actions;
19
+ this.__store = {
20
+ __context: this.__context,
21
+ __value: this.__value,
22
+ __actions: this.__actions,
23
+ __listeners: this.__listeners,
24
+ __subscribe: this.__subscribe,
25
+ __unsubscribe: this.__unsubscribe
26
+ };
15
27
  }
16
- Store.prototype.update = function (callback) {
17
- var newValue = callback(this.value);
28
+ Store.prototype.update = function (store) {
29
+ var newValue = store(this.value);
18
30
  if (!(0, isEqual_1.isEqual)(newValue, this.value)) {
19
31
  this.value = newValue;
20
- this.listeners.map(function (listener) { return listener.onUpdate(); });
32
+ this.__listeners.map(function (listener) { return listener.onUpdate(); });
33
+ return true;
21
34
  }
35
+ return false;
22
36
  };
23
- Store.prototype.action = function (callback) {
24
- return callback(this.actions);
37
+ Store.prototype.__subscribe = function (listener) {
38
+ this.__listeners.push(listener);
25
39
  };
26
- Store.prototype.subscribe = function (listener) {
27
- this.listeners.push(listener);
28
- };
29
- Store.prototype.unsubscribe = function (listener) {
30
- this.listeners = this.listeners.filter(function (l) { return l !== listener; });
40
+ Store.prototype.__unsubscribe = function (listener) {
41
+ this.__listeners = this.__listeners.filter(function (l) { return l !== listener; });
31
42
  };
32
43
  return Store;
33
44
  }());
@@ -1,2 +1,2 @@
1
- import { StoreInterface } from "./Store";
2
- export declare function createStore<Value>(value: any, actions?: any): StoreInterface<Value, typeof actions>;
1
+ import { Store } from "./Store";
2
+ export declare function createStore<V, A extends object | undefined = undefined>(value: any, actions?: A): Store<V, A>;
package/dist/isEqual.js CHANGED
@@ -4,29 +4,24 @@ exports.isEqual = void 0;
4
4
  function isEqual(newValue, oldValue) {
5
5
  switch (typeof (newValue)) {
6
6
  case 'object':
7
- if (newValue === null || oldValue === null) {
7
+ if (newValue === null || oldValue === null)
8
8
  return newValue === oldValue;
9
+ if (newValue instanceof Date) {
10
+ return String(newValue) === String(oldValue);
9
11
  }
10
- if (newValue instanceof Date && oldValue instanceof Date && String(newValue) !== String(oldValue))
11
- return false;
12
12
  for (var prop in newValue) {
13
- if (newValue.hasOwnProperty(prop) !== (oldValue === null || oldValue === void 0 ? void 0 : oldValue.hasOwnProperty(prop)))
14
- return false;
15
- if (!isEqual(newValue === null || newValue === void 0 ? void 0 : newValue[prop], oldValue === null || oldValue === void 0 ? void 0 : oldValue[prop]))
13
+ if (!(oldValue === null || oldValue === void 0 ? void 0 : oldValue.hasOwnProperty(prop)))
16
14
  return false;
17
- }
18
- for (var prop in oldValue) {
19
- if (typeof (newValue[prop]) == 'undefined')
15
+ if (!isEqual(newValue[prop], oldValue[prop]))
20
16
  return false;
21
17
  }
22
- break;
23
- case 'function':
24
- if (typeof (oldValue) !== 'function' || (newValue.toString() !== oldValue.toString()))
18
+ if (Object.keys(oldValue).length !== Object.keys(newValue).length)
25
19
  return false;
26
20
  break;
21
+ case 'function':
22
+ return typeof (oldValue) === 'function' && newValue.toString() === oldValue.toString();
27
23
  default:
28
- if (newValue !== oldValue)
29
- return false;
24
+ return newValue === oldValue;
30
25
  }
31
26
  return true;
32
27
  }
@@ -1,2 +1,2 @@
1
- import { StoreInterface } from "./Store";
2
- export declare function useStore<T>(store: StoreInterface<T, any>): T;
1
+ import { Store } from "./Store";
2
+ export declare function useStore<T, A = undefined>(store: Store<T, A>): T;
package/dist/useStore.js CHANGED
@@ -3,6 +3,6 @@ exports.__esModule = true;
3
3
  exports.useStore = void 0;
4
4
  var react_1 = require("react");
5
5
  function useStore(store) {
6
- return (0, react_1.useContext)(store.context);
6
+ return (0, react_1.useContext)(store.__store.__context);
7
7
  }
8
8
  exports.useStore = useStore;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-app-store-manager",
3
- "version": "2.0.3",
3
+ "version": "2.1.2",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "tsc --declaration"