reactish-state 0.5.3 → 0.6.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 +32 -25
- package/dist/es/index.js +1 -1
- package/dist/es/vanilla/state.js +32 -26
- package/dist/middleware/cjs/index.js +15 -0
- package/dist/middleware/es/applyMiddleware.js +13 -0
- package/dist/middleware/es/index.js +1 -0
- package/middleware/package.json +7 -0
- package/package.json +3 -2
- package/types/common.d.ts +8 -0
- package/types/index.d.ts +2 -1
- package/types/middleware/applyMiddleware.d.ts +3 -0
- package/types/middleware/index.d.ts +1 -0
- package/types/react/useSnapshot.d.ts +1 -1
- package/types/vanilla/selector.d.ts +1 -1
- package/types/vanilla/state.d.ts +8 -4
- package/types/vanilla/common.d.ts +0 -5
package/dist/cjs/index.js
CHANGED
|
@@ -2,33 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
var shim = require('use-sync-external-store/shim');
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
5
|
+
var createState = function createState(_temp) {
|
|
6
|
+
var _ref = _temp === void 0 ? {} : _temp,
|
|
7
|
+
enhancer = _ref.enhancer;
|
|
8
|
+
return function (initialValue, actionCreator) {
|
|
9
|
+
var value = initialValue;
|
|
10
|
+
var listeners = new Set();
|
|
11
|
+
var get = function get() {
|
|
12
|
+
return value;
|
|
13
|
+
};
|
|
14
|
+
var set = function set(newValue) {
|
|
15
|
+
var nextValue = typeof newValue === 'function' ? newValue(value) : newValue;
|
|
16
|
+
if (!Object.is(value, nextValue)) {
|
|
17
|
+
value = nextValue;
|
|
18
|
+
listeners.forEach(function (listener) {
|
|
19
|
+
listener();
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
if (enhancer) set = enhancer(set, get);
|
|
24
|
+
return {
|
|
25
|
+
get: get,
|
|
26
|
+
set: set,
|
|
27
|
+
subscribe: function subscribe(listener) {
|
|
28
|
+
listeners.add(listener);
|
|
29
|
+
return function () {
|
|
30
|
+
listeners["delete"](listener);
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
actions: actionCreator && actionCreator(set, get)
|
|
34
|
+
};
|
|
30
35
|
};
|
|
31
36
|
};
|
|
37
|
+
var state = /*#__PURE__*/createState();
|
|
32
38
|
|
|
33
39
|
var isEqual = function isEqual(args1, args2) {
|
|
34
40
|
for (var i = 0; i < args1.length; i++) {
|
|
@@ -74,6 +80,7 @@ var useSnapshot = function useSnapshot(state) {
|
|
|
74
80
|
return shim.useSyncExternalStore(state.subscribe, state.get, state.get);
|
|
75
81
|
};
|
|
76
82
|
|
|
83
|
+
exports.createState = createState;
|
|
77
84
|
exports.selector = selector;
|
|
78
85
|
exports.state = state;
|
|
79
86
|
exports.useSnapshot = useSnapshot;
|
package/dist/es/index.js
CHANGED
package/dist/es/vanilla/state.js
CHANGED
|
@@ -1,29 +1,35 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
function
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
1
|
+
var createState = function createState(_temp) {
|
|
2
|
+
var _ref = _temp === void 0 ? {} : _temp,
|
|
3
|
+
enhancer = _ref.enhancer;
|
|
4
|
+
return function (initialValue, actionCreator) {
|
|
5
|
+
var value = initialValue;
|
|
6
|
+
var listeners = new Set();
|
|
7
|
+
var get = function get() {
|
|
8
|
+
return value;
|
|
9
|
+
};
|
|
10
|
+
var set = function set(newValue) {
|
|
11
|
+
var nextValue = typeof newValue === 'function' ? newValue(value) : newValue;
|
|
12
|
+
if (!Object.is(value, nextValue)) {
|
|
13
|
+
value = nextValue;
|
|
14
|
+
listeners.forEach(function (listener) {
|
|
15
|
+
listener();
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
if (enhancer) set = enhancer(set, get);
|
|
20
|
+
return {
|
|
21
|
+
get: get,
|
|
22
|
+
set: set,
|
|
23
|
+
subscribe: function subscribe(listener) {
|
|
24
|
+
listeners.add(listener);
|
|
25
|
+
return function () {
|
|
26
|
+
listeners["delete"](listener);
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
actions: actionCreator && actionCreator(set, get)
|
|
30
|
+
};
|
|
26
31
|
};
|
|
27
32
|
};
|
|
33
|
+
var state = /*#__PURE__*/createState();
|
|
28
34
|
|
|
29
|
-
export { state };
|
|
35
|
+
export { createState, state };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var applyMiddleware = function applyMiddleware() {
|
|
4
|
+
for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
5
|
+
middlewares[_key] = arguments[_key];
|
|
6
|
+
}
|
|
7
|
+
return function (set, get) {
|
|
8
|
+
middlewares.forEach(function (middleware) {
|
|
9
|
+
return set = middleware(set, get);
|
|
10
|
+
});
|
|
11
|
+
return set;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.applyMiddleware = applyMiddleware;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
var applyMiddleware = function applyMiddleware() {
|
|
2
|
+
for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
3
|
+
middlewares[_key] = arguments[_key];
|
|
4
|
+
}
|
|
5
|
+
return function (set, get) {
|
|
6
|
+
middlewares.forEach(function (middleware) {
|
|
7
|
+
return set = middleware(set, get);
|
|
8
|
+
});
|
|
9
|
+
return set;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { applyMiddleware };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { applyMiddleware } from './applyMiddleware.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reactish-state",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Zheng Song",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
"sideEffects": false,
|
|
11
11
|
"files": [
|
|
12
12
|
"dist/",
|
|
13
|
-
"types/"
|
|
13
|
+
"types/",
|
|
14
|
+
"middleware"
|
|
14
15
|
],
|
|
15
16
|
"scripts": {
|
|
16
17
|
"start": "run-p watch \"types -- --watch\"",
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare type Getter<T> = () => T;
|
|
2
|
+
export declare type Setter<T> = (newValue: T | ((value: T) => T)) => void;
|
|
3
|
+
export declare type Listener = () => void;
|
|
4
|
+
export interface Reactish<T> {
|
|
5
|
+
get: Getter<T>;
|
|
6
|
+
subscribe: (listener: Listener) => () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare type Enhancer<T> = (set: Setter<T>, get: Getter<T>) => Setter<T>;
|
package/types/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { applyMiddleware } from './applyMiddleware';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Reactish, Listener } from '
|
|
1
|
+
import type { Reactish, Listener } 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']>;
|
package/types/vanilla/state.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type { Reactish } from '
|
|
2
|
-
declare type Setter<T> = (newValue: T | ((value: T) => T)) => void;
|
|
1
|
+
import type { Setter, Reactish, Enhancer } from '../common';
|
|
3
2
|
declare type ActionCreator<T, A> = ((set: Setter<T>, get: () => T) => A) | undefined;
|
|
4
3
|
interface State<T, A = unknown, C extends ActionCreator<T, A> = undefined> extends Reactish<T> {
|
|
5
4
|
set: Setter<T>;
|
|
6
5
|
actions: C extends undefined ? never : A;
|
|
7
6
|
}
|
|
8
|
-
declare
|
|
9
|
-
|
|
7
|
+
declare type StateCreator = <T, A>(initialValue: T, actionCreator?: ActionCreator<T, A>) => State<T, A, ActionCreator<T, A>>;
|
|
8
|
+
declare const createState: <T, A>({ enhancer }?: {
|
|
9
|
+
enhancer?: Enhancer<T> | undefined;
|
|
10
|
+
}) => (initialValue: T, actionCreator?: ActionCreator<T, A>) => State<T, A, ActionCreator<T, A>>;
|
|
11
|
+
declare const state: StateCreator;
|
|
12
|
+
export type { StateCreator };
|
|
13
|
+
export { state, createState };
|