reactish-state 2.0.0 → 2.0.1

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.
Files changed (36) hide show
  1. package/dist/cjs/_virtual/rolldown_runtime.cjs +31 -0
  2. package/dist/cjs/index.cjs +14 -16
  3. package/dist/cjs/middleware/applyMiddleware.cjs +7 -6
  4. package/dist/cjs/middleware/immer.cjs +6 -6
  5. package/dist/cjs/middleware/index.cjs +7 -9
  6. package/dist/cjs/middleware/persist.cjs +29 -37
  7. package/dist/cjs/middleware/reduxDevtools.cjs +23 -32
  8. package/dist/cjs/plugin/applyPlugin.cjs +5 -2
  9. package/dist/cjs/plugin/index.cjs +5 -7
  10. package/dist/cjs/plugin/reduxDevtools.cjs +19 -24
  11. package/dist/cjs/react/shim.cjs +14 -4
  12. package/dist/cjs/react/useSelector.cjs +26 -23
  13. package/dist/cjs/react/useSnapshot.cjs +9 -10
  14. package/dist/cjs/shim/index.cjs +3 -5
  15. package/dist/cjs/shim/reactShim.cjs +6 -4
  16. package/dist/cjs/utils.cjs +10 -9
  17. package/dist/cjs/vanilla/selector.cjs +27 -26
  18. package/dist/cjs/vanilla/state.cjs +35 -33
  19. package/dist/esm/index.mjs +7 -5
  20. package/dist/esm/middleware/applyMiddleware.mjs +6 -6
  21. package/dist/esm/middleware/immer.mjs +5 -5
  22. package/dist/esm/middleware/index.mjs +5 -3
  23. package/dist/esm/middleware/persist.mjs +28 -37
  24. package/dist/esm/middleware/reduxDevtools.mjs +22 -32
  25. package/dist/esm/plugin/applyPlugin.mjs +4 -2
  26. package/dist/esm/plugin/index.mjs +4 -2
  27. package/dist/esm/plugin/reduxDevtools.mjs +18 -24
  28. package/dist/esm/react/shim.mjs +5 -3
  29. package/dist/esm/react/useSelector.mjs +25 -23
  30. package/dist/esm/react/useSnapshot.mjs +9 -10
  31. package/dist/esm/shim/index.mjs +3 -1
  32. package/dist/esm/shim/reactShim.mjs +4 -2
  33. package/dist/esm/utils.mjs +9 -9
  34. package/dist/esm/vanilla/selector.mjs +26 -25
  35. package/dist/esm/vanilla/state.mjs +34 -33
  36. package/package.json +32 -36
@@ -0,0 +1,31 @@
1
+
2
+ 'use strict';
3
+ //#region rolldown:runtime
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
13
+ key = keys[i];
14
+ if (!__hasOwnProp.call(to, key) && key !== except) {
15
+ __defProp(to, key, {
16
+ get: ((k) => from[k]).bind(null, key),
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ }
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
25
+ value: mod,
26
+ enumerable: true
27
+ }) : target, mod));
28
+
29
+ //#endregion
30
+
31
+ exports.__toESM = __toESM;
@@ -1,17 +1,15 @@
1
- 'use strict';
2
-
3
- var state = require('./vanilla/state.cjs');
4
- var selector = require('./vanilla/selector.cjs');
5
- var useSnapshot = require('./react/useSnapshot.cjs');
6
- var useSelector = require('./react/useSelector.cjs');
7
- var shim = require('./react/shim.cjs');
8
-
9
1
 
10
-
11
- exports.state = state.state;
12
- exports.stateBuilder = state.stateBuilder;
13
- exports.selector = selector.selector;
14
- exports.selectorBuilder = selector.selectorBuilder;
15
- exports.useSnapshot = useSnapshot.useSnapshot;
16
- exports.useSelector = useSelector.useSelector;
17
- exports.setReactShim = shim.setReactShim;
2
+ 'use strict';
3
+ const require_state = require('./vanilla/state.cjs');
4
+ const require_selector = require('./vanilla/selector.cjs');
5
+ const require_shim = require('./react/shim.cjs');
6
+ const require_useSnapshot = require('./react/useSnapshot.cjs');
7
+ const require_useSelector = require('./react/useSelector.cjs');
8
+
9
+ exports.selector = require_selector.selector;
10
+ exports.selectorBuilder = require_selector.selectorBuilder;
11
+ exports.setReactShim = require_shim.setReactShim;
12
+ exports.state = require_state.state;
13
+ exports.stateBuilder = require_state.stateBuilder;
14
+ exports.useSelector = require_useSelector.useSelector;
15
+ exports.useSnapshot = require_useSnapshot.useSnapshot;
@@ -1,10 +1,11 @@
1
+
1
2
  'use strict';
2
3
 
3
- const applyMiddleware = (middlewares, {
4
- fromRight
5
- } = {}) => api => middlewares[fromRight ? 'reduceRight' : 'reduce']((set, middleware) => middleware ? middleware({
6
- ...api,
7
- set
4
+ //#region src/middleware/applyMiddleware.ts
5
+ const applyMiddleware = (middlewares, { fromRight } = {}) => (api) => middlewares[fromRight ? "reduceRight" : "reduce"]((set, middleware) => middleware ? middleware({
6
+ ...api,
7
+ set
8
8
  }) : set, api.set);
9
9
 
10
- exports.applyMiddleware = applyMiddleware;
10
+ //#endregion
11
+ exports.applyMiddleware = applyMiddleware;
@@ -1,9 +1,9 @@
1
- 'use strict';
2
1
 
3
- var immer$1 = require('immer');
2
+ 'use strict';
3
+ let immer = require("immer");
4
4
 
5
- const immer = ({
6
- set
7
- }) => (value, context) => set(typeof value === 'function' ? immer$1.produce(value) : value, context);
5
+ //#region src/middleware/immer.ts
6
+ const immer$1 = ({ set }) => (value, context) => set(typeof value === "function" ? (0, immer.produce)(value) : value, context);
8
7
 
9
- exports.immer = immer;
8
+ //#endregion
9
+ exports.immer = immer$1;
@@ -1,11 +1,9 @@
1
- 'use strict';
2
-
3
- var applyMiddleware = require('./applyMiddleware.cjs');
4
- var persist = require('./persist.cjs');
5
- var reduxDevtools = require('./reduxDevtools.cjs');
6
-
7
1
 
2
+ 'use strict';
3
+ const require_applyMiddleware = require('./applyMiddleware.cjs');
4
+ const require_persist = require('./persist.cjs');
5
+ const require_reduxDevtools = require('./reduxDevtools.cjs');
8
6
 
9
- exports.applyMiddleware = applyMiddleware.applyMiddleware;
10
- exports.persist = persist.persist;
11
- exports.reduxDevtools = reduxDevtools.reduxDevtools;
7
+ exports.applyMiddleware = require_applyMiddleware.applyMiddleware;
8
+ exports.persist = require_persist.persist;
9
+ exports.reduxDevtools = require_reduxDevtools.reduxDevtools;
@@ -1,41 +1,33 @@
1
+
1
2
  'use strict';
2
3
 
3
- const persist = ({
4
- prefix,
5
- getStorage = () => localStorage
6
- } = {}) => {
7
- const states = [];
8
- return {
9
- middleware: ({
10
- set,
11
- get,
12
- meta
13
- }) => {
14
- let key = meta()?.key;
15
- if (process.env.NODE_ENV !== 'production' && !key) throw new Error('[reactish-state] state should be provided with a string `key` in the config object when the `persist` middleware is used.');
16
- if (prefix) key = prefix + key;
17
- states.push([key, set]);
18
- return (...args) => {
19
- set(...args);
20
- try {
21
- getStorage().setItem(key, JSON.stringify(get()));
22
- } catch (_unused) {
23
- /* continue regardless of error */
24
- }
25
- };
26
- },
27
- hydrate: () => {
28
- states.forEach(([key, set]) => {
29
- try {
30
- const value = getStorage().getItem(key);
31
- value != null && set(value !== 'undefined' ? JSON.parse(value) : undefined, `HYDRATE_${key}`);
32
- } catch (_unused2) {
33
- /* continue regardless of error */
34
- }
35
- });
36
- states.length = 0;
37
- }
38
- };
4
+ //#region src/middleware/persist.ts
5
+ const persist = ({ prefix, getStorage = () => localStorage } = {}) => {
6
+ const states = [];
7
+ return {
8
+ middleware: ({ set, get, meta }) => {
9
+ let key = meta()?.key;
10
+ if (process.env.NODE_ENV !== "production" && !key) throw new Error("[reactish-state] state should be provided with a string `key` in the config object when the `persist` middleware is used.");
11
+ if (prefix) key = prefix + key;
12
+ states.push([key, set]);
13
+ return (...args) => {
14
+ set(...args);
15
+ try {
16
+ getStorage().setItem(key, JSON.stringify(get()));
17
+ } catch {}
18
+ };
19
+ },
20
+ hydrate: () => {
21
+ states.forEach(([key, set]) => {
22
+ try {
23
+ const value = getStorage().getItem(key);
24
+ if (value != null) set(value !== "undefined" ? JSON.parse(value) : void 0, `HYDRATE_${key}`);
25
+ } catch {}
26
+ });
27
+ states.length = 0;
28
+ }
29
+ };
39
30
  };
40
31
 
41
- exports.persist = persist;
32
+ //#endregion
33
+ exports.persist = persist;
@@ -1,36 +1,27 @@
1
+
1
2
  'use strict';
2
3
 
3
- const reduxDevtools = ({
4
- name
5
- } = {}) => {
6
- let devtoolsExt;
7
- if (process.env.NODE_ENV === 'production' || typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) {
8
- return;
9
- }
10
- const devtools = devtoolsExt.connect({
11
- name
12
- });
13
- const mergedState = {};
14
- return ({
15
- set,
16
- get,
17
- meta
18
- }) => {
19
- const key = meta()?.key;
20
- if (process.env.NODE_ENV !== 'production' && !key) throw new Error('[reactish-state] state should be provided with a string `key` in the config object when the `reduxDevtools` middleware is used.');
21
- mergedState[key] = get();
22
- devtools.init(mergedState);
23
- return (value, action) => {
24
- set(value, action);
25
- mergedState[key] = get();
26
- devtools.send(typeof action === 'string' ? {
27
- type: action
28
- } : action || {
29
- type: `SET_${key}`,
30
- value
31
- }, mergedState);
32
- };
33
- };
4
+ //#region src/middleware/reduxDevtools.ts
5
+ const reduxDevtools = ({ name } = {}) => {
6
+ let devtoolsExt;
7
+ if (process.env.NODE_ENV === "production" || typeof window === "undefined" || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return;
8
+ const devtools = devtoolsExt.connect({ name });
9
+ const mergedState = {};
10
+ return ({ set, get, meta }) => {
11
+ const key = meta()?.key;
12
+ if (process.env.NODE_ENV !== "production" && !key) throw new Error("[reactish-state] state should be provided with a string `key` in the config object when the `reduxDevtools` middleware is used.");
13
+ mergedState[key] = get();
14
+ devtools.init(mergedState);
15
+ return (value, action) => {
16
+ set(value, action);
17
+ mergedState[key] = get();
18
+ devtools.send(typeof action === "string" ? { type: action } : action || {
19
+ type: `SET_${key}`,
20
+ value
21
+ }, mergedState);
22
+ };
23
+ };
34
24
  };
35
25
 
36
- exports.reduxDevtools = reduxDevtools;
26
+ //#endregion
27
+ exports.reduxDevtools = reduxDevtools;
@@ -1,5 +1,8 @@
1
+
1
2
  'use strict';
2
3
 
3
- const applyPlugin = plugins => selector => plugins.forEach(plugin => plugin?.(selector));
4
+ //#region src/plugin/applyPlugin.ts
5
+ const applyPlugin = (plugins) => (selector) => plugins.forEach((plugin) => plugin?.(selector));
4
6
 
5
- exports.applyPlugin = applyPlugin;
7
+ //#endregion
8
+ exports.applyPlugin = applyPlugin;
@@ -1,9 +1,7 @@
1
- 'use strict';
2
-
3
- var applyPlugin = require('./applyPlugin.cjs');
4
- var reduxDevtools = require('./reduxDevtools.cjs');
5
-
6
1
 
2
+ 'use strict';
3
+ const require_applyPlugin = require('./applyPlugin.cjs');
4
+ const require_reduxDevtools = require('./reduxDevtools.cjs');
7
5
 
8
- exports.applyPlugin = applyPlugin.applyPlugin;
9
- exports.reduxDevtools = reduxDevtools.reduxDevtools;
6
+ exports.applyPlugin = require_applyPlugin.applyPlugin;
7
+ exports.reduxDevtools = require_reduxDevtools.reduxDevtools;
@@ -1,28 +1,23 @@
1
+
1
2
  'use strict';
2
3
 
3
- const reduxDevtools = ({
4
- name
5
- } = {}) => {
6
- let devtoolsExt;
7
- if (process.env.NODE_ENV === 'production' || typeof window === 'undefined' || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return;
8
- const devtools = devtoolsExt.connect({
9
- name
10
- });
11
- const mergedState = {};
12
- return ({
13
- get,
14
- subscribe,
15
- meta
16
- }) => {
17
- const key = meta()?.key;
18
- if (process.env.NODE_ENV !== 'production' && !key) throw new Error('[reactish-state] selector should be provided with a string `key` in the config object when the `reduxDevtools` plugin is used.');
19
- const updateState = () => {
20
- mergedState[key] = get();
21
- devtools.init(mergedState);
22
- };
23
- updateState();
24
- subscribe(updateState);
25
- };
4
+ //#region src/plugin/reduxDevtools.ts
5
+ const reduxDevtools = ({ name } = {}) => {
6
+ let devtoolsExt;
7
+ if (process.env.NODE_ENV === "production" || typeof window === "undefined" || !(devtoolsExt = window.__REDUX_DEVTOOLS_EXTENSION__)) return;
8
+ const devtools = devtoolsExt.connect({ name });
9
+ const mergedState = {};
10
+ return ({ get, subscribe, meta }) => {
11
+ const key = meta()?.key;
12
+ if (process.env.NODE_ENV !== "production" && !key) throw new Error("[reactish-state] selector should be provided with a string `key` in the config object when the `reduxDevtools` plugin is used.");
13
+ const updateState = () => {
14
+ mergedState[key] = get();
15
+ devtools.init(mergedState);
16
+ };
17
+ updateState();
18
+ subscribe(updateState);
19
+ };
26
20
  };
27
21
 
28
- exports.reduxDevtools = reduxDevtools;
22
+ //#endregion
23
+ exports.reduxDevtools = reduxDevtools;
@@ -1,10 +1,20 @@
1
- 'use strict';
2
1
 
3
- var React = require('react');
2
+ 'use strict';
3
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
4
+ let react = require("react");
5
+ react = require_rolldown_runtime.__toESM(react);
4
6
 
5
- exports.useSyncExternalStore = React.useSyncExternalStore;
7
+ //#region src/react/shim.ts
8
+ let useSyncExternalStore = react.default.useSyncExternalStore;
6
9
  const setReactShim = ([shim]) => {
7
- exports.useSyncExternalStore = shim;
10
+ useSyncExternalStore = shim;
8
11
  };
9
12
 
13
+ //#endregion
10
14
  exports.setReactShim = setReactShim;
15
+ Object.defineProperty(exports, 'useSyncExternalStore', {
16
+ enumerable: true,
17
+ get: function () {
18
+ return useSyncExternalStore;
19
+ }
20
+ });
@@ -1,29 +1,32 @@
1
+
1
2
  'use strict';
3
+ 'use client';
2
4
 
3
- var React = require('react');
4
- var utils = require('../utils.cjs');
5
- var useSnapshot = require('./useSnapshot.cjs');
5
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
6
+ const require_utils = require('../utils.cjs');
7
+ const require_useSnapshot = require('./useSnapshot.cjs');
8
+ let react = require("react");
6
9
 
10
+ //#region src/react/useSelector.ts
7
11
  const useSelector = (selectorParamFactory, deps) => {
8
- const items = selectorParamFactory();
9
- const cutoff = items.length - 1;
10
- const selectorFunc = items[cutoff];
11
- items.length = cutoff;
12
- const [context] = React.useState(() =>
13
- // eslint-disable-next-line no-sparse-arrays
14
- [, utils.createSubscriber(items)]);
15
- return useSnapshot.useSnapshot({
16
- get: () => {
17
- const [cache] = context;
18
- const selectorValues = utils.getSelectorValues(items);
19
- const args = selectorValues.concat(deps || selectorFunc);
20
- if (cache && utils.isEqual(args, cache[0])) return cache[1];
21
- const value = selectorFunc(...selectorValues);
22
- context[0] = [args, value];
23
- return value;
24
- },
25
- subscribe: context[1]
26
- });
12
+ const items = selectorParamFactory();
13
+ const cutoff = items.length - 1;
14
+ const selectorFunc = items[cutoff];
15
+ items.length = cutoff;
16
+ const [context] = (0, react.useState)(() => [, require_utils.createSubscriber(items)]);
17
+ return require_useSnapshot.useSnapshot({
18
+ get: () => {
19
+ const [cache] = context;
20
+ const selectorValues = require_utils.getSelectorValues(items);
21
+ const args = selectorValues.concat(deps || selectorFunc);
22
+ if (cache && require_utils.isEqual(args, cache[0])) return cache[1];
23
+ const value = selectorFunc(...selectorValues);
24
+ context[0] = [args, value];
25
+ return value;
26
+ },
27
+ subscribe: context[1]
28
+ });
27
29
  };
28
30
 
29
- exports.useSelector = useSelector;
31
+ //#endregion
32
+ exports.useSelector = useSelector;
@@ -1,15 +1,14 @@
1
+
1
2
  'use strict';
3
+ 'use client';
2
4
 
3
- var shim = require('./shim.cjs');
5
+ const require_shim = require('./shim.cjs');
4
6
 
5
- const useSnapshot = ({
6
- subscribe,
7
- get
8
- }) => {
9
- if (process.env.NODE_ENV !== 'production' && !shim.useSyncExternalStore) {
10
- throw new Error('[reactish-state] Shim setup is required for React 16/17. See: https://github.com/szhsin/reactish-state/tree/master?tab=readme-ov-file#react-1617-setup');
11
- }
12
- return shim.useSyncExternalStore(subscribe, get, get);
7
+ //#region src/react/useSnapshot.ts
8
+ const useSnapshot = ({ subscribe, get }) => {
9
+ if (process.env.NODE_ENV !== "production" && !require_shim.useSyncExternalStore) throw new Error("[reactish-state] Shim setup is required for React 16/17. See: https://github.com/szhsin/reactish-state/tree/master?tab=readme-ov-file#react-1617-setup");
10
+ return require_shim.useSyncExternalStore(subscribe, get, get);
13
11
  };
14
12
 
15
- exports.useSnapshot = useSnapshot;
13
+ //#endregion
14
+ exports.useSnapshot = useSnapshot;
@@ -1,7 +1,5 @@
1
- 'use strict';
2
-
3
- var reactShim = require('./reactShim.cjs');
4
-
5
1
 
2
+ 'use strict';
3
+ const require_reactShim = require('./reactShim.cjs');
6
4
 
7
- exports.reactShim = reactShim.reactShim;
5
+ exports.reactShim = require_reactShim.reactShim;
@@ -1,7 +1,9 @@
1
- 'use strict';
2
1
 
3
- var shim = require('use-sync-external-store/shim/index.js');
2
+ 'use strict';
3
+ let use_sync_external_store_shim = require("use-sync-external-store/shim/index.js");
4
4
 
5
- const reactShim = [shim.useSyncExternalStore];
5
+ //#region src/shim/reactShim.ts
6
+ const reactShim = [use_sync_external_store_shim.useSyncExternalStore];
6
7
 
7
- exports.reactShim = reactShim;
8
+ //#endregion
9
+ exports.reactShim = reactShim;
@@ -1,17 +1,18 @@
1
+
1
2
  'use strict';
2
3
 
4
+ //#region src/utils.ts
3
5
  const isEqual = (args1, args2) => {
4
- for (let i = 0; i < args1.length; i++) {
5
- if (!Object.is(args1[i], args2[i])) return false;
6
- }
7
- return true;
6
+ for (let i = 0; i < args1.length; i++) if (!Object.is(args1[i], args2[i])) return false;
7
+ return true;
8
8
  };
9
- const createSubscriber = items => listener => {
10
- const unsubscribers = items.map(item => item.subscribe(listener));
11
- return () => unsubscribers.forEach(unsubscribe => unsubscribe());
9
+ const createSubscriber = (items) => (listener) => {
10
+ const unsubscribers = items.map((item) => item.subscribe(listener));
11
+ return () => unsubscribers.forEach((unsubscribe) => unsubscribe());
12
12
  };
13
- const getSelectorValues = items => items.map(item => item.get());
13
+ const getSelectorValues = (items) => items.map((item) => item.get());
14
14
 
15
+ //#endregion
15
16
  exports.createSubscriber = createSubscriber;
16
17
  exports.getSelectorValues = getSelectorValues;
17
- exports.isEqual = isEqual;
18
+ exports.isEqual = isEqual;
@@ -1,30 +1,31 @@
1
- 'use strict';
2
1
 
3
- var utils = require('../utils.cjs');
2
+ 'use strict';
3
+ const require_utils = require('../utils.cjs');
4
4
 
5
- const selectorBuilder = plugin => (...items) => {
6
- const length = items.length;
7
- const cutoff = typeof items[length - 1] === 'function' ? length - 1 : length - 2;
8
- const selectorFunc = items[cutoff];
9
- const metadata = items[cutoff + 1];
10
- items.length = cutoff;
11
- let cache;
12
- const selector = {
13
- get: () => {
14
- const args = utils.getSelectorValues(items);
15
- if (cache && utils.isEqual(args, cache[0])) return cache[1];
16
- const value = selectorFunc(...args);
17
- cache = [args, value];
18
- return value;
19
- },
20
- subscribe: utils.createSubscriber(items),
21
- meta: () => metadata
22
- };
23
- plugin?.(selector);
24
- return selector;
25
- // Wrap TSelectorMeta in a tuple to prevent conditional type distribution;
26
- };
27
- const selector = /*#__PURE__*/selectorBuilder();
5
+ //#region src/vanilla/selector.ts
6
+ const selectorBuilder = (plugin) => ((...items) => {
7
+ const length = items.length;
8
+ const cutoff = typeof items[length - 1] === "function" ? length - 1 : length - 2;
9
+ const selectorFunc = items[cutoff];
10
+ const metadata = items[cutoff + 1];
11
+ items.length = cutoff;
12
+ let cache;
13
+ const selector$1 = {
14
+ get: () => {
15
+ const args = require_utils.getSelectorValues(items);
16
+ if (cache && require_utils.isEqual(args, cache[0])) return cache[1];
17
+ const value = selectorFunc(...args);
18
+ cache = [args, value];
19
+ return value;
20
+ },
21
+ subscribe: require_utils.createSubscriber(items),
22
+ meta: () => metadata
23
+ };
24
+ plugin?.(selector$1);
25
+ return selector$1;
26
+ });
27
+ const selector = selectorBuilder();
28
28
 
29
+ //#endregion
29
30
  exports.selector = selector;
30
- exports.selectorBuilder = selectorBuilder;
31
+ exports.selectorBuilder = selectorBuilder;
@@ -1,37 +1,39 @@
1
+
1
2
  'use strict';
2
3
 
3
- const stateBuilder = middleware => (initialValue, actionBuilder, metadata) => {
4
- let value = initialValue;
5
- const listeners = new Set();
6
- const get = () => value;
7
- const readonlyState = {
8
- get,
9
- meta: () => metadata,
10
- subscribe: listener => {
11
- listeners.add(listener);
12
- return () => listeners.delete(listener);
13
- }
14
- };
15
- let set = newValue => {
16
- const nextValue = typeof newValue === 'function' ? newValue(value) : newValue;
17
- if (!Object.is(value, nextValue)) {
18
- const prevValue = value;
19
- value = nextValue;
20
- listeners.forEach(listener => listener(nextValue, prevValue));
21
- }
22
- };
23
- if (middleware) set = middleware({
24
- ...readonlyState,
25
- set
26
- });
27
- return {
28
- ...actionBuilder?.(set, get),
29
- ...readonlyState,
30
- set
31
- };
32
- // Wrap TStateMeta in a tuple to prevent conditional type distribution
33
- };
34
- const state = /*#__PURE__*/stateBuilder();
4
+ //#region src/vanilla/state.ts
5
+ const stateBuilder = (middleware) => ((initialValue, actionBuilder, metadata) => {
6
+ let value = initialValue;
7
+ const listeners = /* @__PURE__ */ new Set();
8
+ const get = () => value;
9
+ const readonlyState = {
10
+ get,
11
+ meta: () => metadata,
12
+ subscribe: (listener) => {
13
+ listeners.add(listener);
14
+ return () => listeners.delete(listener);
15
+ }
16
+ };
17
+ let set = (newValue) => {
18
+ const nextValue = typeof newValue === "function" ? newValue(value) : newValue;
19
+ if (!Object.is(value, nextValue)) {
20
+ const prevValue = value;
21
+ value = nextValue;
22
+ listeners.forEach((listener) => listener(nextValue, prevValue));
23
+ }
24
+ };
25
+ if (middleware) set = middleware({
26
+ ...readonlyState,
27
+ set
28
+ });
29
+ return {
30
+ ...actionBuilder?.(set, get),
31
+ ...readonlyState,
32
+ set
33
+ };
34
+ });
35
+ const state = stateBuilder();
35
36
 
37
+ //#endregion
36
38
  exports.state = state;
37
- exports.stateBuilder = stateBuilder;
39
+ exports.stateBuilder = stateBuilder;
@@ -1,5 +1,7 @@
1
- export { state, stateBuilder } from './vanilla/state.mjs';
2
- export { selector, selectorBuilder } from './vanilla/selector.mjs';
3
- export { useSnapshot } from './react/useSnapshot.mjs';
4
- export { useSelector } from './react/useSelector.mjs';
5
- export { setReactShim } from './react/shim.mjs';
1
+ import { state, stateBuilder } from "./vanilla/state.mjs";
2
+ import { selector, selectorBuilder } from "./vanilla/selector.mjs";
3
+ import { setReactShim } from "./react/shim.mjs";
4
+ import { useSnapshot } from "./react/useSnapshot.mjs";
5
+ import { useSelector } from "./react/useSelector.mjs";
6
+
7
+ export { selector, selectorBuilder, setReactShim, state, stateBuilder, useSelector, useSnapshot };