@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Cause & Effect
2
2
 
3
- Version 0.10.0
3
+ Version 0.10.1
4
4
 
5
5
  **Cause & Effect** - efficient state management with signals that sync instantly and reactively across your application.
6
6
 
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @name Cause & Effect
3
- * @version 0.10.0
3
+ * @version 0.10.1
4
4
  * @author Esther Brunner
5
5
  */
6
6
  export { UNSET, State, state, isState } from './lib/state';
package/index.js CHANGED
@@ -1 +1 @@
1
- var C=(T)=>typeof T==="function",R=(T)=>C(T)&&/^async\s+/.test(T.toString()),Y=(T)=>C(T)&&T.length<2,D=(T)=>(y)=>y instanceof T,K=D(Error),O=D(Promise);var P="Computed",I=(T,y)=>{y=y??R(T);let F=[],H,j=null,J=!0,U=()=>{if(J=!0,y)A(F)},M={[Symbol.toStringTag]:P,get:()=>{if(y)z(F);if(!y||J)B(()=>{let q=(x)=>{H=x,J=!1,j=null},N=(x)=>{j=K(x)?x:new Error(`Computed function failed: ${x}`)};try{let x=T(H);O(x)?x.then(q).catch(N):q(x)}catch(x){N(x)}},U);if(K(j))throw j;return H},map:(q)=>I(()=>q(M.get()))};return M},Q=(T)=>!!T&&typeof T==="object"&&T[Symbol.toStringTag]===P;var L,V=!1,W=[],S=(T)=>Z(T)||Q(T),k=(T,y=!1)=>S(T)?T:Y(T)?I(T,y):X(T),z=(T)=>{if(L&&!T.includes(L))T.push(L)},A=(T)=>T.forEach((y)=>V?W.push(y):y()),B=(T,y)=>{let F=L;L=y,T(),L=F},E=(T)=>{V=!0,T(),V=!1,W.forEach((y)=>y()),W.length=0};var $=Symbol();class G{T;watchers=[];constructor(T){this.value=T}get(){return z(this.watchers),this.value}set(T){if($!==T){if(Object.is(this.value,T))return;this.value=T}if(A(this.watchers),$===T)this.watchers=[]}update(T){this.set(T(this.value))}map(T){return I(()=>T(this.get()))}}var X=(T)=>new G(T),Z=(T)=>T instanceof G;var g=(T)=>{let y=()=>B(()=>{try{T()}catch(F){console.error(F)}},y);y()};export{k as toSignal,X as state,Z as isState,S as isSignal,Q as isComputed,g as effect,I as computed,E as batch,$ as UNSET,G as State};
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
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @name Cause & Effect
3
- * @version 0.10.0
3
+ * @version 0.10.1
4
4
  * @author Esther Brunner
5
5
  */
6
6
  export { UNSET, State, state, isState } from './lib/state'
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 (UNSET !== value) {
43
- if (Object.is(this.value, value)) return
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeix/cause-effect",
3
- "version": "0.10.0",
3
+ "version": "0.10.1",
4
4
  "author": "Esther Brunner",
5
5
  "main": "index.js",
6
6
  "module": "index.ts",
package/bun.lockb DELETED
Binary file