solid-state-tools 1.1.1 → 1.3.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 +92 -39
- package/dist/atom.d.ts +34 -23
- package/dist/atom.d.ts.map +1 -1
- package/dist/atom.js +32 -15
- package/dist/atom.js.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -1,16 +1,31 @@
|
|
|
1
|
-
# Solid
|
|
1
|
+
# Solid State Tools
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
It is intended to compliment Solid JS's existing state system, not replace it.
|
|
3
|
+
Solid State Tools is a collection of simple utilities for managing [Solid JS](https://docs.solidjs.com/) state.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
All features are intended to compliment Solid JS's existing state system, building upon the existing foundation.
|
|
6
|
+
|
|
7
|
+
The package is small and only has a peer dependency of Solid JS.
|
|
8
|
+
|
|
9
|
+
# Usage
|
|
10
|
+
|
|
11
|
+
This library introduces some new primitives:
|
|
12
|
+
|
|
13
|
+
1. [atom](#atoms-atom)
|
|
14
|
+
2. [createCouple](#couples-createcouple)
|
|
15
|
+
|
|
16
|
+
And, a few shorthand functions that combine these primitives and those from Solid JS together.
|
|
17
|
+
|
|
18
|
+
1. [asig](#atomic-signals-asig)
|
|
19
|
+
2. [apair](#atomic-couples-apair)
|
|
20
|
+
|
|
21
|
+
Read the sections below for a breakdown of each utility.
|
|
7
22
|
|
|
8
23
|
## Atoms (`atom`)
|
|
9
24
|
|
|
10
25
|
Atoms combine the getter and setter of a [signal](https://docs.solidjs.com/concepts/signals) into one function.
|
|
11
26
|
|
|
12
27
|
```ts
|
|
13
|
-
const count = atom(createSignal(0));
|
|
28
|
+
const count: Atom<Signal<number>> = atom(createSignal(0));
|
|
14
29
|
|
|
15
30
|
console.log(count()); // 0
|
|
16
31
|
|
|
@@ -24,29 +39,44 @@ count((c) => c + 1);
|
|
|
24
39
|
console.log(count()); // 102
|
|
25
40
|
```
|
|
26
41
|
|
|
27
|
-
When called with no arguments, the atom acts like the signal's getter.
|
|
42
|
+
When called with no arguments, the atom acts like the signal's getter.
|
|
43
|
+
If an argument is passed, it is forwarded to the signal's setter. Note that `undefined` _is_ considered an argument and is forwarded to the setter.
|
|
28
44
|
|
|
29
|
-
Atoms simplify the boilerplate that comes with managing getters and setters
|
|
45
|
+
Atoms simplify the boilerplate that comes with managing separate getters and setters.
|
|
46
|
+
However, signals are still preferred when granular control of the getter and setter is needed.
|
|
47
|
+
Additionally, atoms incur a tiny performance cost. Thus, atoms do not replace signals. They coexist.
|
|
30
48
|
|
|
31
49
|
## Atomic signals (`asig`)
|
|
32
50
|
|
|
33
|
-
|
|
51
|
+
Creating a signal and immediately 'atomizing' it is a common pattern. The `asig` function was created for this, along with its related type `Asig`.
|
|
34
52
|
|
|
35
53
|
```ts
|
|
36
|
-
const count = asig(0);
|
|
37
|
-
// is
|
|
38
|
-
const count = atom(createSignal(0));
|
|
54
|
+
const count: Asig<number> = asig(0);
|
|
55
|
+
// is short for
|
|
56
|
+
const count: Atom<Signal<number>> = atom(createSignal(0));
|
|
39
57
|
```
|
|
40
58
|
|
|
41
|
-
##
|
|
59
|
+
## Couples (`createCouple`)
|
|
42
60
|
|
|
43
|
-
A signal can be summarized as a getter setter pair.
|
|
61
|
+
A signal can be summarized as a getter setter pair.
|
|
62
|
+
However, the setter of a Solid JS signal is more complex than it appears at first glance.
|
|
63
|
+
Why?
|
|
44
64
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
65
|
+
1. It accepts a function which transforms the previous value into the new one.
|
|
66
|
+
```ts
|
|
67
|
+
setCount(x => x + 1);
|
|
68
|
+
```
|
|
48
69
|
|
|
49
|
-
|
|
70
|
+
2. It also returns the value.
|
|
71
|
+
```ts
|
|
72
|
+
const [ _count, setCount ] = createSignal(0);
|
|
73
|
+
|
|
74
|
+
console.log(setCount(10)); // Prints: 10
|
|
75
|
+
console.log(setCount(x => x + 5)); // Prints: 15
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
All of this is to say that creating custom signal pairs can be tedious.
|
|
79
|
+
Below is an example showing the complexity involved.
|
|
50
80
|
|
|
51
81
|
```ts
|
|
52
82
|
const [ count, setCount ] = createSignal(0);
|
|
@@ -56,40 +86,48 @@ const [ double, setDouble ] = [
|
|
|
56
86
|
createMemo(() => count() * 2),
|
|
57
87
|
|
|
58
88
|
// The setter
|
|
59
|
-
(
|
|
89
|
+
(newValue: number | ((prev: number) => number)) => {
|
|
60
90
|
|
|
61
|
-
//
|
|
62
|
-
const
|
|
91
|
+
// The function case must be handled.
|
|
92
|
+
const unwrappedNewValue = (typeof newValue === "function") ? newValue(untrack(double)) : newValue;
|
|
63
93
|
|
|
64
|
-
setCount(
|
|
94
|
+
setCount(unwrappedNewValue / 2);
|
|
65
95
|
|
|
66
96
|
// And the result must be returned.
|
|
67
|
-
return
|
|
97
|
+
return unwrappedNewValue;
|
|
68
98
|
},
|
|
69
99
|
];
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
With that, all of the statements below work exactly as expected.
|
|
70
103
|
|
|
71
|
-
|
|
72
|
-
setDouble(10);
|
|
73
|
-
setDouble(x => x + 1);
|
|
104
|
+
```ts
|
|
105
|
+
setDouble(10); // double: 10, count: 5
|
|
106
|
+
setDouble(x => x + 1); // double: 11, count: 5.5
|
|
107
|
+
console.log(setDouble(20)); // Prints: 20
|
|
74
108
|
```
|
|
75
109
|
|
|
76
|
-
|
|
110
|
+
But, wouldn't it be convenient if we could skip the crusty boilerplate?
|
|
77
111
|
|
|
78
|
-
Enter
|
|
112
|
+
**Enter the `createCouple` utility**
|
|
113
|
+
|
|
114
|
+
It accepts a getter and a co-setter and returns a signal.
|
|
115
|
+
A co-setter is similar to a setter, except that it doesn't take a function nor does it return a value.
|
|
116
|
+
Basically, it's the previous example without the boilerplate. See the following example:
|
|
79
117
|
|
|
80
118
|
```ts
|
|
81
119
|
const [ count, setCount ] = createSignal(0);
|
|
82
120
|
|
|
83
|
-
const [ double, setDouble ] = createCouple(
|
|
121
|
+
const [ double, setDouble ] = createCouple(
|
|
84
122
|
() => count() * 2,
|
|
85
123
|
|
|
86
|
-
(
|
|
87
|
-
// Notice how we don't need to handle `
|
|
88
|
-
setCount(
|
|
124
|
+
(newValue) => {
|
|
125
|
+
// Notice how we don't need to handle `newValue` being a function here.
|
|
126
|
+
setCount(newValue / 2);
|
|
89
127
|
|
|
90
|
-
// Nor do we need to return
|
|
128
|
+
// Nor do we need to return anything.
|
|
91
129
|
},
|
|
92
|
-
|
|
130
|
+
);
|
|
93
131
|
|
|
94
132
|
// Yet, we can still pass a function in.
|
|
95
133
|
setDouble(x => x + 2);
|
|
@@ -99,16 +137,31 @@ console.log(double(), count()); // 2 1
|
|
|
99
137
|
console.log(setDouble(10), count()); // 10 5
|
|
100
138
|
```
|
|
101
139
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
140
|
+
Much better, right?
|
|
141
|
+
|
|
142
|
+
> [!NOTE]
|
|
143
|
+
> The getter passed to `createCouple` is always memoized.
|
|
144
|
+
> This has the consequence that the getter is invoked immediately during creation of the couple.
|
|
105
145
|
|
|
106
|
-
|
|
146
|
+
By the way! A `createCouple` call, like any expression that evaluates to a signal, can be converted into an atom so that the getter and setter are merged into one.
|
|
107
147
|
|
|
108
148
|
```ts
|
|
109
149
|
const double = atom(createCouple(/* ... */));
|
|
110
150
|
```
|
|
111
151
|
|
|
112
|
-
|
|
152
|
+
## Atomic couples (`apair`)
|
|
153
|
+
|
|
154
|
+
Similar to [atomic signals](#atomic-signals-asig), wrapping a `createCouple` call with `atom` is a common enough pattern to warrant a shorthand: `apair`.
|
|
155
|
+
|
|
156
|
+
```ts
|
|
157
|
+
const double = apair(() => count() * 2, (double) => count(double / 2));
|
|
158
|
+
// is short for
|
|
159
|
+
const double = atom(createCouple(() => count() * 2, (double) => count(double / 2)));
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
# Conclusion
|
|
163
|
+
|
|
164
|
+
Perhaps you can see the power of the above primitives.
|
|
165
|
+
Not only in what they do, but also in how they combine.
|
|
113
166
|
|
|
114
|
-
|
|
167
|
+
More utilities for this library are in the works and will be coming soon.
|
package/dist/atom.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Signal, type SignalOptions } from "solid-js";
|
|
1
|
+
import { type Accessor, type Signal, type SignalOptions } from "solid-js";
|
|
2
2
|
/**
|
|
3
3
|
* Any tuple of two functions where the first accepts no arguments and the second accepts any amount.
|
|
4
4
|
*/
|
|
@@ -33,6 +33,26 @@ export type Atom<T extends SignalLike = SignalLike> = T[0] & T[1];
|
|
|
33
33
|
* ```
|
|
34
34
|
*/
|
|
35
35
|
export declare function atom<const T extends SignalLike>(value: T): Atom<T>;
|
|
36
|
+
/**
|
|
37
|
+
* Similar to a signal setter, except it doesn't accept a mapping function nor return a result.
|
|
38
|
+
*/
|
|
39
|
+
export type Cosetter<T> = (value: T) => void;
|
|
40
|
+
/**
|
|
41
|
+
* Create a signal from a cosignal.
|
|
42
|
+
*
|
|
43
|
+
* ### Example
|
|
44
|
+
* ```
|
|
45
|
+
* const [ count, setCount ] = createSignal(0);
|
|
46
|
+
* const [ double, setDouble ] = createSignalPair([
|
|
47
|
+
* () => count() * 2,
|
|
48
|
+
* (x) => void setCount(x / 2),
|
|
49
|
+
* ]);
|
|
50
|
+
*
|
|
51
|
+
* double(x => x + 2);
|
|
52
|
+
* console.log(double(), count()); // 2 1
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function createCouple<T>(getter: Accessor<T>, setter: Cosetter<T>): Signal<T>;
|
|
36
56
|
/**
|
|
37
57
|
* An atomic signal.
|
|
38
58
|
* A signal where the getter and setter are combined into one function.
|
|
@@ -40,7 +60,7 @@ export declare function atom<const T extends SignalLike>(value: T): Atom<T>;
|
|
|
40
60
|
export type Asig<T> = Atom<Signal<T>>;
|
|
41
61
|
/**
|
|
42
62
|
* Create an atomic signal.
|
|
43
|
-
*
|
|
63
|
+
* Short for `atom(createSignal(...))`.
|
|
44
64
|
*
|
|
45
65
|
* ### Example
|
|
46
66
|
* ```
|
|
@@ -53,32 +73,23 @@ export type Asig<T> = Atom<Signal<T>>;
|
|
|
53
73
|
* console.log(count()); // 20
|
|
54
74
|
* ```
|
|
55
75
|
*/
|
|
56
|
-
export declare function asig<T>():
|
|
57
|
-
export declare function asig<T>(value: T, options?: SignalOptions<T>):
|
|
58
|
-
/**
|
|
59
|
-
* A getter setter pair.
|
|
60
|
-
* While similar to `Signal`, the setter of
|
|
61
|
-
* `Cosignal` does not accept a mapping function;
|
|
62
|
-
* nor does it return a result.
|
|
63
|
-
*/
|
|
64
|
-
export type Cosignal<T> = [
|
|
65
|
-
() => T,
|
|
66
|
-
(value: T) => void
|
|
67
|
-
];
|
|
76
|
+
export declare function asig<T>(): Asig<T | undefined>;
|
|
77
|
+
export declare function asig<T>(value: T, options?: SignalOptions<T>): Asig<T>;
|
|
68
78
|
/**
|
|
69
|
-
* Create
|
|
79
|
+
* Create an atomic cosignal pair.
|
|
80
|
+
* Short for `atom(createCouple(...))`.
|
|
70
81
|
*
|
|
71
82
|
* ### Example
|
|
72
83
|
* ```
|
|
73
|
-
* const
|
|
74
|
-
* const
|
|
75
|
-
* () => count() * 2,
|
|
76
|
-
* (x) => void setCount(x / 2),
|
|
77
|
-
* ]);
|
|
84
|
+
* const count = asig(0);
|
|
85
|
+
* const double = apair(() => count() * 2, (double) => void count(double / 2));
|
|
78
86
|
*
|
|
79
|
-
*
|
|
80
|
-
* console.log(
|
|
87
|
+
* count(10);
|
|
88
|
+
* console.log(count(), double()); // 10 20
|
|
89
|
+
*
|
|
90
|
+
* double(100);
|
|
91
|
+
* console.log(count(), double()); // 50 100
|
|
81
92
|
* ```
|
|
82
93
|
*/
|
|
83
|
-
export declare function
|
|
94
|
+
export declare function apair<T>(getter: Accessor<T>, setter: Cosetter<T>): Asig<T>;
|
|
84
95
|
//# sourceMappingURL=atom.d.ts.map
|
package/dist/atom.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atom.d.ts","sourceRoot":"","sources":["../src/atom.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"atom.d.ts","sourceRoot":"","sources":["../src/atom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,QAAQ,EAAe,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAK1H;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAE,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAE,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAmBpE;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAmBnF;AAID;;;GAGG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AAC/C,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAKvE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAE1E"}
|
package/dist/atom.js
CHANGED
|
@@ -16,9 +16,6 @@ export function atom(value) {
|
|
|
16
16
|
}
|
|
17
17
|
return (...args) => (args.length === 0) ? value[0]() : value[1](...args);
|
|
18
18
|
}
|
|
19
|
-
export function asig(value, options) {
|
|
20
|
-
return atom(createSignal(value, options));
|
|
21
|
-
}
|
|
22
19
|
/**
|
|
23
20
|
* Create a signal from a cosignal.
|
|
24
21
|
*
|
|
@@ -34,25 +31,45 @@ export function asig(value, options) {
|
|
|
34
31
|
* console.log(double(), count()); // 2 1
|
|
35
32
|
* ```
|
|
36
33
|
*/
|
|
37
|
-
export function createCouple(
|
|
34
|
+
export function createCouple(getter, setter) {
|
|
38
35
|
if (isDev) {
|
|
39
36
|
// Assert that the input is valid.
|
|
40
37
|
// For production, these checks are skipped for performance.
|
|
41
|
-
if (
|
|
42
|
-
throw new Error(`expected
|
|
43
|
-
}
|
|
44
|
-
if (typeof cosignal[0] !== "function") {
|
|
45
|
-
throw new Error(`expected a getter function, but got ${typeof cosignal[0]}`);
|
|
38
|
+
if (typeof getter !== "function") {
|
|
39
|
+
throw new Error(`expected getter to be a function, but got ${typeof getter}`);
|
|
46
40
|
}
|
|
47
|
-
if (typeof
|
|
48
|
-
throw new Error(`expected a
|
|
41
|
+
if (typeof setter !== "function") {
|
|
42
|
+
throw new Error(`expected setter to be a function, but got ${typeof setter}`);
|
|
49
43
|
}
|
|
50
44
|
}
|
|
51
|
-
const get = createMemo(
|
|
52
|
-
const set = ((
|
|
53
|
-
|
|
54
|
-
|
|
45
|
+
const get = createMemo(getter);
|
|
46
|
+
const set = ((source) => {
|
|
47
|
+
const value = (typeof source === "function") ? source(untrack(get)) : source;
|
|
48
|
+
setter(value);
|
|
49
|
+
return value;
|
|
55
50
|
});
|
|
56
51
|
return [get, set];
|
|
57
52
|
}
|
|
53
|
+
export function asig(value, options) {
|
|
54
|
+
return atom(createSignal(value, options));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create an atomic cosignal pair.
|
|
58
|
+
* Short for `atom(createCouple(...))`.
|
|
59
|
+
*
|
|
60
|
+
* ### Example
|
|
61
|
+
* ```
|
|
62
|
+
* const count = asig(0);
|
|
63
|
+
* const double = apair(() => count() * 2, (double) => void count(double / 2));
|
|
64
|
+
*
|
|
65
|
+
* count(10);
|
|
66
|
+
* console.log(count(), double()); // 10 20
|
|
67
|
+
*
|
|
68
|
+
* double(100);
|
|
69
|
+
* console.log(count(), double()); // 50 100
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export function apair(getter, setter) {
|
|
73
|
+
return atom(createCouple(getter, setter));
|
|
74
|
+
}
|
|
58
75
|
//# sourceMappingURL=atom.js.map
|
package/dist/atom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atom.js","sourceRoot":"","sources":["../src/atom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"atom.js","sourceRoot":"","sources":["../src/atom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAA+D,MAAM,UAAU,CAAC;AAC1H,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAwCrC,MAAM,UAAU,IAAI,CAAC,KAAc;IAClC,IAAI,KAAK,EAAE,CAAC;QACX,kCAAkC;QAClC,4DAA4D;QAE5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sDAAsD,OAAO,KAAK,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACF,CAAC;IACD,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,KAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,KAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACrH,CAAC;AAOD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAI,MAAmB,EAAE,MAAmB;IACvE,IAAI,KAAK,EAAE,CAAC;QACX,kCAAkC;QAClC,4DAA4D;QAE5D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,6CAA6C,OAAO,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,6CAA6C,OAAO,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC;IACF,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,CAAC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAE,MAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3F,MAAM,CAAC,KAAK,CAAC,CAAC;QACd,OAAO,KAAK,CAAC;IACd,CAAC,CAAc,CAAC;IAChB,OAAO,CAAE,GAAG,EAAE,GAAG,CAAW,CAAC;AAC9B,CAAC;AA2BD,MAAM,UAAU,IAAI,CAAI,KAAqB,EAAE,OAAsC;IACpF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,KAAK,CAAI,MAAmB,EAAE,MAAmB;IAChE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solid-state-tools",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "A collection of Solid JS state utilities",
|
|
5
5
|
"author": "Reed Syllas <reedsyllas@gmail.com>",
|
|
6
6
|
"license": "ISC",
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://github.com/ReedSyllas/solid-state-tools#readme",
|
|
12
12
|
"keywords": [
|
|
13
|
+
"atom",
|
|
14
|
+
"signal",
|
|
13
15
|
"solid",
|
|
14
16
|
"state"
|
|
15
17
|
],
|