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.
@@ -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;
@@ -0,0 +1,2 @@
1
+ export { state } from './vanilla.js';
2
+ export { useSnapshot } from './react.js';
@@ -0,0 +1,8 @@
1
+ import { useSyncExternalStore } from 'use-sync-external-store/shim';
2
+
3
+ var useSnapshot = function useSnapshot(state) {
4
+ var value = useSyncExternalStore(state.subscribe, state.get, state.get);
5
+ return value;
6
+ };
7
+
8
+ export { useSnapshot };
@@ -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.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "",
5
- "main": "index.js",
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
- "test": "echo \"Error: no test specified\" && exit 1"
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
- "author": "Zheng Song",
10
- "license": "MIT"
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
  }
@@ -0,0 +1,2 @@
1
+ export { state } from './vanilla';
2
+ export { useSnapshot } from './react';
@@ -0,0 +1,7 @@
1
+ import { State } from './vanilla';
2
+ declare const useSnapshot: <T>(state: {
3
+ get: () => T;
4
+ set: (newValue: T) => void;
5
+ subscribe: (listener: () => void) => () => void;
6
+ }) => T;
7
+ export { useSnapshot };
@@ -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 };