@zeix/cause-effect 0.10.0 → 0.10.1
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 +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/index.ts +1 -1
- package/lib/computed.d.ts +2 -2
- package/lib/computed.ts +3 -3
- package/lib/state.d.ts +1 -1
- package/lib/state.ts +3 -5
- package/package.json +1 -1
- package/bun.lockb +0 -0
package/README.md
CHANGED
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var M=(T)=>typeof T==="function",C=(T)=>M(T)&&/^async\s+/.test(T.toString()),R=(T)=>M(T)&&T.length<2,Y=(T)=>(y)=>y instanceof T,K=Y(Error),D=Y(Promise);var O="Computed",I=(T,y)=>{y=y??C(T);let F=[],H,j=null,J=!0,U=()=>{if(J=!0,y)A(F)},Z={[Symbol.toStringTag]:O,get:()=>{if(y)z(F);if(!y||J)B(()=>{let q=(x)=>{H=x,J=!1,j=null},$=(x)=>{j=K(x)?x:new Error(`Computed function failed: ${x}`)};try{let x=T(H);D(x)?x.then(q).catch($):q(x)}catch(x){$(x)}},U);if(K(j))throw j;return H},map:(q)=>I(()=>q(Z.get()))};return Z},N=(T)=>!!T&&typeof T==="object"&&T[Symbol.toStringTag]===O;var L,Q=!1,V=[],P=(T)=>X(T)||N(T),k=(T,y=!1)=>P(T)?T:R(T)?I(T,y):W(T),z=(T)=>{if(L&&!T.includes(L))T.push(L)},A=(T)=>T.forEach((y)=>Q?V.push(y):y()),B=(T,y)=>{let F=L;L=y,T(),L=F},E=(T)=>{Q=!0,T(),Q=!1,V.forEach((y)=>y()),V.length=0};var S=Symbol();class G{T;watchers=[];constructor(T){this.value=T}get(){return z(this.watchers),this.value}set(T){if(Object.is(this.value,T))return;if(this.value=T,A(this.watchers),S===T)this.watchers=[]}update(T){this.set(T(this.value))}map(T){return I(()=>T(this.get()))}}var W=(T)=>new G(T),X=(T)=>T instanceof G;var g=(T)=>{let y=()=>B(()=>{try{T()}catch(F){console.error(F)}},y);y()};export{k as toSignal,W as state,X as isState,P as isSignal,N as isComputed,g as effect,I as computed,E as batch,S as UNSET,G as State};
|
package/index.ts
CHANGED
package/lib/computed.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export type Computed<T> = {
|
|
2
2
|
[Symbol.toStringTag]: "Computed";
|
|
3
3
|
get: () => T;
|
|
4
|
-
map: <U>(fn: (value: T) => U) => Computed<U>;
|
|
4
|
+
map: <U extends {}>(fn: (value: T) => U) => Computed<U>;
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
7
|
* Create a derived state from existing states
|
|
@@ -10,7 +10,7 @@ export type Computed<T> = {
|
|
|
10
10
|
* @param {() => T} fn - compute function to derive state
|
|
11
11
|
* @returns {Computed<T>} result of derived state
|
|
12
12
|
*/
|
|
13
|
-
export declare const computed: <T>(fn: (v?: T) => T | Promise<T>, memo?: boolean) => Computed<T>;
|
|
13
|
+
export declare const computed: <T extends {}>(fn: (v?: T) => T | Promise<T>, memo?: boolean) => Computed<T>;
|
|
14
14
|
/**
|
|
15
15
|
* Check if a value is a computed state
|
|
16
16
|
*
|
package/lib/computed.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { isAsyncFunction, isError, isPromise } from "./util"
|
|
|
6
6
|
export type Computed<T> = {
|
|
7
7
|
[Symbol.toStringTag]: "Computed"
|
|
8
8
|
get: () => T
|
|
9
|
-
map: <U>(fn: (value: T) => U) => Computed<U>
|
|
9
|
+
map: <U extends {}>(fn: (value: T) => U) => Computed<U>
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
/* === Constants === */
|
|
@@ -22,7 +22,7 @@ const TYPE_COMPUTED = 'Computed'
|
|
|
22
22
|
* @param {() => T} fn - compute function to derive state
|
|
23
23
|
* @returns {Computed<T>} result of derived state
|
|
24
24
|
*/
|
|
25
|
-
export const computed = /*#__PURE__*/ <T>(
|
|
25
|
+
export const computed = /*#__PURE__*/ <T extends {}>(
|
|
26
26
|
fn: (v?: T) => T | Promise<T>,
|
|
27
27
|
memo?: boolean
|
|
28
28
|
): Computed<T> => {
|
|
@@ -64,7 +64,7 @@ export const computed = /*#__PURE__*/ <T>(
|
|
|
64
64
|
if (isError(error)) throw error
|
|
65
65
|
return value
|
|
66
66
|
},
|
|
67
|
-
map: <U>(fn: (value: T) => U): Computed<U> =>
|
|
67
|
+
map: <U extends {}>(fn: (value: T) => U): Computed<U> =>
|
|
68
68
|
computed(() => fn(c.get())),
|
|
69
69
|
}
|
|
70
70
|
return c
|
package/lib/state.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export declare class State<T extends {}> {
|
|
|
44
44
|
* @param {(value: T) => U} fn
|
|
45
45
|
* @returns {Computed<U>} - derived state
|
|
46
46
|
*/
|
|
47
|
-
map<U>(fn: (value: T) => U): Computed<U>;
|
|
47
|
+
map<U extends {}>(fn: (value: T) => U): Computed<U>;
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* Create a new state signal
|
package/lib/state.ts
CHANGED
|
@@ -39,10 +39,8 @@ export class State<T extends {}> {
|
|
|
39
39
|
* @returns {void}
|
|
40
40
|
*/
|
|
41
41
|
set(value: T): void {
|
|
42
|
-
if (
|
|
43
|
-
|
|
44
|
-
this.value = value
|
|
45
|
-
}
|
|
42
|
+
if (Object.is(this.value, value)) return
|
|
43
|
+
this.value = value
|
|
46
44
|
notify(this.watchers)
|
|
47
45
|
|
|
48
46
|
// Setting to UNSET clears the watchers so the signal can be garbage collected
|
|
@@ -69,7 +67,7 @@ export class State<T extends {}> {
|
|
|
69
67
|
* @param {(value: T) => U} fn
|
|
70
68
|
* @returns {Computed<U>} - derived state
|
|
71
69
|
*/
|
|
72
|
-
map<U>(fn: (value: T) => U): Computed<U> {
|
|
70
|
+
map<U extends {}>(fn: (value: T) => U): Computed<U> {
|
|
73
71
|
return computed<U>(() => fn(this.get()))
|
|
74
72
|
}
|
|
75
73
|
}
|
package/package.json
CHANGED
package/bun.lockb
DELETED
|
Binary file
|