ustor 0.0.7 → 0.0.8
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 +5 -26
- 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,7 +188,7 @@ 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
193
|
This library can be used with Solid.js, Preact Signals, React, or any other UI framework to provide reactive signals.
|
|
194
194
|
|
|
@@ -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
|
|
@@ -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.8",
|
|
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",
|