reactish-state 0.1.0 → 0.2.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 +34 -0
- package/dist/es/index.js +2 -0
- package/dist/es/react.js +8 -0
- package/dist/es/vanilla.js +24 -0
- package/package.json +56 -5
- package/types/index.d.ts +2 -0
- package/types/react.d.ts +7 -0
- package/types/vanilla.d.ts +8 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var shim = require('use-sync-external-store/shim');
|
|
4
|
+
|
|
5
|
+
var state = function state(initialValue) {
|
|
6
|
+
var value = initialValue;
|
|
7
|
+
var listeners = new Set();
|
|
8
|
+
var set = function set(newValue) {
|
|
9
|
+
value = newValue;
|
|
10
|
+
listeners.forEach(function (listener) {
|
|
11
|
+
return listener();
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
get: function get() {
|
|
16
|
+
return value;
|
|
17
|
+
},
|
|
18
|
+
set: set,
|
|
19
|
+
subscribe: function subscribe(listener) {
|
|
20
|
+
listeners.add(listener);
|
|
21
|
+
return function () {
|
|
22
|
+
listeners["delete"](listener);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
var useSnapshot = function useSnapshot(state) {
|
|
29
|
+
var value = shim.useSyncExternalStore(state.subscribe, state.get, state.get);
|
|
30
|
+
return value;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.state = state;
|
|
34
|
+
exports.useSnapshot = useSnapshot;
|
package/dist/es/index.js
ADDED
package/dist/es/react.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var state = function state(initialValue) {
|
|
2
|
+
var value = initialValue;
|
|
3
|
+
var listeners = new Set();
|
|
4
|
+
var set = function set(newValue) {
|
|
5
|
+
value = newValue;
|
|
6
|
+
listeners.forEach(function (listener) {
|
|
7
|
+
return listener();
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
get: function get() {
|
|
12
|
+
return value;
|
|
13
|
+
},
|
|
14
|
+
set: set,
|
|
15
|
+
subscribe: function subscribe(listener) {
|
|
16
|
+
listeners.add(listener);
|
|
17
|
+
return function () {
|
|
18
|
+
listeners["delete"](listener);
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { state };
|
package/package.json
CHANGED
|
@@ -1,11 +1,62 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reactish-state",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "",
|
|
5
|
-
"
|
|
5
|
+
"author": "Zheng Song",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "dist/cjs/index.js",
|
|
8
|
+
"module": "dist/es/index.js",
|
|
9
|
+
"types": "types/index.d.ts",
|
|
10
|
+
"sideEffects": false,
|
|
11
|
+
"files": [
|
|
12
|
+
"dist/",
|
|
13
|
+
"types/"
|
|
14
|
+
],
|
|
6
15
|
"scripts": {
|
|
7
|
-
"
|
|
16
|
+
"start": "run-p watch \"types -- --watch\"",
|
|
17
|
+
"bundle": "rollup -c",
|
|
18
|
+
"watch": "rollup -c -w",
|
|
19
|
+
"clean": "rm -Rf dist types",
|
|
20
|
+
"post-build": "rm -Rf types/__tests__",
|
|
21
|
+
"types": "tsc",
|
|
22
|
+
"lint": "eslint .",
|
|
23
|
+
"lint:fix": "eslint --fix .",
|
|
24
|
+
"pret": "prettier -c .",
|
|
25
|
+
"pret:fix": "prettier -w .",
|
|
26
|
+
"build": "run-s pret clean lint types bundle post-build"
|
|
8
27
|
},
|
|
9
|
-
"
|
|
10
|
-
|
|
28
|
+
"peerDependencies": {
|
|
29
|
+
"react": "^16.8 || ^17.0 || ^18.0",
|
|
30
|
+
"react-dom": "^16.8 || ^17.0 || ^18.0"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"use-sync-external-store": "^1.2.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@babel/core": "^7.19.6",
|
|
37
|
+
"@babel/preset-env": "^7.19.4",
|
|
38
|
+
"@babel/preset-typescript": "^7.18.6",
|
|
39
|
+
"@rollup/plugin-babel": "^6.0.0",
|
|
40
|
+
"@rollup/plugin-node-resolve": "^15.0.0",
|
|
41
|
+
"@types/jest": "^29.1.2",
|
|
42
|
+
"@types/react": "^18.0.24",
|
|
43
|
+
"@types/use-sync-external-store": "^0.0.3",
|
|
44
|
+
"@typescript-eslint/eslint-plugin": "^5.40.1",
|
|
45
|
+
"@typescript-eslint/parser": "^5.40.1",
|
|
46
|
+
"babel-plugin-pure-annotations": "^0.1.2",
|
|
47
|
+
"eslint": "^8.25.0",
|
|
48
|
+
"eslint-config-prettier": "^8.5.0",
|
|
49
|
+
"eslint-plugin-jest": "^27.1.3",
|
|
50
|
+
"eslint-plugin-react": "^7.31.10",
|
|
51
|
+
"eslint-plugin-react-hooks": "^4.6.0",
|
|
52
|
+
"eslint-plugin-react-hooks-addons": "^0.3.1",
|
|
53
|
+
"jest": "^29.2.2",
|
|
54
|
+
"jest-environment-jsdom": "^29.2.2",
|
|
55
|
+
"npm-run-all": "^4.1.5",
|
|
56
|
+
"prettier": "^2.7.1",
|
|
57
|
+
"react": "^18.2.0",
|
|
58
|
+
"react-dom": "^18.2.0",
|
|
59
|
+
"rollup": "^3.2.3",
|
|
60
|
+
"typescript": "^4.8.4"
|
|
61
|
+
}
|
|
11
62
|
}
|
package/types/index.d.ts
ADDED
package/types/react.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare type Listener = () => void;
|
|
2
|
+
declare const state: <T>(initialValue: T) => {
|
|
3
|
+
get: () => T;
|
|
4
|
+
set: (newValue: T) => void;
|
|
5
|
+
subscribe: (listener: Listener) => () => void;
|
|
6
|
+
};
|
|
7
|
+
declare type State<T> = ReturnType<typeof state<T>>;
|
|
8
|
+
export { state, State };
|