@slimlib/store 1.1.1 → 1.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/README.md CHANGED
@@ -73,7 +73,7 @@ export function doSomething() {
73
73
  state.field = value;
74
74
  }
75
75
 
76
- export const storeName = { subscribe };
76
+ export default { subscribe };
77
77
  ```
78
78
 
79
79
  In component
@@ -99,6 +99,10 @@ The only exported function. It returns createStore factory (see next) which noti
99
99
 
100
100
  Store factory function that takes initial state and returns proxy object and store tuple. Proxy object ment to be left for actions implementations and store is for subscription for changes.
101
101
 
102
+ #### `unwrapValue(value: T): T`
103
+
104
+ Unwraps potential proxy object and returns plain object if possible or value itself.
105
+
102
106
  #### `Store<T>`
103
107
 
104
108
  ```typescript
@@ -135,6 +139,11 @@ Store factory created with `notifyAfterCreation` === `true`.
135
139
  Mixing proxied values and values from underlying object can fail for cases where code needs checking for equality.
136
140
 
137
141
  For example searching array element from underlying object in proxified array will fail.
142
+
143
+ ## Similar projects
144
+
145
+ [Valtio](https://github.com/pmndrs/valtio) - more sofisticated but similar approach, less limitations
146
+
138
147
  # License
139
148
 
140
149
  [MIT](./LICENSE)
package/dist/core.cjs CHANGED
@@ -77,3 +77,4 @@ const createStoreFactory = (notifyAfterCreation) => {
77
77
  };
78
78
 
79
79
  exports.createStoreFactory = createStoreFactory;
80
+ exports.unwrapValue = unwrapValue;
package/dist/core.d.ts CHANGED
@@ -4,4 +4,5 @@ export interface Store<T> {
4
4
  (cb: StoreCallback<T>): UnsubscribeCallback;
5
5
  (): Readonly<T>;
6
6
  }
7
+ export declare const unwrapValue: <T>(value: T) => T;
7
8
  export declare const createStoreFactory: (notifyAfterCreation: boolean) => <T extends object>(object?: T) => [T, Store<T>];
package/dist/core.mjs CHANGED
@@ -72,4 +72,4 @@ const createStoreFactory = (notifyAfterCreation) => {
72
72
  };
73
73
  };
74
74
 
75
- export { createStoreFactory };
75
+ export { createStoreFactory, unwrapValue };
package/dist/index.cjs CHANGED
@@ -7,3 +7,4 @@ var core = require('./core.cjs');
7
7
 
8
8
 
9
9
  exports.createStoreFactory = core.createStoreFactory;
10
+ exports.unwrapValue = core.unwrapValue;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export { createStoreFactory } from './core.mjs';
1
+ export { createStoreFactory, unwrapValue } from './core.mjs';
package/dist/preact.cjs CHANGED
@@ -10,7 +10,7 @@ const useStore = (store) => {
10
10
  const [, setState] = hooks.useState();
11
11
  hooks.useEffect(() => {
12
12
  return store(() => setState({}));
13
- }, []);
13
+ }, [store]);
14
14
  return store();
15
15
  };
16
16
 
package/dist/preact.mjs CHANGED
@@ -6,7 +6,7 @@ const useStore = (store) => {
6
6
  const [, setState] = useState();
7
7
  useEffect(() => {
8
8
  return store(() => setState({}));
9
- }, []);
9
+ }, [store]);
10
10
  return store();
11
11
  };
12
12
 
@@ -1,2 +1,2 @@
1
- !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("preact/hooks"),require("./core")):"function"==typeof define&&define.amd?define(["exports","preact/hooks","./core"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).slimlibStorePreact={},e.preactHooks,e.slimlibStoreCore)}(this,(function(e,o,t){"use strict";const n=t.createStoreFactory(!1);e.createStore=n,e.useStore=e=>{const[,t]=o.useState();return o.useEffect((()=>e((()=>t({})))),[]),e()},Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("preact/hooks"),require("./core")):"function"==typeof define&&define.amd?define(["exports","preact/hooks","./core"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).slimlibStorePreact={},e.preactHooks,e.slimlibStoreCore)}(this,(function(e,o,t){"use strict";const n=t.createStoreFactory(!1);e.createStore=n,e.useStore=e=>{const[,t]=o.useState();return o.useEffect((()=>e((()=>t({})))),[e]),e()},Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=preact.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preact.umd.js","sources":["../src/preact.ts"],"sourcesContent":["import { useState, useEffect } from 'preact/hooks';\nimport { createStoreFactory, Store } from './core';\n\nexport const createStore = createStoreFactory(false);\n\nexport const useStore = <T>(store: Store<T>) => {\n const [, setState] = useState<object>();\n \n useEffect(() => {\n return store(() => setState({}));\n }, []);\n \n return store();\n};\n"],"names":["createStore","createStoreFactory","store","setState","useState","useEffect"],"mappings":"uWAGaA,EAAcC,sBAAmB,8BAElBC,IACxB,OAASC,GAAYC,aAMrB,OAJAC,aAAU,IACCH,GAAM,IAAMC,EAAS,OAC7B,IAEID"}
1
+ {"version":3,"file":"preact.umd.js","sources":["../src/preact.ts"],"sourcesContent":["import { useState, useEffect } from 'preact/hooks';\nimport { createStoreFactory, Store } from './core';\n\nexport const createStore = createStoreFactory(false);\n\nexport const useStore = <T>(store: Store<T>) => {\n const [, setState] = useState<object>();\n \n useEffect(() => {\n return store(() => setState({}));\n }, [store]);\n \n return store();\n};\n"],"names":["createStore","createStoreFactory","store","setState","useState","useEffect"],"mappings":"uWAGaA,EAAcC,sBAAmB,8BAElBC,IACxB,OAASC,GAAYC,aAMrB,OAJAC,aAAU,IACCH,GAAM,IAAMC,EAAS,OAC7B,CAACD,IAEGA"}
package/dist/react.cjs CHANGED
@@ -10,7 +10,7 @@ const useStore = (store) => {
10
10
  const [, setState] = react.useState();
11
11
  react.useEffect(() => {
12
12
  return store(() => setState({}));
13
- }, []);
13
+ }, [store]);
14
14
  return store();
15
15
  };
16
16
 
package/dist/react.mjs CHANGED
@@ -6,7 +6,7 @@ const useStore = (store) => {
6
6
  const [, setState] = useState();
7
7
  useEffect(() => {
8
8
  return store(() => setState({}));
9
- }, []);
9
+ }, [store]);
10
10
  return store();
11
11
  };
12
12
 
package/dist/react.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("./core")):"function"==typeof define&&define.amd?define(["exports","react","./core"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).slimlibStoreReact={},e.react,e.slimlibStoreCore)}(this,(function(e,t,o){"use strict";const n=o.createStoreFactory(!1);e.createStore=n,e.useStore=e=>{const[,o]=t.useState();return t.useEffect((()=>e((()=>o({})))),[]),e()},Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("./core")):"function"==typeof define&&define.amd?define(["exports","react","./core"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).slimlibStoreReact={},e.react,e.slimlibStoreCore)}(this,(function(e,t,o){"use strict";const n=o.createStoreFactory(!1);e.createStore=n,e.useStore=e=>{const[,o]=t.useState();return t.useEffect((()=>e((()=>o({})))),[e]),e()},Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=react.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.umd.js","sources":["../src/react.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { createStoreFactory, Store } from './core';\n\nexport const createStore = createStoreFactory(false);\n\nexport const useStore = <T>(store: Store<T>) => {\n const [, setState] = useState<object>();\n \n useEffect(() => {\n return store(() => setState({}));\n }, []);\n \n return store();\n};\n"],"names":["createStore","createStoreFactory","store","setState","useState","useEffect"],"mappings":"kVAGaA,EAAcC,sBAAmB,8BAElBC,IACxB,OAASC,GAAYC,aAMrB,OAJAC,aAAU,IACCH,GAAM,IAAMC,EAAS,OAC7B,IAEID"}
1
+ {"version":3,"file":"react.umd.js","sources":["../src/react.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { createStoreFactory, Store } from './core';\n\nexport const createStore = createStoreFactory(false);\n\nexport const useStore = <T>(store: Store<T>) => {\n const [, setState] = useState<object>();\n \n useEffect(() => {\n return store(() => setState({}));\n }, [store]);\n \n return store();\n};\n"],"names":["createStore","createStoreFactory","store","setState","useState","useEffect"],"mappings":"kVAGaA,EAAcC,sBAAmB,8BAElBC,IACxB,OAASC,GAAYC,aAMrB,OAJAC,aAAU,IACCH,GAAM,IAAMC,EAAS,OAC7B,CAACD,IAEGA"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.1",
2
+ "version": "1.2.0",
3
3
  "license": "MIT",
4
4
  "name": "@slimlib/store",
5
5
  "author": "Konstantin Shutkin",
@@ -48,7 +48,7 @@
48
48
  "bugs": {
49
49
  "url": "https://github.com/kshutkin/slimlib/issues"
50
50
  },
51
- "homepage": "https://github.com/kshutkin/slimlib/store/README.md",
51
+ "homepage": "https://github.com/kshutkin/slimlib/blob/main/store/README.md",
52
52
  "scripts": {
53
53
  "build": "pkgbld --umd=index,preact,react,svelte",
54
54
  "test": "jest --collectCoverage",