mobx-react-use-autorun 4.0.29-beta → 4.0.31-beta

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,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  Object.defineProperty(exports, "__esModule", { value: true });
14
3
  exports.useMobxEffect = void 0;
15
4
  var useMount_1 = require("./useMount");
@@ -19,49 +8,49 @@ var react_1 = require("react");
19
8
  var mobx_2 = require("mobx");
20
9
  var useMobxEffect = function (callback, dependencyList) {
21
10
  var callbackRef = (0, react_1.useRef)({ callback: callback });
11
+ var subjectRef = (0, react_1.useRef)(new rxjs_1.ReplaySubject(1));
12
+ var dependencyListRef = (0, react_1.useRef)(dependencyList);
22
13
  callbackRef.current.callback = callback;
23
- var keyListOfSourceRef = (0, react_1.useRef)([]);
24
- var props = Object.assign({}, dependencyList);
25
- var sourceRef = (0, react_1.useRef)((0, mobx_1.observable)(__assign({}, props)));
26
- (0, mobx_2.runInAction)(function () {
27
- var _a, _b;
28
- var _c;
14
+ dependencyListRef.current = dependencyList;
15
+ (0, react_1.useEffect)(function () {
29
16
  if (dependencyList) {
30
- for (var _i = 0, _d = keyListOfSourceRef.current; _i < _d.length; _i++) {
31
- var key = _d[_i];
32
- if (!Object.keys(props).includes(key)) {
33
- (0, mobx_2.remove)(sourceRef.current, key);
34
- }
35
- }
36
- for (var key in props) {
37
- if ((0, mobx_2.isObservable)(props[key]) || ((_c = Object.getOwnPropertyDescriptor(props, key)) === null || _c === void 0 ? void 0 : _c.get)) {
38
- Object.defineProperty(sourceRef.current, key, Object.getOwnPropertyDescriptor(props, key));
39
- }
40
- else {
41
- if (props[key] !== sourceRef.current[key]) {
42
- (0, mobx_2.remove)(sourceRef.current, key);
43
- (0, mobx_2.extendObservable)(sourceRef.current, (_a = {}, _a[key] = props[key], _a), (_b = {}, _b[key] = false, _b));
44
- }
45
- }
46
- }
47
- keyListOfSourceRef.current.splice(0, keyListOfSourceRef.current.length);
48
- for (var key in props) {
49
- keyListOfSourceRef.current.push(key);
50
- }
17
+ return;
51
18
  }
19
+ callback();
52
20
  });
53
21
  (0, react_1.useEffect)(function () {
54
22
  if (!dependencyList) {
55
- callback();
23
+ return;
56
24
  }
57
- });
25
+ subjectRef.current.next();
26
+ }, dependencyList);
58
27
  (0, useMount_1.useMount)(function (subscription) {
59
- if (dependencyList) {
60
- var disposer_1 = (0, mobx_1.reaction)(function () { return [(0, mobx_1.toJS)(sourceRef.current)]; }, function () { return callbackRef.current.callback(); }, { fireImmediately: true, delay: 1 });
61
- subscription.add(new rxjs_1.Subscription(function () {
62
- disposer_1();
63
- }));
28
+ if (!dependencyList) {
29
+ return;
64
30
  }
31
+ var mobxData = (0, mobx_1.observable)(Object.assign({}, dependencyListRef.current));
32
+ subscription.add(subjectRef.current.pipe((0, rxjs_1.tap)(function () {
33
+ (0, mobx_2.runInAction)(function () {
34
+ var _a, _b;
35
+ var _c;
36
+ var props = Object.assign({}, dependencyListRef.current);
37
+ for (var key in props) {
38
+ if ((0, mobx_2.isObservable)(props[key]) || ((_c = Object.getOwnPropertyDescriptor(props, key)) === null || _c === void 0 ? void 0 : _c.get)) {
39
+ Object.defineProperty(mobxData, key, Object.getOwnPropertyDescriptor(props, key));
40
+ }
41
+ else {
42
+ if (props[key] !== mobxData[key]) {
43
+ (0, mobx_2.remove)(mobxData, key);
44
+ (0, mobx_2.extendObservable)(mobxData, (_a = {}, _a[key] = props[key], _a), (_b = {}, _b[key] = false, _b));
45
+ }
46
+ }
47
+ }
48
+ });
49
+ })).subscribe());
50
+ var disposer = (0, mobx_1.reaction)(function () { return [(0, mobx_1.toJS)(mobxData)]; }, function () { return callbackRef.current.callback(); }, { fireImmediately: true, delay: 1 });
51
+ subscription.add(new rxjs_1.Subscription(function () {
52
+ disposer();
53
+ }));
65
54
  });
66
55
  };
67
56
  exports.useMobxEffect = useMobxEffect;
@@ -1 +1 @@
1
- {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":";;;AAAA,uCAAsC;AACtC,6BAAwD;AACxD,6BAAiD;AACjD,+BAA0C;AAC1C,6BAA2E;AAEpE,IAAM,aAAa,GAAG,UAAC,QAAoB,EAAE,cAAsB;IAExE,IAAM,WAAW,GAAG,IAAA,cAAM,EAA2B,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE7E,IAAM,UAAU,GAAG,IAAA,cAAM,EAAC,IAAI,oBAAa,CAAO,CAAC,CAAC,CAAC,CAAC;IAEtD,IAAM,iBAAiB,GAAG,IAAA,cAAM,EAAC,cAAc,CAAC,CAAC;IAEjD,WAAW,CAAC,OAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAEzC,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC;IAE3C,IAAA,iBAAS,EAAC;QACR,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,CAAA;IAEF,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC,EAAE,cAAc,CAAC,CAAA;IAElB,IAAA,mBAAQ,EAAC,UAAC,YAAY;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAM,QAAQ,GAAG,IAAA,iBAAU,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1E,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CACtC,IAAA,UAAG,EAAC;YACF,IAAA,kBAAW,EAAC;;;gBACV,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAC3D,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAI,MAAA,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,0CAAE,GAAG,CAAA,EAAE,CAAC;wBACjF,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAQ,CAAC,CAAA;oBAC1F,CAAC;yBAAM,CAAC;wBACN,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;4BACjC,IAAA,aAAM,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;4BACtB,IAAA,uBAAgB,EAAC,QAAQ,YAAI,GAAC,GAAG,IAAG,KAAK,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;wBACrE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CACH,CAAC,SAAS,EAAE,CAAC,CAAC;QAEf,IAAM,QAAQ,GAAG,IAAA,eAAQ,EAAC,cAAM,OAAA,CAAC,IAAA,WAAI,EAAC,QAAQ,CAAC,CAAC,EAAhB,CAAgB,EAAE,cAAM,OAAA,WAAW,CAAC,OAAQ,CAAC,QAAQ,EAAE,EAA/B,CAA+B,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAE9H,YAAY,CAAC,GAAG,CAAC,IAAI,mBAAY,CAAC;YAChC,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC,CAAC,CAAC;IAEN,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAA;AAzDY,QAAA,aAAa,iBAyDzB"}
@@ -1,64 +1,53 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
1
  import { useMount } from './useMount';
13
- import { Subscription } from 'rxjs';
2
+ import { ReplaySubject, Subscription, tap } from 'rxjs';
14
3
  import { observable, reaction, toJS } from 'mobx';
15
4
  import { useEffect, useRef } from 'react';
16
5
  import { extendObservable, remove, isObservable, runInAction } from 'mobx';
17
6
  export var useMobxEffect = function (callback, dependencyList) {
18
7
  var callbackRef = useRef({ callback: callback });
8
+ var subjectRef = useRef(new ReplaySubject(1));
9
+ var dependencyListRef = useRef(dependencyList);
19
10
  callbackRef.current.callback = callback;
20
- var keyListOfSourceRef = useRef([]);
21
- var props = Object.assign({}, dependencyList);
22
- var sourceRef = useRef(observable(__assign({}, props)));
23
- runInAction(function () {
24
- var _a, _b;
25
- var _c;
11
+ dependencyListRef.current = dependencyList;
12
+ useEffect(function () {
26
13
  if (dependencyList) {
27
- for (var _i = 0, _d = keyListOfSourceRef.current; _i < _d.length; _i++) {
28
- var key = _d[_i];
29
- if (!Object.keys(props).includes(key)) {
30
- remove(sourceRef.current, key);
31
- }
32
- }
33
- for (var key in props) {
34
- if (isObservable(props[key]) || ((_c = Object.getOwnPropertyDescriptor(props, key)) === null || _c === void 0 ? void 0 : _c.get)) {
35
- Object.defineProperty(sourceRef.current, key, Object.getOwnPropertyDescriptor(props, key));
36
- }
37
- else {
38
- if (props[key] !== sourceRef.current[key]) {
39
- remove(sourceRef.current, key);
40
- extendObservable(sourceRef.current, (_a = {}, _a[key] = props[key], _a), (_b = {}, _b[key] = false, _b));
41
- }
42
- }
43
- }
44
- keyListOfSourceRef.current.splice(0, keyListOfSourceRef.current.length);
45
- for (var key in props) {
46
- keyListOfSourceRef.current.push(key);
47
- }
14
+ return;
48
15
  }
16
+ callback();
49
17
  });
50
18
  useEffect(function () {
51
19
  if (!dependencyList) {
52
- callback();
20
+ return;
53
21
  }
54
- });
22
+ subjectRef.current.next();
23
+ }, dependencyList);
55
24
  useMount(function (subscription) {
56
- if (dependencyList) {
57
- var disposer_1 = reaction(function () { return [toJS(sourceRef.current)]; }, function () { return callbackRef.current.callback(); }, { fireImmediately: true, delay: 1 });
58
- subscription.add(new Subscription(function () {
59
- disposer_1();
60
- }));
25
+ if (!dependencyList) {
26
+ return;
61
27
  }
28
+ var mobxData = observable(Object.assign({}, dependencyListRef.current));
29
+ subscription.add(subjectRef.current.pipe(tap(function () {
30
+ runInAction(function () {
31
+ var _a, _b;
32
+ var _c;
33
+ var props = Object.assign({}, dependencyListRef.current);
34
+ for (var key in props) {
35
+ if (isObservable(props[key]) || ((_c = Object.getOwnPropertyDescriptor(props, key)) === null || _c === void 0 ? void 0 : _c.get)) {
36
+ Object.defineProperty(mobxData, key, Object.getOwnPropertyDescriptor(props, key));
37
+ }
38
+ else {
39
+ if (props[key] !== mobxData[key]) {
40
+ remove(mobxData, key);
41
+ extendObservable(mobxData, (_a = {}, _a[key] = props[key], _a), (_b = {}, _b[key] = false, _b));
42
+ }
43
+ }
44
+ }
45
+ });
46
+ })).subscribe());
47
+ var disposer = reaction(function () { return [toJS(mobxData)]; }, function () { return callbackRef.current.callback(); }, { fireImmediately: true, delay: 1 });
48
+ subscription.add(new Subscription(function () {
49
+ disposer();
50
+ }));
62
51
  });
63
52
  };
64
53
  //# sourceMappingURL=useMobxEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAE3E,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,QAAoB,EAAE,cAAsB;IAExE,IAAM,WAAW,GAAG,MAAM,CAA2B,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE7E,WAAW,CAAC,OAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAEzC,IAAM,kBAAkB,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IAEhD,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IAEhD,IAAM,SAAS,GAAG,MAAM,CAAC,UAAU,cAC9B,KAAK,EACR,CAAC,CAAC;IAEJ,WAAW,CAAC;;;QACV,IAAI,cAAc,EAAE,CAAC;YAEnB,KAAkB,UAA0B,EAA1B,KAAA,kBAAkB,CAAC,OAAO,EAA1B,cAA0B,EAA1B,IAA0B,EAAE,CAAC;gBAA1C,IAAM,GAAG,SAAA;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtC,MAAM,CAAC,SAAS,CAAC,OAAQ,EAAE,GAAG,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YAED,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAI,MAAA,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,0CAAE,GAAG,CAAA,EAAE,CAAC;oBACjF,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,OAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAQ,CAAC,CAAA;gBACpG,CAAC;qBAAM,CAAC;oBACN,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,OAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC3C,MAAM,CAAC,SAAS,CAAC,OAAQ,EAAE,GAAG,CAAC,CAAC;wBAChC,gBAAgB,CAAC,SAAS,CAAC,OAAQ,YAAI,GAAC,GAAG,IAAG,KAAK,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;oBAC/E,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxE,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC;QACR,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,QAAQ,EAAE,CAAA;QACZ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,UAAC,YAAY;QACpB,IAAI,cAAc,EAAE,CAAC;YACnB,IAAM,UAAQ,GAAG,QAAQ,CAAC,cAAM,OAAA,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAzB,CAAyB,EAAE,cAAM,OAAA,WAAW,CAAC,OAAQ,CAAC,QAAQ,EAAE,EAA/B,CAA+B,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAEvI,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;gBAChC,UAAQ,EAAE,CAAC;YACb,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAA"}
1
+ {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { useMount } from './useMount';
2
- import { Subscription } from 'rxjs';
2
+ import { ReplaySubject, Subscription, tap } from 'rxjs';
3
3
  import { observable, reaction, toJS } from 'mobx'
4
4
  import { useEffect, useRef } from 'react';
5
5
  import { extendObservable, remove, isObservable, runInAction } from 'mobx';
@@ -8,57 +8,57 @@ export const useMobxEffect = (callback: () => void, dependencyList?: any[]): voi
8
8
 
9
9
  const callbackRef = useRef<{ callback: () => void }>({ callback: callback });
10
10
 
11
- callbackRef.current!.callback = callback;
11
+ const subjectRef = useRef(new ReplaySubject<void>(1));
12
12
 
13
- const keyListOfSourceRef = useRef<string[]>([]);
13
+ const dependencyListRef = useRef(dependencyList);
14
14
 
15
- const props = Object.assign({}, dependencyList);
15
+ callbackRef.current!.callback = callback;
16
16
 
17
- const sourceRef = useRef(observable({
18
- ...props
19
- }));
17
+ dependencyListRef.current = dependencyList;
20
18
 
21
- runInAction(() => {
19
+ useEffect(() => {
22
20
  if (dependencyList) {
23
-
24
- for (const key of keyListOfSourceRef.current) {
25
- if (!Object.keys(props).includes(key)) {
26
- remove(sourceRef.current!, key);
27
- }
28
- }
29
-
30
- for (const key in props) {
31
- if (isObservable(props[key]) || Object.getOwnPropertyDescriptor(props, key)?.get) {
32
- Object.defineProperty(sourceRef.current!, key, Object.getOwnPropertyDescriptor(props, key) as any)
33
- } else {
34
- if (props[key] !== sourceRef.current![key]) {
35
- remove(sourceRef.current!, key);
36
- extendObservable(sourceRef.current!, { [key]: props[key] }, { [key]: false })
37
- }
38
- }
39
- }
40
-
41
- keyListOfSourceRef.current.splice(0, keyListOfSourceRef.current.length);
42
- for (const key in props) {
43
- keyListOfSourceRef.current.push(key);
44
- }
21
+ return;
45
22
  }
23
+ callback();
46
24
  })
47
25
 
48
26
  useEffect(() => {
49
27
  if (!dependencyList) {
50
- callback()
28
+ return;
51
29
  }
52
- })
30
+ subjectRef.current.next();
31
+ }, dependencyList)
53
32
 
54
33
  useMount((subscription) => {
55
- if (dependencyList) {
56
- const disposer = reaction(() => [toJS(sourceRef.current)], () => callbackRef.current!.callback(), { fireImmediately: true, delay: 1 });
57
-
58
- subscription.add(new Subscription(() => {
59
- disposer();
60
- }));
34
+ if (!dependencyList) {
35
+ return;
61
36
  }
37
+ const mobxData = observable(Object.assign({}, dependencyListRef.current));
38
+ subscription.add(subjectRef.current.pipe(
39
+ tap(() => {
40
+ runInAction(() => {
41
+ const props = Object.assign({}, dependencyListRef.current);
42
+ for (const key in props) {
43
+ if (isObservable(props[key]) || Object.getOwnPropertyDescriptor(props, key)?.get) {
44
+ Object.defineProperty(mobxData, key, Object.getOwnPropertyDescriptor(props, key) as any)
45
+ } else {
46
+ if (props[key] !== mobxData[key]) {
47
+ remove(mobxData, key);
48
+ extendObservable(mobxData, { [key]: props[key] }, { [key]: false })
49
+ }
50
+ }
51
+ }
52
+ })
53
+ })
54
+ ).subscribe());
55
+
56
+ const disposer = reaction(() => [toJS(mobxData)], () => callbackRef.current!.callback(), { fireImmediately: true, delay: 1 });
57
+
58
+ subscription.add(new Subscription(() => {
59
+ disposer();
60
+ }));
61
+
62
62
  })
63
63
 
64
64
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobx-react-use-autorun",
3
- "version": "4.0.29-beta",
3
+ "version": "4.0.31-beta",
4
4
  "description": "Provide concise usage for mobx in react",
5
5
  "scripts": {
6
6
  "test": "npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_test.ts",