reactjs-signal 2.0.1 → 2.0.3

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/dist/index.d.ts CHANGED
@@ -137,14 +137,36 @@ declare function useSetSignal<T>(alienSignal: TWritableSignal<T>): (val: T | ((o
137
137
  declare function useSignalEffect(fn: () => void): void;
138
138
  /**
139
139
  * React hook to initialize a signal with a value when hydrating from server.
140
- * @param alienSignal
141
- * @param value
142
- * @returns
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const countSignal = createSignal(0);
144
+ * useHydrateSignal(countSignal, 10);
145
+ * ```
143
146
  *
144
147
  * @template T - The type of the signal value.
145
148
  * @param {TWritableSignal<T>} alienSignal - The signal to hydrate.
146
149
  * @param {T} value - The value to hydrate the signal with.
147
150
  */
148
151
  declare function useHydrateSignal<T>(alienSignal: TWritableSignal<T>, value: T): void;
152
+ /**
153
+ * Utility function to get the current value and setter of an Alien Signal.
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const countSignal = createSignal(0);
158
+ * const { value, setValue } = getSignal(countSignal);
159
+ * console.log(value()); // current value
160
+ * setValue(10); // set value to 10
161
+ * ```
162
+ *
163
+ * @template T - The type of the signal value.
164
+ * @param {TWritableSignal<T>} alienSignal - The signal to read/write.
165
+ * @returns {{ value: () => T; setValue: (val: T | ((oldVal: T) => T)) => void }} An object with `value` and `setValue`.
166
+ */
167
+ declare function getSignal<T>(alienSignal: TWritableSignal<T>): {
168
+ value: () => T;
169
+ setValue: (val: T | ((oldVal: T) => T)) => void;
170
+ };
149
171
 
150
- export { type TWritableSignal, createComputed, createEffect, createSignal, createSignalStorage, useHydrateSignal, useSetSignal, useSignal, useSignalEffect, useSignalValue };
172
+ export { type TWritableSignal, createComputed, createEffect, createSignal, createSignalStorage, getSignal, useHydrateSignal, useSetSignal, useSignal, useSignalEffect, useSignalValue };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {useSyncExternalStore,useEffect}from'react';import {signal,computed,effect}from'alien-signals';var a=new WeakMap;function l(t){let e=a.get(t);return e||(e=new WeakSet,a.set(t,e)),e}function d(t){return signal(t)}function y(t,e){let o=localStorage.getItem(t),r;if(o)try{r=JSON.parse(o);}catch(c){console.error(`Error parsing localStorage for key "${t}", using initial value.`,c),r=e;}else r=e;let n=d(r);return p(()=>{localStorage.setItem(t,JSON.stringify(n()));}),n}function W(t){return computed(t)}function p(t){return effect(t)}function x(t){return [useSyncExternalStore(r=>{let n=effect(()=>{t(),r();});return ()=>n()},()=>t(),()=>t()),r=>{t(typeof r=="function"?r(t()):r);}]}function b(t){return useSyncExternalStore(e=>{let o=effect(()=>{t(),e();});return ()=>o()},()=>t(),()=>t())}function m(t){return e=>{t(typeof e=="function"?e(t()):e);}}function v(t){useEffect(()=>{let e=effect(t);return ()=>e()},[]);}function V(t,e){let o=l(t);o.has(t)||(o.add(t),t(e));}export{W as createComputed,p as createEffect,d as createSignal,y as createSignalStorage,V as useHydrateSignal,m as useSetSignal,x as useSignal,v as useSignalEffect,b as useSignalValue};
1
+ import {useSyncExternalStore,useEffect}from'react';import {signal,computed,effect}from'alien-signals';var a=new WeakMap;function l(t){let e=a.get(t);return e||(e=new WeakSet,a.set(t,e)),e}function d(t){return signal(t)}function y(t,e){let r=localStorage.getItem(t),o;if(r)try{o=JSON.parse(r);}catch(c){console.error(`Error parsing localStorage for key "${t}", using initial value.`,c),o=e;}else o=e;let T=d(o);return p(()=>{localStorage.setItem(t,JSON.stringify(T()));}),T}function W(t){return computed(t)}function p(t){return effect(t)}function x(t){return [useSyncExternalStore(o=>{let T=effect(()=>{t(),o();});return ()=>T()},()=>t(),()=>t()),o=>{t(typeof o=="function"?o(t()):o);}]}function V(t){return useSyncExternalStore(e=>{let r=effect(()=>{t(),e();});return ()=>r()},()=>t(),()=>t())}function b(t){return e=>{t(typeof e=="function"?e(t()):e);}}function m(t){useEffect(()=>{let e=effect(t);return ()=>e()},[]);}function v(t,e){let r=l(t);r.has(t)||(r.add(t),t(e));}function h(t){return {value:()=>t(),setValue:r=>{t(typeof r=="function"?r(t()):r);}}}export{W as createComputed,p as createEffect,d as createSignal,y as createSignalStorage,h as getSignal,v as useHydrateSignal,b as useSetSignal,x as useSignal,m as useSignalEffect,V as useSignalValue};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "reactjs-signal",
3
3
  "type": "module",
4
- "version": "2.0.1",
4
+ "version": "2.0.3",
5
5
  "description": "",
6
6
  "author": "",
7
7
  "license": "ISC",
@@ -30,20 +30,20 @@
30
30
  "files": [
31
31
  "dist"
32
32
  ],
33
+ "scripts": {
34
+ "build": "tsup",
35
+ "dev": "tsup --watch"
36
+ },
33
37
  "dependencies": {
34
- "alien-signals": "^2.0.1"
38
+ "alien-signals": "^3.1.2"
35
39
  },
36
40
  "peerDependencies": {
37
- "alien-signals": ">=2.0.1",
41
+ "alien-signals": ">=3.1.2",
38
42
  "react": ">=18"
39
43
  },
40
44
  "devDependencies": {
41
45
  "@types/react": "^19.0.2",
42
46
  "tsup": "^8.0.1",
43
47
  "typescript": "^5.3.3"
44
- },
45
- "scripts": {
46
- "build": "tsup",
47
- "dev": "tsup --watch"
48
48
  }
49
- }
49
+ }