reactish-state 0.10.1 → 0.10.2
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/dist/cjs/index.js +62 -82
- package/dist/esm/react/useSnapshot.js +4 -5
- package/dist/esm/vanilla/selector.js +30 -41
- package/dist/esm/vanilla/state.js +28 -36
- package/dist/middleware/cjs/immer.js +3 -9
- package/dist/middleware/cjs/index.js +36 -59
- package/dist/middleware/esm/applyMiddleware.js +6 -13
- package/dist/middleware/esm/immer.js +3 -9
- package/dist/middleware/esm/persist.js +16 -20
- package/dist/middleware/esm/reduxDevtools.js +14 -13
- package/dist/plugin/cjs/index.js +14 -19
- package/dist/plugin/esm/applyPlugin.js +1 -7
- package/dist/plugin/esm/reduxDevtools.js +13 -12
- package/package.json +1 -1
- package/types/index.d.ts +4 -3
- package/types/middleware/index.d.ts +3 -3
- package/types/middleware/persist.d.ts +1 -0
- package/types/middleware/reduxDevtools.d.ts +1 -0
- package/types/plugin/index.d.ts +2 -2
- package/types/plugin/reduxDevtools.d.ts +1 -0
- package/types/vanilla/selector.d.ts +1 -0
- package/types/vanilla/state.d.ts +1 -0
- package/dist/middleware/esm/_virtual/_rollupPluginBabelHelpers.js +0 -16
package/dist/cjs/index.js
CHANGED
|
@@ -2,99 +2,79 @@
|
|
|
2
2
|
|
|
3
3
|
var shim = require('use-sync-external-store/shim');
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
subscribe: subscribe
|
|
33
|
-
}, config);
|
|
34
|
-
return {
|
|
35
|
-
get: get,
|
|
36
|
-
set: set,
|
|
37
|
-
subscribe: subscribe,
|
|
38
|
-
actions: actionCreator && actionCreator(set, get)
|
|
39
|
-
};
|
|
5
|
+
const createState = ({
|
|
6
|
+
middleware
|
|
7
|
+
} = {}) => (initialValue, actionCreator, config) => {
|
|
8
|
+
let value = initialValue;
|
|
9
|
+
const listeners = new Set();
|
|
10
|
+
const get = () => value;
|
|
11
|
+
let set = newValue => {
|
|
12
|
+
const nextValue = typeof newValue === 'function' ? newValue(value) : newValue;
|
|
13
|
+
if (!Object.is(value, nextValue)) {
|
|
14
|
+
value = nextValue;
|
|
15
|
+
listeners.forEach(listener => listener());
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const subscribe = listener => {
|
|
19
|
+
listeners.add(listener);
|
|
20
|
+
return () => listeners.delete(listener);
|
|
21
|
+
};
|
|
22
|
+
if (middleware) set = middleware({
|
|
23
|
+
set,
|
|
24
|
+
get,
|
|
25
|
+
subscribe
|
|
26
|
+
}, config);
|
|
27
|
+
return {
|
|
28
|
+
get,
|
|
29
|
+
set,
|
|
30
|
+
subscribe,
|
|
31
|
+
actions: actionCreator && actionCreator(set, get)
|
|
40
32
|
};
|
|
41
33
|
};
|
|
42
|
-
|
|
34
|
+
const state = /*#__PURE__*/createState();
|
|
43
35
|
|
|
44
|
-
|
|
45
|
-
for (
|
|
36
|
+
const isEqual = (args1, args2) => {
|
|
37
|
+
for (let i = 0; i < args1.length; i++) {
|
|
46
38
|
if (!Object.is(args1[i], args2[i])) return false;
|
|
47
39
|
}
|
|
48
40
|
return true;
|
|
49
41
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
42
|
+
const createSelector = ({
|
|
43
|
+
plugin
|
|
44
|
+
} = {}) => (...items) => {
|
|
45
|
+
const {
|
|
46
|
+
length
|
|
47
|
+
} = items;
|
|
48
|
+
const cutoff = typeof items[length - 1] === 'function' ? length - 1 : length - 2;
|
|
49
|
+
const selectorFunc = items[cutoff];
|
|
50
|
+
const config = items[cutoff + 1];
|
|
51
|
+
items.length = cutoff;
|
|
52
|
+
let cache;
|
|
53
|
+
const selector = {
|
|
54
|
+
get: () => {
|
|
55
|
+
const args = items.map(item => item.get());
|
|
56
|
+
if (cache && isEqual(args, cache.args)) return cache.ret;
|
|
57
|
+
const ret = selectorFunc(...args);
|
|
58
|
+
cache = {
|
|
59
|
+
args,
|
|
60
|
+
ret
|
|
61
|
+
};
|
|
62
|
+
return ret;
|
|
63
|
+
},
|
|
64
|
+
subscribe: listener => {
|
|
65
|
+
const unsubscribers = items.map(item => item.subscribe(listener));
|
|
66
|
+
return () => unsubscribers.forEach(unsubscribe => unsubscribe());
|
|
56
67
|
}
|
|
57
|
-
var length = items.length;
|
|
58
|
-
var cutoff = typeof items[length - 1] === 'function' ? length - 1 : length - 2;
|
|
59
|
-
var selectorFunc = items[cutoff];
|
|
60
|
-
var config = items[cutoff + 1];
|
|
61
|
-
items.length = cutoff;
|
|
62
|
-
var cache;
|
|
63
|
-
var selector = {
|
|
64
|
-
get: function get() {
|
|
65
|
-
var args = items.map(function (item) {
|
|
66
|
-
return item.get();
|
|
67
|
-
});
|
|
68
|
-
if (cache && isEqual(args, cache.args)) return cache.ret;
|
|
69
|
-
var ret = selectorFunc.apply(void 0, args);
|
|
70
|
-
cache = {
|
|
71
|
-
args: args,
|
|
72
|
-
ret: ret
|
|
73
|
-
};
|
|
74
|
-
return ret;
|
|
75
|
-
},
|
|
76
|
-
subscribe: function subscribe(listener) {
|
|
77
|
-
var unsubscribers = items.map(function (item) {
|
|
78
|
-
return item.subscribe(listener);
|
|
79
|
-
});
|
|
80
|
-
return function () {
|
|
81
|
-
return unsubscribers.forEach(function (unsubscribe) {
|
|
82
|
-
return unsubscribe();
|
|
83
|
-
});
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
plugin == null ? void 0 : plugin(selector, config);
|
|
88
|
-
return selector;
|
|
89
68
|
};
|
|
69
|
+
plugin == null ? void 0 : plugin(selector, config);
|
|
70
|
+
return selector;
|
|
90
71
|
};
|
|
91
|
-
|
|
72
|
+
const selector = /*#__PURE__*/createSelector();
|
|
92
73
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
};
|
|
74
|
+
const useSnapshot = ({
|
|
75
|
+
subscribe,
|
|
76
|
+
get
|
|
77
|
+
}) => shim.useSyncExternalStore(subscribe, get, get);
|
|
98
78
|
|
|
99
79
|
exports.createSelector = createSelector;
|
|
100
80
|
exports.createState = createState;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { useSyncExternalStore } from 'use-sync-external-store/shim';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
3
|
+
const useSnapshot = ({
|
|
4
|
+
subscribe,
|
|
5
|
+
get
|
|
6
|
+
}) => useSyncExternalStore(subscribe, get, get);
|
|
8
7
|
|
|
9
8
|
export { useSnapshot };
|
|
@@ -1,50 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
for (
|
|
1
|
+
const isEqual = (args1, args2) => {
|
|
2
|
+
for (let i = 0; i < args1.length; i++) {
|
|
3
3
|
if (!Object.is(args1[i], args2[i])) return false;
|
|
4
4
|
}
|
|
5
5
|
return true;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
const createSelector = ({
|
|
8
|
+
plugin
|
|
9
|
+
} = {}) => (...items) => {
|
|
10
|
+
const {
|
|
11
|
+
length
|
|
12
|
+
} = items;
|
|
13
|
+
const cutoff = typeof items[length - 1] === 'function' ? length - 1 : length - 2;
|
|
14
|
+
const selectorFunc = items[cutoff];
|
|
15
|
+
const config = items[cutoff + 1];
|
|
16
|
+
items.length = cutoff;
|
|
17
|
+
let cache;
|
|
18
|
+
const selector = {
|
|
19
|
+
get: () => {
|
|
20
|
+
const args = items.map(item => item.get());
|
|
21
|
+
if (cache && isEqual(args, cache.args)) return cache.ret;
|
|
22
|
+
const ret = selectorFunc(...args);
|
|
23
|
+
cache = {
|
|
24
|
+
args,
|
|
25
|
+
ret
|
|
26
|
+
};
|
|
27
|
+
return ret;
|
|
28
|
+
},
|
|
29
|
+
subscribe: listener => {
|
|
30
|
+
const unsubscribers = items.map(item => item.subscribe(listener));
|
|
31
|
+
return () => unsubscribers.forEach(unsubscribe => unsubscribe());
|
|
13
32
|
}
|
|
14
|
-
var length = items.length;
|
|
15
|
-
var cutoff = typeof items[length - 1] === 'function' ? length - 1 : length - 2;
|
|
16
|
-
var selectorFunc = items[cutoff];
|
|
17
|
-
var config = items[cutoff + 1];
|
|
18
|
-
items.length = cutoff;
|
|
19
|
-
var cache;
|
|
20
|
-
var selector = {
|
|
21
|
-
get: function get() {
|
|
22
|
-
var args = items.map(function (item) {
|
|
23
|
-
return item.get();
|
|
24
|
-
});
|
|
25
|
-
if (cache && isEqual(args, cache.args)) return cache.ret;
|
|
26
|
-
var ret = selectorFunc.apply(void 0, args);
|
|
27
|
-
cache = {
|
|
28
|
-
args: args,
|
|
29
|
-
ret: ret
|
|
30
|
-
};
|
|
31
|
-
return ret;
|
|
32
|
-
},
|
|
33
|
-
subscribe: function subscribe(listener) {
|
|
34
|
-
var unsubscribers = items.map(function (item) {
|
|
35
|
-
return item.subscribe(listener);
|
|
36
|
-
});
|
|
37
|
-
return function () {
|
|
38
|
-
return unsubscribers.forEach(function (unsubscribe) {
|
|
39
|
-
return unsubscribe();
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
plugin == null ? void 0 : plugin(selector, config);
|
|
45
|
-
return selector;
|
|
46
33
|
};
|
|
34
|
+
plugin == null ? void 0 : plugin(selector, config);
|
|
35
|
+
return selector;
|
|
47
36
|
};
|
|
48
|
-
|
|
37
|
+
const selector = /*#__PURE__*/createSelector();
|
|
49
38
|
|
|
50
39
|
export { createSelector, selector };
|
|
@@ -1,40 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
subscribe: subscribe
|
|
29
|
-
}, config);
|
|
30
|
-
return {
|
|
31
|
-
get: get,
|
|
32
|
-
set: set,
|
|
33
|
-
subscribe: subscribe,
|
|
34
|
-
actions: actionCreator && actionCreator(set, get)
|
|
35
|
-
};
|
|
1
|
+
const createState = ({
|
|
2
|
+
middleware
|
|
3
|
+
} = {}) => (initialValue, actionCreator, config) => {
|
|
4
|
+
let value = initialValue;
|
|
5
|
+
const listeners = new Set();
|
|
6
|
+
const get = () => value;
|
|
7
|
+
let set = newValue => {
|
|
8
|
+
const nextValue = typeof newValue === 'function' ? newValue(value) : newValue;
|
|
9
|
+
if (!Object.is(value, nextValue)) {
|
|
10
|
+
value = nextValue;
|
|
11
|
+
listeners.forEach(listener => listener());
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const subscribe = listener => {
|
|
15
|
+
listeners.add(listener);
|
|
16
|
+
return () => listeners.delete(listener);
|
|
17
|
+
};
|
|
18
|
+
if (middleware) set = middleware({
|
|
19
|
+
set,
|
|
20
|
+
get,
|
|
21
|
+
subscribe
|
|
22
|
+
}, config);
|
|
23
|
+
return {
|
|
24
|
+
get,
|
|
25
|
+
set,
|
|
26
|
+
subscribe,
|
|
27
|
+
actions: actionCreator && actionCreator(set, get)
|
|
36
28
|
};
|
|
37
29
|
};
|
|
38
|
-
|
|
30
|
+
const state = /*#__PURE__*/createState();
|
|
39
31
|
|
|
40
32
|
export { createState, state };
|
|
@@ -2,14 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var immer$1 = require('immer');
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
9
|
-
rest[_key - 1] = arguments[_key];
|
|
10
|
-
}
|
|
11
|
-
return set.apply(void 0, [typeof value === 'function' ? immer$1.produce(value) : value].concat(rest));
|
|
12
|
-
};
|
|
13
|
-
};
|
|
5
|
+
const immer = ({
|
|
6
|
+
set
|
|
7
|
+
}) => (value, ...rest) => set(typeof value === 'function' ? immer$1.produce(value) : value, ...rest);
|
|
14
8
|
|
|
15
9
|
exports.immer = immer;
|
|
@@ -1,77 +1,54 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
target[key] = source[key];
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
return target;
|
|
14
|
-
};
|
|
15
|
-
return _extends.apply(this, arguments);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
var applyMiddleware = function applyMiddleware(middlewares, _temp) {
|
|
19
|
-
var _ref = _temp === void 0 ? {} : _temp,
|
|
20
|
-
fromRight = _ref.fromRight;
|
|
21
|
-
return function (api, config) {
|
|
22
|
-
return middlewares[fromRight ? 'reduceRight' : 'reduce'](function (set, middleware) {
|
|
23
|
-
return middleware ? middleware(_extends({}, api, {
|
|
24
|
-
set: set
|
|
25
|
-
}), config) : set;
|
|
26
|
-
}, api.set);
|
|
27
|
-
};
|
|
28
|
-
};
|
|
3
|
+
const applyMiddleware = (middlewares, {
|
|
4
|
+
fromRight
|
|
5
|
+
} = {}) => (api, config) => middlewares[fromRight ? 'reduceRight' : 'reduce']((set, middleware) => middleware ? middleware({
|
|
6
|
+
...api,
|
|
7
|
+
set
|
|
8
|
+
}, config) : set, api.set);
|
|
29
9
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
get = _ref2.get;
|
|
41
|
-
var key = (config == null ? void 0 : config.key) || '';
|
|
10
|
+
const persist = ({
|
|
11
|
+
prefix,
|
|
12
|
+
getStorage = () => localStorage
|
|
13
|
+
} = {}) => {
|
|
14
|
+
const states = [];
|
|
15
|
+
const middleware = ({
|
|
16
|
+
set,
|
|
17
|
+
get
|
|
18
|
+
}, config) => {
|
|
19
|
+
let key = (config == null ? void 0 : config.key) || '';
|
|
42
20
|
if (!key) throw new Error('[reactish-state] state should be provided with a string `key` in the config object when the `persist` middleware is used.');
|
|
43
21
|
if (prefix) key = prefix + key;
|
|
44
22
|
states.push([key, set]);
|
|
45
|
-
return
|
|
46
|
-
set
|
|
23
|
+
return (...args) => {
|
|
24
|
+
set(...args);
|
|
47
25
|
getStorage().setItem(key, JSON.stringify(get()));
|
|
48
26
|
};
|
|
49
27
|
};
|
|
50
|
-
middleware.hydrate =
|
|
51
|
-
states.forEach(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
var value = getStorage().getItem(key);
|
|
55
|
-
value != null && set(value !== 'undefined' ? JSON.parse(value) : undefined, "HYDRATE_" + key);
|
|
28
|
+
middleware.hydrate = () => {
|
|
29
|
+
states.forEach(([key, set]) => {
|
|
30
|
+
const value = getStorage().getItem(key);
|
|
31
|
+
value != null && set(value !== 'undefined' ? JSON.parse(value) : undefined, `HYDRATE_${key}`);
|
|
56
32
|
});
|
|
57
33
|
states.length = 0;
|
|
58
34
|
};
|
|
59
35
|
return middleware;
|
|
60
36
|
};
|
|
61
37
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
38
|
+
const reduxDevtools = ({
|
|
39
|
+
name
|
|
40
|
+
} = {}) => {
|
|
41
|
+
let devtoolsExt;
|
|
66
42
|
if (process.env.NODE_ENV === 'production' || typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return;
|
|
67
|
-
|
|
68
|
-
name
|
|
43
|
+
const devtools = devtoolsExt.connect({
|
|
44
|
+
name
|
|
69
45
|
});
|
|
70
|
-
|
|
71
|
-
return
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
46
|
+
const mergedState = {};
|
|
47
|
+
return ({
|
|
48
|
+
set,
|
|
49
|
+
get
|
|
50
|
+
}, config) => {
|
|
51
|
+
const key = config == null ? void 0 : config.key;
|
|
75
52
|
if (!key) throw new Error('[reactish-state] state should be provided with a string `key` in the config object when the `reduxDevtools` middleware is used.');
|
|
76
53
|
mergedState[key] = get();
|
|
77
54
|
devtools.init(mergedState);
|
|
@@ -81,8 +58,8 @@ var reduxDevtools = function reduxDevtools(_temp) {
|
|
|
81
58
|
devtools.send(typeof action === 'string' ? {
|
|
82
59
|
type: action
|
|
83
60
|
} : action || {
|
|
84
|
-
type:
|
|
85
|
-
value
|
|
61
|
+
type: `SET_${key}`,
|
|
62
|
+
value
|
|
86
63
|
}, mergedState);
|
|
87
64
|
};
|
|
88
65
|
};
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return middlewares[fromRight ? 'reduceRight' : 'reduce'](function (set, middleware) {
|
|
8
|
-
return middleware ? middleware(_extends({}, api, {
|
|
9
|
-
set: set
|
|
10
|
-
}), config) : set;
|
|
11
|
-
}, api.set);
|
|
12
|
-
};
|
|
13
|
-
};
|
|
1
|
+
const applyMiddleware = (middlewares, {
|
|
2
|
+
fromRight
|
|
3
|
+
} = {}) => (api, config) => middlewares[fromRight ? 'reduceRight' : 'reduce']((set, middleware) => middleware ? middleware({
|
|
4
|
+
...api,
|
|
5
|
+
set
|
|
6
|
+
}, config) : set, api.set);
|
|
14
7
|
|
|
15
8
|
export { applyMiddleware };
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { produce } from 'immer';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
7
|
-
rest[_key - 1] = arguments[_key];
|
|
8
|
-
}
|
|
9
|
-
return set.apply(void 0, [typeof value === 'function' ? produce(value) : value].concat(rest));
|
|
10
|
-
};
|
|
11
|
-
};
|
|
3
|
+
const immer = ({
|
|
4
|
+
set
|
|
5
|
+
}) => (value, ...rest) => set(typeof value === 'function' ? produce(value) : value, ...rest);
|
|
12
6
|
|
|
13
7
|
export { immer };
|
|
@@ -1,29 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
get = _ref2.get;
|
|
12
|
-
var key = (config == null ? void 0 : config.key) || '';
|
|
1
|
+
const persist = ({
|
|
2
|
+
prefix,
|
|
3
|
+
getStorage = () => localStorage
|
|
4
|
+
} = {}) => {
|
|
5
|
+
const states = [];
|
|
6
|
+
const middleware = ({
|
|
7
|
+
set,
|
|
8
|
+
get
|
|
9
|
+
}, config) => {
|
|
10
|
+
let key = (config == null ? void 0 : config.key) || '';
|
|
13
11
|
if (!key) throw new Error('[reactish-state] state should be provided with a string `key` in the config object when the `persist` middleware is used.');
|
|
14
12
|
if (prefix) key = prefix + key;
|
|
15
13
|
states.push([key, set]);
|
|
16
|
-
return
|
|
17
|
-
set
|
|
14
|
+
return (...args) => {
|
|
15
|
+
set(...args);
|
|
18
16
|
getStorage().setItem(key, JSON.stringify(get()));
|
|
19
17
|
};
|
|
20
18
|
};
|
|
21
|
-
middleware.hydrate =
|
|
22
|
-
states.forEach(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var value = getStorage().getItem(key);
|
|
26
|
-
value != null && set(value !== 'undefined' ? JSON.parse(value) : undefined, "HYDRATE_" + key);
|
|
19
|
+
middleware.hydrate = () => {
|
|
20
|
+
states.forEach(([key, set]) => {
|
|
21
|
+
const value = getStorage().getItem(key);
|
|
22
|
+
value != null && set(value !== 'undefined' ? JSON.parse(value) : undefined, `HYDRATE_${key}`);
|
|
27
23
|
});
|
|
28
24
|
states.length = 0;
|
|
29
25
|
};
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const reduxDevtools = ({
|
|
2
|
+
name
|
|
3
|
+
} = {}) => {
|
|
4
|
+
let devtoolsExt;
|
|
5
5
|
if (process.env.NODE_ENV === 'production' || typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return;
|
|
6
|
-
|
|
7
|
-
name
|
|
6
|
+
const devtools = devtoolsExt.connect({
|
|
7
|
+
name
|
|
8
8
|
});
|
|
9
|
-
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const mergedState = {};
|
|
10
|
+
return ({
|
|
11
|
+
set,
|
|
12
|
+
get
|
|
13
|
+
}, config) => {
|
|
14
|
+
const key = config == null ? void 0 : config.key;
|
|
14
15
|
if (!key) throw new Error('[reactish-state] state should be provided with a string `key` in the config object when the `reduxDevtools` middleware is used.');
|
|
15
16
|
mergedState[key] = get();
|
|
16
17
|
devtools.init(mergedState);
|
|
@@ -20,8 +21,8 @@ var reduxDevtools = function reduxDevtools(_temp) {
|
|
|
20
21
|
devtools.send(typeof action === 'string' ? {
|
|
21
22
|
type: action
|
|
22
23
|
} : action || {
|
|
23
|
-
type:
|
|
24
|
-
value
|
|
24
|
+
type: `SET_${key}`,
|
|
25
|
+
value
|
|
25
26
|
}, mergedState);
|
|
26
27
|
};
|
|
27
28
|
};
|
package/dist/plugin/cjs/index.js
CHANGED
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
return function (reactish, config) {
|
|
5
|
-
return plugins.forEach(function (plugin) {
|
|
6
|
-
return plugin == null ? void 0 : plugin(reactish, config);
|
|
7
|
-
});
|
|
8
|
-
};
|
|
9
|
-
};
|
|
3
|
+
const applyPlugin = plugins => (reactish, config) => plugins.forEach(plugin => plugin == null ? void 0 : plugin(reactish, config));
|
|
10
4
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
const reduxDevtools = ({
|
|
6
|
+
name
|
|
7
|
+
} = {}) => {
|
|
8
|
+
let devtoolsExt;
|
|
15
9
|
if (process.env.NODE_ENV === 'production' || typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return;
|
|
16
|
-
|
|
17
|
-
name
|
|
10
|
+
const devtools = devtoolsExt.connect({
|
|
11
|
+
name
|
|
18
12
|
});
|
|
19
|
-
|
|
20
|
-
return
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
const mergedState = {};
|
|
14
|
+
return ({
|
|
15
|
+
get,
|
|
16
|
+
subscribe
|
|
17
|
+
}, config) => {
|
|
18
|
+
const key = config == null ? void 0 : config.key;
|
|
24
19
|
if (!key) throw new Error('[reactish-state] state should be provided with a string `key` in the config object when the `reduxDevtools` plugin is used.');
|
|
25
|
-
|
|
20
|
+
const updateState = () => {
|
|
26
21
|
mergedState[key] = get();
|
|
27
22
|
devtools.init(mergedState);
|
|
28
23
|
};
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
return function (reactish, config) {
|
|
3
|
-
return plugins.forEach(function (plugin) {
|
|
4
|
-
return plugin == null ? void 0 : plugin(reactish, config);
|
|
5
|
-
});
|
|
6
|
-
};
|
|
7
|
-
};
|
|
1
|
+
const applyPlugin = plugins => (reactish, config) => plugins.forEach(plugin => plugin == null ? void 0 : plugin(reactish, config));
|
|
8
2
|
|
|
9
3
|
export { applyPlugin };
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const reduxDevtools = ({
|
|
2
|
+
name
|
|
3
|
+
} = {}) => {
|
|
4
|
+
let devtoolsExt;
|
|
5
5
|
if (process.env.NODE_ENV === 'production' || typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return;
|
|
6
|
-
|
|
7
|
-
name
|
|
6
|
+
const devtools = devtoolsExt.connect({
|
|
7
|
+
name
|
|
8
8
|
});
|
|
9
|
-
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const mergedState = {};
|
|
10
|
+
return ({
|
|
11
|
+
get,
|
|
12
|
+
subscribe
|
|
13
|
+
}, config) => {
|
|
14
|
+
const key = config == null ? void 0 : config.key;
|
|
14
15
|
if (!key) throw new Error('[reactish-state] state should be provided with a string `key` in the config object when the `reduxDevtools` plugin is used.');
|
|
15
|
-
|
|
16
|
+
const updateState = () => {
|
|
16
17
|
mergedState[key] = get();
|
|
17
18
|
devtools.init(mergedState);
|
|
18
19
|
};
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
1
|
+
export * from './common';
|
|
2
|
+
export * from './vanilla/state';
|
|
3
|
+
export * from './vanilla/selector';
|
|
4
|
+
export * from './react/useSnapshot';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
1
|
+
export * from './applyMiddleware';
|
|
2
|
+
export * from './persist';
|
|
3
|
+
export * from './reduxDevtools';
|
package/types/plugin/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export * from './applyPlugin';
|
|
2
|
+
export * from './reduxDevtools';
|
package/types/vanilla/state.d.ts
CHANGED
|
@@ -8,4 +8,5 @@ declare const createState: ({ middleware }?: {
|
|
|
8
8
|
middleware?: Middleware | undefined;
|
|
9
9
|
}) => <T, A>(initialValue: T, actionCreator?: ActionCreator<T, A>, config?: Config) => State<T, A, ActionCreator<T, A>>;
|
|
10
10
|
declare const state: <T, A>(initialValue: T, actionCreator?: ActionCreator<T, A>, config?: Config) => State<T, A, ActionCreator<T, A>>;
|
|
11
|
+
export type { State, ActionCreator };
|
|
11
12
|
export { state, createState };
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
function _extends() {
|
|
2
|
-
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
3
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
4
|
-
var source = arguments[i];
|
|
5
|
-
for (var key in source) {
|
|
6
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
7
|
-
target[key] = source[key];
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
return target;
|
|
12
|
-
};
|
|
13
|
-
return _extends.apply(this, arguments);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export { _extends as extends };
|