ustor 0.0.7 → 0.0.9
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 +7 -28
- package/dist/index.es.js +2 -6
- package/dist/index.js +2 -6
- package/dist/index.min.js +1 -1
- package/dist/index.umd.js +1 -1
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ This library provides a powerful reactivity system for creating stateful objects
|
|
|
23
23
|
- [Deeply Nested Structures](#deeply-nested-structures)
|
|
24
24
|
- [Arrays and Objects](#arrays-and-objects)
|
|
25
25
|
- [Reactivity and Effects](#reactivity-and-effects)
|
|
26
|
-
- [Integration with Solid.js, Preact Signals
|
|
26
|
+
- [Integration with Solid.js, Preact Signals or any](#integration-with-solidjs-preact-signals-or-any)
|
|
27
27
|
|
|
28
28
|
## Installation
|
|
29
29
|
|
|
@@ -34,7 +34,7 @@ npm install ustor
|
|
|
34
34
|
yarn add ustor
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
This library can be integrated `solid-js`, `@preact/signals-core`, `ulive`, `usignal`, `oby`, `sinuous
|
|
37
|
+
This library can be integrated with `solid-js`, `@preact/signals-core`, `ulive`, `usignal`, `oby`, `sinuous` any other libarary you can think of for managing reactive signals.
|
|
38
38
|
|
|
39
39
|
## Setup
|
|
40
40
|
|
|
@@ -42,8 +42,8 @@ First, import the `store` function and the `api` object. You need to initialize
|
|
|
42
42
|
|
|
43
43
|
```javascript
|
|
44
44
|
import { store, api } from "./src";
|
|
45
|
-
// import { signal } from '@preact/signals-core'; // 'usignal' 'ulive'
|
|
46
45
|
import { createSignal } from "solid-js";
|
|
46
|
+
// import { signal } from '@preact/signals-core'; // 'usignal' 'ulive'
|
|
47
47
|
|
|
48
48
|
// Solid.js setup
|
|
49
49
|
api.signal = createSignal;
|
|
@@ -188,9 +188,9 @@ s.a = 4;
|
|
|
188
188
|
console.log(effectValue); // 8
|
|
189
189
|
```
|
|
190
190
|
|
|
191
|
-
## Integration with Solid.js, Preact Signals
|
|
191
|
+
## Integration with Solid.js, Preact Signals or any
|
|
192
192
|
|
|
193
|
-
This library can be used with Solid.js, Preact Signals,
|
|
193
|
+
This library can be used with Solid.js, Preact Signals, or any other UI framework to provide reactive signals.
|
|
194
194
|
|
|
195
195
|
To use Solid.js:
|
|
196
196
|
|
|
@@ -218,27 +218,6 @@ api.set = (signal, v) => (signal.value = v);
|
|
|
218
218
|
api.is = (v) => v?.peek;
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
To use React:
|
|
222
|
-
|
|
223
|
-
```javascript
|
|
224
|
-
import { useState, useMemo } from "react";
|
|
225
|
-
|
|
226
|
-
api.signal = useState;
|
|
227
|
-
api.get = (signal) => signal?.[0]();
|
|
228
|
-
api.set = (signal, value) => signal?.[1](value);
|
|
229
|
-
api.is = (v) => Array.isArray(v) && typeof v[1] === "function";
|
|
230
|
-
|
|
231
|
-
const state = store({
|
|
232
|
-
count: 0,
|
|
233
|
-
get double() {
|
|
234
|
-
//useMemo
|
|
235
|
-
return useMemo(() => {
|
|
236
|
-
return this.count * this.count;
|
|
237
|
-
}, [this.count]);
|
|
238
|
-
},
|
|
239
|
-
});
|
|
240
|
-
```
|
|
241
|
-
|
|
242
221
|
To use any signal library
|
|
243
222
|
|
|
244
223
|
```javascript
|
|
@@ -254,7 +233,7 @@ const state = store({
|
|
|
254
233
|
});
|
|
255
234
|
```
|
|
256
235
|
|
|
257
|
-
The library provides a unified API to work with different reactive systems, allowing you to switch between Solid.js, Preact Signals,
|
|
236
|
+
The library provides a unified API to work with different reactive systems, allowing you to switch between Solid.js, Preact Signals, or any other UI framework easily.
|
|
258
237
|
|
|
259
238
|
### License
|
|
260
239
|
|
|
@@ -262,4 +241,4 @@ This library is provided "as-is" under the MIT license. Feel free to use, modify
|
|
|
262
241
|
|
|
263
242
|
### Thanks and Inspiration
|
|
264
243
|
|
|
265
|
-
- **[dy](https://github.com/dy)**
|
|
244
|
+
- **[dy](https://github.com/dy)**
|
package/dist/index.es.js
CHANGED
|
@@ -2,11 +2,7 @@ let api = {},
|
|
|
2
2
|
_s = Symbol("s"),
|
|
3
3
|
is = (v) => v[_s],
|
|
4
4
|
isObject = (v) => v && v.constructor === Object,
|
|
5
|
-
resolve = (v) => Array.isArray(v)
|
|
6
|
-
? store(v)
|
|
7
|
-
: isObject(v)
|
|
8
|
-
? Object.seal(store(v))
|
|
9
|
-
: v,
|
|
5
|
+
resolve = (v) => Array.isArray(v) ? store(v) : isObject(v) ? Object.seal(store(v)) : v,
|
|
10
6
|
store = (values, proto) => {
|
|
11
7
|
if ((is(values) && !proto) || !(api.signal && api.get && api.set && api.is)) return values;
|
|
12
8
|
if (Array.isArray(values)) values.forEach((item, i) => values[i] = is(item) ? item : store(item));
|
|
@@ -15,7 +11,7 @@ let api = {},
|
|
|
15
11
|
Object.entries(Object.getOwnPropertyDescriptors(values)).forEach(
|
|
16
12
|
([key, desc]) => {
|
|
17
13
|
let signal = api.is(desc.value) ? desc.value : api.signal(resolve(desc.value)),
|
|
18
|
-
memo = desc.get ? api.memo ? api.memo(desc.get.bind(state)) : desc.get.bind(state)
|
|
14
|
+
memo = desc.get ? (api.memo ? api.memo(desc.get.bind(state)) : desc.get.bind(state)()) : signal;
|
|
19
15
|
Object.defineProperty(state, key, {
|
|
20
16
|
get: () => desc.get ? memo : api.get(memo),
|
|
21
17
|
set: desc.get ? desc.set?.bind(state) : v => api.set(signal, resolve(v)),
|
package/dist/index.js
CHANGED
|
@@ -4,11 +4,7 @@ let api = {},
|
|
|
4
4
|
_s = Symbol("s"),
|
|
5
5
|
is = (v) => v[_s],
|
|
6
6
|
isObject = (v) => v && v.constructor === Object,
|
|
7
|
-
resolve = (v) => Array.isArray(v)
|
|
8
|
-
? store(v)
|
|
9
|
-
: isObject(v)
|
|
10
|
-
? Object.seal(store(v))
|
|
11
|
-
: v,
|
|
7
|
+
resolve = (v) => Array.isArray(v) ? store(v) : isObject(v) ? Object.seal(store(v)) : v,
|
|
12
8
|
store = (values, proto) => {
|
|
13
9
|
if ((is(values) && !proto) || !(api.signal && api.get && api.set && api.is)) return values;
|
|
14
10
|
if (Array.isArray(values)) values.forEach((item, i) => values[i] = is(item) ? item : store(item));
|
|
@@ -17,7 +13,7 @@ let api = {},
|
|
|
17
13
|
Object.entries(Object.getOwnPropertyDescriptors(values)).forEach(
|
|
18
14
|
([key, desc]) => {
|
|
19
15
|
let signal = api.is(desc.value) ? desc.value : api.signal(resolve(desc.value)),
|
|
20
|
-
memo = desc.get ? api.memo ? api.memo(desc.get.bind(state)) : desc.get.bind(state)
|
|
16
|
+
memo = desc.get ? (api.memo ? api.memo(desc.get.bind(state)) : desc.get.bind(state)()) : signal;
|
|
21
17
|
Object.defineProperty(state, key, {
|
|
22
18
|
get: () => desc.get ? memo : api.get(memo),
|
|
23
19
|
set: desc.get ? desc.set?.bind(state) : v => api.set(signal, resolve(v)),
|
package/dist/index.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var ustor=function(e){let t={},r=Symbol("s"),s=e=>e[r],i=e=>e&&e.constructor===Object,a=e=>Array.isArray(e)?n(e):i(e)?Object.seal(n(e)):e,n=(e,o)=>{if(s(e)&&!o||!(t.signal&&t.get&&t.set&&t.is))return e;if(Array.isArray(e)&&e.forEach(((t,r)=>e[r]=s(t)?t:n(t))),i(e)){let s=Object.create(o||Object.getPrototypeOf(e));return Object.entries(Object.getOwnPropertyDescriptors(e)).forEach((([e,r])=>{let i=t.is(r.value)?r.value:t.signal(a(r.value)),n=r.get?t.memo?t.memo(r.get.bind(s)):r.get.bind(s)():i;Object.defineProperty(s,e,{get:()=>r.get?n:t.get(n),set:r.get?r.set?.bind(s):e=>t.set(i,a(e)),enumerable:!0})})),Object.defineProperty(s,r,{value:!0}),s}return e};return e.api=t,e.is=s,e.store=n,e}({});
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ustor={})}(this,(function(e){let t={},r=Symbol("s"),o=e=>e[r],i=e=>e&&e.constructor===Object,n=e=>Array.isArray(e)?s(e):i(e)?Object.seal(s(e)):e,s=(e,f)=>{if(o(e)&&!f||!(t.signal&&t.get&&t.set&&t.is))return e;if(Array.isArray(e)&&e.forEach(((t,r)=>e[r]=o(t)?t:s(t))),i(e)){let o=Object.create(f||Object.getPrototypeOf(e));return Object.entries(Object.getOwnPropertyDescriptors(e)).forEach((([e,r])=>{let i=t.is(r.value)?r.value:t.signal(n(r.value)),s=r.get?t.memo?t.memo(r.get.bind(o)):r.get.bind(o)():i;Object.defineProperty(o,e,{get:()=>r.get?s:t.get(s),set:r.get?r.set?.bind(o):e=>t.set(i,n(e)),enumerable:!0})})),Object.defineProperty(o,r,{value:!0}),o}return e};e.api=t,e.is=o,e.store=s}));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ustor",
|
|
3
|
-
"description": "A lightweight reactive store library that provides a powerful reactivity system for managing state, compatible with any UI framework, including
|
|
4
|
-
"version": "0.0.
|
|
3
|
+
"description": "A lightweight reactive store library that provides a powerful reactivity system for managing state, compatible with any UI framework, including Solid.js, and Preact Signals.",
|
|
4
|
+
"version": "0.0.9",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"source": "./src/index.js",
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -29,8 +29,12 @@
|
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@preact/signals-core": "^1.8.0",
|
|
31
31
|
"@rollup/plugin-terser": "^0.4.4",
|
|
32
|
+
"oby": "^15.1.2",
|
|
33
|
+
"reactively": "^0.0.1",
|
|
32
34
|
"rollup": "^4.24.0",
|
|
33
35
|
"rollup-plugin-bundle-size": "^1.0.3",
|
|
36
|
+
"s-js": "^0.4.9",
|
|
37
|
+
"sinuous": "^0.32.1",
|
|
34
38
|
"solid-js": "^1.9.2",
|
|
35
39
|
"ulive": "^1.0.7",
|
|
36
40
|
"vitest": "^2.1.3"
|
|
@@ -43,8 +47,6 @@
|
|
|
43
47
|
"createmutable",
|
|
44
48
|
"mutable",
|
|
45
49
|
"createstore",
|
|
46
|
-
"react",
|
|
47
|
-
"preact",
|
|
48
50
|
"solid.js",
|
|
49
51
|
"state",
|
|
50
52
|
"observable",
|