reactish-state 0.8.0 → 0.9.0

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 CHANGED
@@ -20,16 +20,21 @@ var createState = function createState(_temp) {
20
20
  });
21
21
  }
22
22
  };
23
- if (middleware) set = middleware(set, get, config);
23
+ var subscribe = function subscribe(listener) {
24
+ listeners.add(listener);
25
+ return function () {
26
+ listeners["delete"](listener);
27
+ };
28
+ };
29
+ if (middleware) set = middleware({
30
+ set: set,
31
+ get: get,
32
+ subscribe: subscribe
33
+ }, config);
24
34
  return {
25
35
  get: get,
26
36
  set: set,
27
- subscribe: function subscribe(listener) {
28
- listeners.add(listener);
29
- return function () {
30
- listeners["delete"](listener);
31
- };
32
- },
37
+ subscribe: subscribe,
33
38
  actions: actionCreator && actionCreator(set, get)
34
39
  };
35
40
  };
@@ -42,44 +47,56 @@ var isEqual = function isEqual(args1, args2) {
42
47
  }
43
48
  return true;
44
49
  };
45
- var selector = function selector() {
46
- for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {
47
- items[_key] = arguments[_key];
48
- }
49
- var lastIndex = items.length - 1;
50
- var selectorFunc = items[lastIndex];
51
- items.length = lastIndex;
52
- var cache;
53
- return {
54
- get: function get() {
55
- var args = items.map(function (item) {
56
- return item.get();
57
- });
58
- if (cache && isEqual(args, cache.args)) return cache.ret;
59
- var ret = selectorFunc.apply(void 0, args);
60
- cache = {
61
- args: args,
62
- ret: ret
63
- };
64
- return ret;
65
- },
66
- subscribe: function subscribe(listener) {
67
- var unsubscribers = items.map(function (item) {
68
- return item.subscribe(listener);
69
- });
70
- return function () {
71
- return unsubscribers.forEach(function (unsubscribe) {
72
- return unsubscribe();
73
- });
74
- };
50
+ var createSelector = function createSelector(_temp) {
51
+ var _ref = _temp === void 0 ? {} : _temp,
52
+ plugin = _ref.plugin;
53
+ return function () {
54
+ for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {
55
+ items[_key] = arguments[_key];
75
56
  }
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;
76
89
  };
77
90
  };
91
+ var selector = /*#__PURE__*/createSelector();
78
92
 
79
- var useSnapshot = function useSnapshot(state) {
80
- return shim.useSyncExternalStore(state.subscribe, state.get, state.get);
93
+ var useSnapshot = function useSnapshot(_ref) {
94
+ var subscribe = _ref.subscribe,
95
+ get = _ref.get;
96
+ return shim.useSyncExternalStore(subscribe, get, get);
81
97
  };
82
98
 
99
+ exports.createSelector = createSelector;
83
100
  exports.createState = createState;
84
101
  exports.selector = selector;
85
102
  exports.state = state;
package/dist/es/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export { createState, state } from './vanilla/state.js';
2
- export { selector } from './vanilla/selector.js';
2
+ export { createSelector, selector } from './vanilla/selector.js';
3
3
  export { useSnapshot } from './react/useSnapshot.js';
@@ -1,7 +1,9 @@
1
1
  import { useSyncExternalStore } from 'use-sync-external-store/shim';
2
2
 
3
- var useSnapshot = function useSnapshot(state) {
4
- return useSyncExternalStore(state.subscribe, state.get, state.get);
3
+ var useSnapshot = function useSnapshot(_ref) {
4
+ var subscribe = _ref.subscribe,
5
+ get = _ref.get;
6
+ return useSyncExternalStore(subscribe, get, get);
5
7
  };
6
8
 
7
9
  export { useSnapshot };
@@ -4,38 +4,47 @@ var isEqual = function isEqual(args1, args2) {
4
4
  }
5
5
  return true;
6
6
  };
7
- var selector = function selector() {
8
- for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {
9
- items[_key] = arguments[_key];
10
- }
11
- var lastIndex = items.length - 1;
12
- var selectorFunc = items[lastIndex];
13
- items.length = lastIndex;
14
- var cache;
15
- return {
16
- get: function get() {
17
- var args = items.map(function (item) {
18
- return item.get();
19
- });
20
- if (cache && isEqual(args, cache.args)) return cache.ret;
21
- var ret = selectorFunc.apply(void 0, args);
22
- cache = {
23
- args: args,
24
- ret: ret
25
- };
26
- return ret;
27
- },
28
- subscribe: function subscribe(listener) {
29
- var unsubscribers = items.map(function (item) {
30
- return item.subscribe(listener);
31
- });
32
- return function () {
33
- return unsubscribers.forEach(function (unsubscribe) {
34
- return unsubscribe();
35
- });
36
- };
7
+ var createSelector = function createSelector(_temp) {
8
+ var _ref = _temp === void 0 ? {} : _temp,
9
+ plugin = _ref.plugin;
10
+ return function () {
11
+ for (var _len = arguments.length, items = new Array(_len), _key = 0; _key < _len; _key++) {
12
+ items[_key] = arguments[_key];
37
13
  }
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;
38
46
  };
39
47
  };
48
+ var selector = /*#__PURE__*/createSelector();
40
49
 
41
- export { selector };
50
+ export { createSelector, selector };
@@ -16,16 +16,21 @@ var createState = function createState(_temp) {
16
16
  });
17
17
  }
18
18
  };
19
- if (middleware) set = middleware(set, get, config);
19
+ var subscribe = function subscribe(listener) {
20
+ listeners.add(listener);
21
+ return function () {
22
+ listeners["delete"](listener);
23
+ };
24
+ };
25
+ if (middleware) set = middleware({
26
+ set: set,
27
+ get: get,
28
+ subscribe: subscribe
29
+ }, config);
20
30
  return {
21
31
  get: get,
22
32
  set: set,
23
- subscribe: function subscribe(listener) {
24
- listeners.add(listener);
25
- return function () {
26
- listeners["delete"](listener);
27
- };
28
- },
33
+ subscribe: subscribe,
29
34
  actions: actionCreator && actionCreator(set, get)
30
35
  };
31
36
  };
@@ -2,20 +2,41 @@
2
2
 
3
3
  var immer$1 = require('immer');
4
4
 
5
+ function _extends() {
6
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
7
+ for (var i = 1; i < arguments.length; i++) {
8
+ var source = arguments[i];
9
+ for (var key in source) {
10
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
11
+ target[key] = source[key];
12
+ }
13
+ }
14
+ }
15
+ return target;
16
+ };
17
+ return _extends.apply(this, arguments);
18
+ }
19
+
5
20
  var applyMiddleware = function applyMiddleware() {
6
21
  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {
7
22
  middlewares[_key] = arguments[_key];
8
23
  }
9
- return function (set, get, config) {
10
- return middlewares.reduceRight(function (prev, curr) {
11
- return curr(prev, get, config);
12
- }, set);
24
+ return function (api, config) {
25
+ return middlewares.reduceRight(function (set, middleware) {
26
+ return middleware(_extends({}, api, {
27
+ set: set
28
+ }), config);
29
+ }, api.set);
13
30
  };
14
31
  };
15
32
 
16
- var immer = function immer(set) {
33
+ var immer = function immer(_ref) {
34
+ var set = _ref.set;
17
35
  return function (value) {
18
- return set(typeof value === 'function' ? immer$1.produce(value) : value);
36
+ for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
37
+ rest[_key - 1] = arguments[_key];
38
+ }
39
+ return set.apply(void 0, [typeof value === 'function' ? immer$1.produce(value) : value].concat(rest));
19
40
  };
20
41
  };
21
42
 
@@ -27,39 +48,59 @@ var persist = function persist(_temp) {
27
48
  return localStorage;
28
49
  } : _ref$getStorage;
29
50
  var states = [];
30
- var middleware = function middleware(set, get, config) {
31
- var key = config ? config.key : '';
51
+ var middleware = function middleware(_ref2, config) {
52
+ var set = _ref2.set,
53
+ get = _ref2.get;
54
+ var key = (config == null ? void 0 : config.key) || '';
32
55
  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.');
33
56
  if (prefix) key = prefix + key;
34
57
  states.push([key, set]);
35
- return function (value) {
36
- set(value);
58
+ return function () {
59
+ set.apply(void 0, arguments);
37
60
  getStorage().setItem(key, JSON.stringify(get()));
38
61
  };
39
62
  };
40
63
  middleware.hydrate = function () {
41
- states.forEach(function (_ref2) {
42
- var key = _ref2[0],
43
- set = _ref2[1];
64
+ states.forEach(function (_ref3) {
65
+ var key = _ref3[0],
66
+ set = _ref3[1];
44
67
  var value = getStorage().getItem(key);
45
- value && set(JSON.parse(value));
68
+ value && set(JSON.parse(value), "HYDRATE_" + key);
46
69
  });
47
70
  states.length = 0;
48
71
  };
49
72
  return middleware;
50
73
  };
51
74
 
52
- var reduxDevtools = function reduxDevtools(set, get, config) {
53
- if (typeof window === 'undefined' || !window.__REDUX_DEVTOOLS_EXTENSION__) return set;
54
- var devtools = window.__REDUX_DEVTOOLS_EXTENSION__.connect({
55
- name: config == null ? void 0 : config.key
75
+ var reduxDevtools = function reduxDevtools(_temp) {
76
+ var _ref = _temp === void 0 ? {} : _temp,
77
+ name = _ref.name;
78
+ var devtoolsExt;
79
+ if (typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return function (_ref2) {
80
+ var set = _ref2.set;
81
+ return set;
82
+ };
83
+ var devtools = devtoolsExt.connect({
84
+ name: name
56
85
  });
57
- devtools.init(get());
58
- return function (vaule) {
59
- set(vaule);
60
- devtools.send({
61
- type: 'SET_STATE'
62
- }, get());
86
+ var mergedState = {};
87
+ return function (_ref3, config) {
88
+ var set = _ref3.set,
89
+ get = _ref3.get;
90
+ var key = config == null ? void 0 : config.key;
91
+ 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.');
92
+ mergedState[key] = get();
93
+ devtools.init(mergedState);
94
+ return function (value, action) {
95
+ set.apply(null, arguments);
96
+ mergedState[key] = get();
97
+ devtools.send(typeof action === 'string' ? {
98
+ type: action
99
+ } : action || {
100
+ type: "SET_" + key,
101
+ value: value
102
+ }, mergedState);
103
+ };
63
104
  };
64
105
  };
65
106
 
@@ -0,0 +1,16 @@
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 };
@@ -1,11 +1,15 @@
1
+ import { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';
2
+
1
3
  var applyMiddleware = function applyMiddleware() {
2
4
  for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {
3
5
  middlewares[_key] = arguments[_key];
4
6
  }
5
- return function (set, get, config) {
6
- return middlewares.reduceRight(function (prev, curr) {
7
- return curr(prev, get, config);
8
- }, set);
7
+ return function (api, config) {
8
+ return middlewares.reduceRight(function (set, middleware) {
9
+ return middleware(_extends({}, api, {
10
+ set: set
11
+ }), config);
12
+ }, api.set);
9
13
  };
10
14
  };
11
15
 
@@ -1,8 +1,12 @@
1
1
  import { produce } from 'immer';
2
2
 
3
- var immer = function immer(set) {
3
+ var immer = function immer(_ref) {
4
+ var set = _ref.set;
4
5
  return function (value) {
5
- return set(typeof value === 'function' ? produce(value) : value);
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));
6
10
  };
7
11
  };
8
12
 
@@ -6,22 +6,24 @@ var persist = function persist(_temp) {
6
6
  return localStorage;
7
7
  } : _ref$getStorage;
8
8
  var states = [];
9
- var middleware = function middleware(set, get, config) {
10
- var key = config ? config.key : '';
9
+ var middleware = function middleware(_ref2, config) {
10
+ var set = _ref2.set,
11
+ get = _ref2.get;
12
+ var key = (config == null ? void 0 : config.key) || '';
11
13
  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.');
12
14
  if (prefix) key = prefix + key;
13
15
  states.push([key, set]);
14
- return function (value) {
15
- set(value);
16
+ return function () {
17
+ set.apply(void 0, arguments);
16
18
  getStorage().setItem(key, JSON.stringify(get()));
17
19
  };
18
20
  };
19
21
  middleware.hydrate = function () {
20
- states.forEach(function (_ref2) {
21
- var key = _ref2[0],
22
- set = _ref2[1];
22
+ states.forEach(function (_ref3) {
23
+ var key = _ref3[0],
24
+ set = _ref3[1];
23
25
  var value = getStorage().getItem(key);
24
- value && set(JSON.parse(value));
26
+ value && set(JSON.parse(value), "HYDRATE_" + key);
25
27
  });
26
28
  states.length = 0;
27
29
  };
@@ -1,14 +1,32 @@
1
- var reduxDevtools = function reduxDevtools(set, get, config) {
2
- if (typeof window === 'undefined' || !window.__REDUX_DEVTOOLS_EXTENSION__) return set;
3
- var devtools = window.__REDUX_DEVTOOLS_EXTENSION__.connect({
4
- name: config == null ? void 0 : config.key
1
+ var reduxDevtools = function reduxDevtools(_temp) {
2
+ var _ref = _temp === void 0 ? {} : _temp,
3
+ name = _ref.name;
4
+ var devtoolsExt;
5
+ if (typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return function (_ref2) {
6
+ var set = _ref2.set;
7
+ return set;
8
+ };
9
+ var devtools = devtoolsExt.connect({
10
+ name: name
5
11
  });
6
- devtools.init(get());
7
- return function (vaule) {
8
- set(vaule);
9
- devtools.send({
10
- type: 'SET_STATE'
11
- }, get());
12
+ var mergedState = {};
13
+ return function (_ref3, config) {
14
+ var set = _ref3.set,
15
+ get = _ref3.get;
16
+ var key = config == null ? void 0 : config.key;
17
+ 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.');
18
+ mergedState[key] = get();
19
+ devtools.init(mergedState);
20
+ return function (value, action) {
21
+ set.apply(null, arguments);
22
+ mergedState[key] = get();
23
+ devtools.send(typeof action === 'string' ? {
24
+ type: action
25
+ } : action || {
26
+ type: "SET_" + key,
27
+ value: value
28
+ }, mergedState);
29
+ };
12
30
  };
13
31
  };
14
32
 
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var applyPlugin = function applyPlugin() {
4
+ for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {
5
+ plugins[_key] = arguments[_key];
6
+ }
7
+ return function () {
8
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
9
+ args[_key2] = arguments[_key2];
10
+ }
11
+ return plugins.forEach(function (plugin) {
12
+ return plugin.apply(void 0, args);
13
+ });
14
+ };
15
+ };
16
+
17
+ var reduxDevtools = function reduxDevtools(_temp) {
18
+ var _ref = _temp === void 0 ? {} : _temp,
19
+ name = _ref.name;
20
+ var devtoolsExt;
21
+ if (typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return function () {
22
+ /*do nothing*/
23
+ };
24
+ var devtools = devtoolsExt.connect({
25
+ name: name
26
+ });
27
+ var mergedState = {};
28
+ return function (_ref2, config) {
29
+ var get = _ref2.get,
30
+ subscribe = _ref2.subscribe;
31
+ var key = config == null ? void 0 : config.key;
32
+ 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.');
33
+ var updateState = function updateState() {
34
+ mergedState[key] = get();
35
+ devtools.init(mergedState);
36
+ };
37
+ updateState();
38
+ subscribe(updateState);
39
+ };
40
+ };
41
+
42
+ exports.applyPlugin = applyPlugin;
43
+ exports.reduxDevtools = reduxDevtools;
@@ -0,0 +1,15 @@
1
+ var applyPlugin = function applyPlugin() {
2
+ for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {
3
+ plugins[_key] = arguments[_key];
4
+ }
5
+ return function () {
6
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
7
+ args[_key2] = arguments[_key2];
8
+ }
9
+ return plugins.forEach(function (plugin) {
10
+ return plugin.apply(void 0, args);
11
+ });
12
+ };
13
+ };
14
+
15
+ export { applyPlugin };
@@ -0,0 +1,2 @@
1
+ export { applyPlugin } from './applyPlugin.js';
2
+ export { reduxDevtools } from './reduxDevtools.js';
@@ -0,0 +1,26 @@
1
+ var reduxDevtools = function reduxDevtools(_temp) {
2
+ var _ref = _temp === void 0 ? {} : _temp,
3
+ name = _ref.name;
4
+ var devtoolsExt;
5
+ if (typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return function () {
6
+ /*do nothing*/
7
+ };
8
+ var devtools = devtoolsExt.connect({
9
+ name: name
10
+ });
11
+ var mergedState = {};
12
+ return function (_ref2, config) {
13
+ var get = _ref2.get,
14
+ subscribe = _ref2.subscribe;
15
+ var key = config == null ? void 0 : config.key;
16
+ 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.');
17
+ var updateState = function updateState() {
18
+ mergedState[key] = get();
19
+ devtools.init(mergedState);
20
+ };
21
+ updateState();
22
+ subscribe(updateState);
23
+ };
24
+ };
25
+
26
+ export { reduxDevtools };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reactish-state",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "",
5
5
  "author": "Zheng Song",
6
6
  "license": "MIT",
package/types/common.d.ts CHANGED
@@ -1,10 +1,22 @@
1
1
  export declare type Getter<T> = () => T;
2
- export declare type Setter<T> = (newValue: T | ((value: T) => T)) => void;
2
+ export declare type Setter<T> = (newValue: T | ((value: T) => T), action?: string | {
3
+ type: string;
4
+ [key: string]: unknown;
5
+ }) => void;
3
6
  export declare type Listener = () => void;
7
+ export declare type Subscriber = (listener: Listener) => () => void;
4
8
  export interface Reactish<T> {
5
9
  get: Getter<T>;
6
- subscribe: (listener: Listener) => () => void;
10
+ subscribe: Subscriber;
11
+ }
12
+ export interface Config {
13
+ key?: string;
7
14
  }
8
15
  export interface Middleware {
9
- <T, X>(set: Setter<T>, get: Getter<T>, config?: X): Setter<T>;
16
+ <T>(api: Reactish<T> & {
17
+ set: Setter<T>;
18
+ }, config?: Config): Setter<T>;
19
+ }
20
+ export interface Plugin {
21
+ <T>(reactish: Reactish<T>, config?: Config): void;
10
22
  }
package/types/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export { state, createState } from './vanilla/state';
2
- export { selector } from './vanilla/selector';
2
+ export { selector, createSelector } from './vanilla/selector';
3
3
  export { useSnapshot } from './react/useSnapshot';
4
- export type { StateCreator } from './vanilla/state';
@@ -1,3 +1,6 @@
1
1
  import type { Middleware } from '../common';
2
- declare const reduxDevtools: Middleware;
2
+ declare type ReduxDevtools = (options?: {
3
+ name?: string;
4
+ }) => Middleware;
5
+ declare const reduxDevtools: ReduxDevtools;
3
6
  export { reduxDevtools };
@@ -0,0 +1,3 @@
1
+ import type { Plugin } from '../common';
2
+ declare const applyPlugin: (...plugins: Plugin[]) => Plugin;
3
+ export { applyPlugin };
@@ -0,0 +1,2 @@
1
+ export { applyPlugin } from './applyPlugin';
2
+ export { reduxDevtools } from './reduxDevtools';
@@ -0,0 +1,6 @@
1
+ import type { Plugin } from '../common';
2
+ declare type ReduxDevtools = (options?: {
3
+ name?: string;
4
+ }) => Plugin;
5
+ declare const reduxDevtools: ReduxDevtools;
6
+ export { reduxDevtools };
@@ -1,3 +1,3 @@
1
1
  import type { Reactish } from '../common';
2
- declare const useSnapshot: <T>(state: Reactish<T>) => T;
2
+ declare const useSnapshot: <T>({ subscribe, get }: Reactish<T>) => T;
3
3
  export { useSnapshot };
@@ -1,11 +1,15 @@
1
- import type { Reactish, Listener } from '../common';
1
+ import type { Reactish, Plugin, Config } from '../common';
2
2
  declare type ReactishArray = Reactish<unknown>[];
3
3
  declare type ReactishValueArray<R extends ReactishArray> = {
4
4
  [index in keyof R]: ReturnType<R[index]['get']>;
5
5
  };
6
6
  declare type SelectorFunc<R extends ReactishArray, T> = (...args: ReactishValueArray<R>) => T;
7
- declare const selector: <R extends ReactishArray, T>(...items: [...R, SelectorFunc<R, T>]) => {
8
- get: () => T;
9
- subscribe: (listener: Listener) => () => void;
10
- };
11
- export { selector };
7
+ interface Selector {
8
+ <R extends ReactishArray, T>(...items: [...R, SelectorFunc<R, T>]): Reactish<T>;
9
+ <R extends ReactishArray, T>(...items: [...R, SelectorFunc<R, T>, Config]): Reactish<T>;
10
+ }
11
+ declare const createSelector: ({ plugin }?: {
12
+ plugin?: Plugin | undefined;
13
+ }) => Selector;
14
+ declare const selector: Selector;
15
+ export { selector, createSelector };
@@ -1,13 +1,11 @@
1
- import type { Setter, Reactish, Middleware } from '../common';
1
+ import type { Reactish, Setter, Config, Middleware } from '../common';
2
2
  declare type ActionCreator<T, A> = ((set: Setter<T>, get: () => T) => A) | null | undefined;
3
3
  interface State<T, A = unknown, C extends ActionCreator<T, A> = undefined> extends Reactish<T> {
4
4
  set: Setter<T>;
5
5
  actions: C extends undefined ? never : A;
6
6
  }
7
- declare type StateCreator = <T, A, X>(initialValue: T, actionCreator?: ActionCreator<T, A>, config?: X) => State<T, A, ActionCreator<T, A>>;
8
- declare const createState: <T, X>({ middleware }?: {
7
+ declare const createState: ({ middleware }?: {
9
8
  middleware?: Middleware | undefined;
10
- }) => <A>(initialValue: T, actionCreator?: ActionCreator<T, A>, config?: X | undefined) => State<T, A, ActionCreator<T, A>>;
11
- declare const state: StateCreator;
12
- export type { StateCreator };
9
+ }) => <T, A>(initialValue: T, actionCreator?: ActionCreator<T, A>, config?: Config) => State<T, A, ActionCreator<T, A>>;
10
+ declare const state: <T, A>(initialValue: T, actionCreator?: ActionCreator<T, A>, config?: Config) => State<T, A, ActionCreator<T, A>>;
13
11
  export { state, createState };
@@ -1,3 +0,0 @@
1
- import type { Middleware } from '../common';
2
- declare const logger: Middleware;
3
- export { logger };