@firsthandjs/core 0.1.0 → 0.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/dist/core.d.ts CHANGED
@@ -99,5 +99,18 @@ export declare function runEffectNow(cell: Cell): void;
99
99
  export declare function releaseEffect(cell: Cell): void;
100
100
  export declare function defaultEquals<T>(equals: ((a: T, b: T) => boolean) | false | undefined): (a: unknown, b: unknown) => boolean;
101
101
  export declare function batch<T>(fn: () => T): T;
102
+ /**
103
+ * Reads once, on purpose.
104
+ *
105
+ * The starting value of an editable field, or a decision about what to build:
106
+ * both are reads that should not follow their source. `snapshot` says so, which
107
+ * is what keeps strict reactivity from reporting them — and what tells a reader
108
+ * that the frozen value is the intent rather than an oversight.
109
+ *
110
+ * ```ts
111
+ * const draft = signal(snapshot(() => props.initial));
112
+ * ```
113
+ */
114
+ export declare function snapshot<T>(read: () => T): T;
102
115
  export declare function untrack<T>(fn: () => T): T;
103
116
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/dev.d.ts CHANGED
@@ -10,4 +10,20 @@
10
10
  export declare function devWarn(message: string): void;
11
11
  /** Reports an error that no boundary handled, so it reaches `window.onerror`. */
12
12
  export declare function reportUncaught(error: unknown): void;
13
+ export declare function setStrictReactivity(on: boolean): void;
14
+ export declare function devEnterSetup(id: string): void;
15
+ export declare function devExitSetup(): void;
16
+ export declare function devEnterSnapshot(): void;
17
+ export declare function devExitSnapshot(): void;
18
+ /**
19
+ * Warns about a read whose value is taken once and then kept.
20
+ *
21
+ * Called from the read path only where nothing is subscribing. Inside a
22
+ * component setup that means the value is being copied out of the graph: the
23
+ * number is right now and will not move again, and nothing throws to say so.
24
+ *
25
+ * Reported once per read, not once per instance: a list of a thousand rows
26
+ * would otherwise print the same line a thousand times.
27
+ */
28
+ export declare function devCheckSetupRead(): void;
13
29
  //# sourceMappingURL=dev.d.ts.map
package/dist/dev.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAInD"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAInD;AAqBD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAErD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAoBxC"}
@@ -1,4 +1,10 @@
1
1
  /** Production stub for `dev.ts`. Aliased in by the build; see `dev.ts`. */
2
2
  export declare function devWarn(_message: string): void;
3
3
  export declare function reportUncaught(error: unknown): void;
4
+ export declare function setStrictReactivity(_on: boolean): void;
5
+ export declare function devEnterSetup(_id: string): void;
6
+ export declare function devExitSetup(): void;
7
+ export declare function devEnterSnapshot(): void;
8
+ export declare function devExitSnapshot(): void;
9
+ export declare function devCheckSetupRead(): void;
4
10
  //# sourceMappingURL=dev.prod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev.prod.d.ts","sourceRoot":"","sources":["../src/dev.prod.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAInD"}
1
+ {"version":3,"file":"dev.prod.d.ts","sourceRoot":"","sources":["../src/dev.prod.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAInD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAEtD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
package/dist/flags.d.ts CHANGED
@@ -12,8 +12,6 @@ export declare const WATCHING: number;
12
12
  export declare const DIRTY: number;
13
13
  /** A transitive dependency may have changed. Resolve by checking deps. */
14
14
  export declare const PENDING: number;
15
- /** The node is currently in the flush queue. */
16
- export declare const QUEUED: number;
17
15
  /** The node has been disposed; it must never run again. */
18
16
  export declare const DISPOSED: number;
19
17
  /** A computed has produced a value at least once. */
@@ -1 +1 @@
1
- {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oEAAoE;AACpE,eAAO,MAAM,OAAO,QAAS,CAAC;AAC9B,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,QAAS,CAAC;AAC/B,yEAAyE;AACzE,eAAO,MAAM,KAAK,QAAS,CAAC;AAC5B,0EAA0E;AAC1E,eAAO,MAAM,OAAO,QAAS,CAAC;AAC9B,gDAAgD;AAChD,eAAO,MAAM,MAAM,QAAS,CAAC;AAC7B,2DAA2D;AAC3D,eAAO,MAAM,QAAQ,QAAS,CAAC;AAC/B,qDAAqD;AACrD,eAAO,MAAM,SAAS,QAAS,CAAC;AAEhC,iEAAiE;AACjE,eAAO,MAAM,KAAK,QAAkB,CAAC"}
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oEAAoE;AACpE,eAAO,MAAM,OAAO,QAAS,CAAC;AAC9B,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,QAAS,CAAC;AAC/B,yEAAyE;AACzE,eAAO,MAAM,KAAK,QAAS,CAAC;AAC5B,0EAA0E;AAC1E,eAAO,MAAM,OAAO,QAAS,CAAC;AAC9B,2DAA2D;AAC3D,eAAO,MAAM,QAAQ,QAAS,CAAC;AAC/B,qDAAqD;AACrD,eAAO,MAAM,SAAS,QAAS,CAAC;AAEhC,iEAAiE;AACjE,eAAO,MAAM,KAAK,QAAkB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,7 +7,8 @@
7
7
  export { signal } from './signal.js';
8
8
  export { computed } from './computed.js';
9
9
  export { effect } from './effect.js';
10
- export { batch, untrack } from './core.js';
10
+ export { batch, snapshot, untrack } from './core.js';
11
+ export { setStrictReactivity } from './dev.js';
11
12
  export { onCleanup, createRoot, catchError, runWithOwner, getOwner } from './lifecycle.js';
12
13
  export { createContext, provide, useContext } from './context.js';
13
14
  export type { Context } from './context.js';
@@ -16,5 +17,6 @@ export type { CellOptions, DeepReadonly, Dispose, ReadonlyCell, ReadonlyProps, S
16
17
  export type { Owner } from './core.js';
17
18
  /** Internal surface used by `@firsthandjs/dom`; not part of the public contract. */
18
19
  export { createEffect, bind } from './effect.js';
20
+ export { devEnterSetup, devExitSetup } from './dev.js';
19
21
  export { Cell, createOwner, disposeOwner, disposeCell, handleError, own, setOwner, } from './core.js';
20
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EACV,WAAW,EACX,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,MAAM,GACP,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,oFAAoF;AACpF,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,GAAG,EACH,QAAQ,GACT,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAClE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EACV,WAAW,EACX,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,MAAM,GACP,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,oFAAoF;AACpF,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EACL,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,GAAG,EACH,QAAQ,GACT,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var c=class extends Error{constructor(){super("Reactive update did not settle: an effect keeps invalidating its own dependencies. Use untrack() or batch() to break the cycle."),this.name="FirsthandCycleError"}},h=class extends Error{constructor(n){super(`No provider for ${n}, and the context was created without a default value.`),this.name="FirsthandContextError"}},p=class extends Error{constructor(){super("Cannot assign to a computed value. Write to the signals it derives from instead."),this.name="FirsthandReadonlyError"}};function N(e){queueMicrotask(()=>{throw e})}var S=class{constructor(n,t,o,r,l){this.dep=n,this.sub=t,this.prevDep=o,this.nextDep=r,this.prevSub=l,this.nextSub=void 0}},K=Object.is,Z=()=>!1,i=class{constructor(n,t,o,r){this.flags=n,this.v=t,this.fn=o,this.equals=r,this.deps=void 0,this.depsTail=void 0,this.subs=void 0,this.subsTail=void 0,this.scope=void 0}get value(){let n=this.flags;return(n&1)!==0&&(n&12)!==0&&q(this),u!==void 0&&ne(this,u),this.v}set value(n){if((this.flags&1)!==0)throw new p;A(this,n)}peek(){let n=this.flags;return(n&1)!==0&&(n&12)!==0&&q(this),this.v}set(n){if((this.flags&1)!==0)throw new p;A(this,n(this.v))}},u,s=null,R=0,D=!1,m=0,v=[],ee=1e6;function ne(e,n){let t=n.depsTail;if(t!==void 0&&t.dep===e)return;let o=t!==void 0?t.nextDep:n.deps;if(o!==void 0&&o.dep===e){n.depsTail=o;return}let r=e.subsTail;if(r!==void 0&&r.sub===n&&te(r,n))return;let l=new S(e,n,t,o,r);n.depsTail=l,e.subsTail=l,o!==void 0&&(o.prevDep=l),t!==void 0?t.nextDep=l:n.deps=l,r!==void 0?r.nextSub=l:e.subs=l}function te(e,n){let t=n.depsTail;for(;t!==void 0;){if(t===e)return!0;t=t.prevDep}return!1}function L(e,n){let t=e.dep,o=e.prevDep,r=e.nextDep,l=e.prevSub,g=e.nextSub;return r!==void 0?r.prevDep=o:n.depsTail=o,o!==void 0?o.nextDep=r:n.deps=r,g!==void 0?g.prevSub=l:t.subsTail=l,l!==void 0?l.nextSub=g:t.subs=g,r}function B(e){e.depsTail=void 0,e.flags&=-13}function _(e){let n=e.depsTail,t=n!==void 0?n.nextDep:e.deps;for(;t!==void 0;)t=L(t,e)}function oe(e){let n=e;do{let t=n.sub,o=t.flags;(o&4)===0&&(t.flags=o|4,(o&8)===0&&((o&2)!==0?H(t):t.subs!==void 0&&M(t.subs))),n=n.nextSub}while(n!==void 0)}function M(e){let n=e;do{let t=n.sub,o=t.flags;(o&12)===0&&(t.flags=o|8,(o&2)!==0?H(t):t.subs!==void 0&&M(t.subs)),n=n.nextSub}while(n!==void 0)}function re(e){let n=e;do{let t=n.sub,o=t.flags;(o&12)===8&&(t.flags=o|4),n=n.nextSub}while(n!==void 0)}function A(e,n){if(e.equals(e.v,n))return;e.v=n;let t=e.subs;t!==void 0&&(oe(t),R===0&&V())}function q(e){if((e.flags&4)!==0||P(e)){if(!le(e))return!1;let t=e.subs;return t!==void 0&&t.nextSub!==void 0&&re(t),!0}return e.flags=e.flags&-9,!1}function P(e){let n=e.deps;for(;n!==void 0;){let t=n.dep;if((t.flags&1)!==0&&(t.flags&12)!==0&&q(t))return!0;n=n.nextDep}return!1}function le(e){let n=u,t=s;u=e,s=null,B(e);try{let o=e.fn();return(e.flags&64)!==0&&e.equals(e.v,o)?!1:(e.flags|=64,e.v=o,!0)}finally{_(e),u=n,s=t}}function H(e){(e.flags&16)===0&&(e.flags|=16,v.push(e))}function V(){if(D)return;D=!0;let e=0;try{for(;m<v.length;){let n=v[m];if(v[m++]=void 0,n.flags&=-17,(n.flags&32)===0){if(++e>ee)throw new c;(n.flags&4)!==0||P(n)?G(n):n.flags&=-9}}}finally{v.length=0,m=0,D=!1}}function G(e){let n=e.scope;j(n);let t=u,o=s;u=e,s=n,B(e);try{let r=e.fn();typeof r=="function"&&(n.disposals??=[]).push(r)}catch(r){x(r,n)}finally{_(e),u=t,s=o}}function T(e){let n={parent:e,attached:e!==null,prev:null,next:null,head:null,tail:null,disposals:null,cells:null,ctx:e!==null?e.ctx:null,handler:null};if(e!==null){let t=e.tail;n.prev=t,t!==null?t.next=n:e.head=n,e.tail=n}return n}function j(e){let n=e.head;for(;n!==null;){let r=n.next;n.attached=!1,n.prev=null,n.next=null,j(n),n=r}e.head=null,e.tail=null,e.ctx=e.parent!==null?e.parent.ctx:null;let t=e.cells;if(t!==null){for(let r=t.length-1;r>=0;r--)E(t[r]);e.cells=null}let o=e.disposals;if(o!==null){e.disposals=null;for(let r=o.length-1;r>=0;r--)try{o[r]()}catch(l){x(l,e)}}}function O(e){if(e.attached){let n=e.parent,t=e.prev,o=e.next;t!==null?t.next=o:n.head=o,o!==null?o.prev=t:n.tail=t,e.attached=!1,e.prev=null,e.next=null}j(e)}function E(e){e.flags|=32;let n=e.deps;for(;n!==void 0;)n=L(n,e);let t=e.subs;for(;t!==void 0;){let r=t.nextSub;L(t,t.sub),t=r}let o=e.scope;o!==void 0&&(O(o),e.scope=void 0,e.fn=void 0)}function x(e,n){if(e instanceof c)throw e;let t=n;for(;t!==null;){let o=t.handler;if(o!==null){try{o(e)}catch(r){x(r,t.parent)}return}t=t.parent}N(e)}function d(){return s}function f(e){let n=s;return s=e,n}function y(e){let n=s;n!==null&&(n.cells??=[]).push(e)}function Y(e){let n=T(s);return e.scope=n,n}function $(e){G(e)}function Q(e){e.flags|=32,e.fn=void 0;let n=s;n!==null&&n.cells.pop()}function a(e){return e===void 0?K:e===!1?Z:e}function ie(e){R++;try{return e()}finally{--R===0&&V()}}function se(e){let n=u;u=void 0;try{return e()}finally{u=n}}function ue(e,n){return new i(0,e,void 0,a(n?.equals))}function de(e,n){let t=new i(5,void 0,e,a(n?.equals));return y(t),t}function I(e){let n=new i(2,void 0,e,a(void 0));return y(n),Y(n),$(n),n}function fe(e){let n=I(e);n.deps===void 0&&Q(n)}function ae(e){d()===null&&void 0;let n=I(e);return()=>{E(n)}}function ce(e){let n=d();if(n===null){return}(n.disposals??=[]).push(e)}function pe(e){let n=T(d()),t=f(n);try{return e(()=>{O(n)})}finally{f(t)}}function xe(e,n){let t=T(d());t.handler=n;let o=f(t);try{let r=e();return f(o),r}catch(r){f(o),x(r,t);return}}function he(e,n){let t=f(e);try{return n()}finally{f(t)}}var z=Symbol("firsthand.ctx");function we(e,n){let t=n??"context";return{id:Symbol(t),description:t,hasDefault:arguments.length>0,defaultValue:e,fallback:void 0}}function ve(e,n){let t=d();if(t===null){`${e.description}`;return}let o=n instanceof i?n:new i(0,n,void 0,a(void 0));be(t)[e.id]=o}function Ce(e){let n=d(),t=n!==null?n.ctx:null,o=t!==null?t[e.id]:void 0;if(o!==void 0)return o;let r=e;if(!r.hasDefault)throw new h(r.description);return r.fallback??=new i(0,r.defaultValue,void 0,a(void 0))}function be(e){let n=e.ctx;if(n!==null&&n[z]===e)return n;let t=n!==null?Object.create(n):Object.create(null);return t[z]=e,e.ctx=t,t}export{i as Cell,h as FirsthandContextError,c as FirsthandCycleError,p as FirsthandReadonlyError,ie as batch,fe as bind,xe as catchError,de as computed,we as createContext,I as createEffect,T as createOwner,pe as createRoot,E as disposeCell,O as disposeOwner,ae as effect,d as getOwner,x as handleError,ce as onCleanup,y as own,ve as provide,he as runWithOwner,f as setOwner,ue as signal,se as untrack,Ce as useContext};
1
+ var c=class extends Error{constructor(){super("Reactive update did not settle: an effect keeps invalidating its own dependencies. Use untrack() or batch() to break the cycle."),this.name="FirsthandCycleError"}},h=class extends Error{constructor(n){super(`No provider for ${n}, and the context was created without a default value.`),this.name="FirsthandContextError"}},p=class extends Error{constructor(){super("Cannot assign to a computed value. Write to the signals it derives from instead."),this.name="FirsthandReadonlyError"}};function N(e){queueMicrotask(()=>{throw e})}function K(e){}function Q(e){}function Z(){}var D=class{constructor(n,t,o,r,i){this.dep=n,this.sub=t,this.prevDep=o,this.nextDep=r,this.prevSub=i,this.nextSub=void 0}},ne=Object.is,te=()=>!1,l=class{constructor(n,t,o,r){this.flags=n,this.v=t,this.fn=o,this.equals=r,this.deps=void 0,this.depsTail=void 0,this.subs=void 0,this.subsTail=void 0,this.scope=void 0}get value(){let n=this.flags;return(n&1)!==0&&(n&12)!==0&&q(this),u!==void 0?re(this,u):void 0,this.v}set value(n){if((this.flags&1)!==0)throw new p;W(this,n)}peek(){let n=this.flags;return(n&1)!==0&&(n&12)!==0&&q(this),this.v}set(n){if((this.flags&1)!==0)throw new p;W(this,n(this.v))}},u,s=null,R=0,S=!1,g=0,w=[],oe=1e6;function re(e,n){let t=n.depsTail;if(t!==void 0&&t.dep===e)return;let o=t!==void 0?t.nextDep:n.deps;if(o!==void 0&&o.dep===e){n.depsTail=o;return}let r=e.subsTail;if(r!==void 0&&r.sub===n&&ie(r,n))return;let i=new D(e,n,t,o,r);n.depsTail=i,e.subsTail=i,o!==void 0&&(o.prevDep=i),t!==void 0?t.nextDep=i:n.deps=i,r!==void 0?r.nextSub=i:e.subs=i}function ie(e,n){let t=n.depsTail;for(;t!==void 0;){if(t===e)return!0;t=t.prevDep}return!1}function L(e,n){let t=e.dep,o=e.prevDep,r=e.nextDep,i=e.prevSub,m=e.nextSub;return r!==void 0?r.prevDep=o:n.depsTail=o,o!==void 0?o.nextDep=r:n.deps=r,m!==void 0?m.prevSub=i:t.subsTail=i,i!==void 0?i.nextSub=m:t.subs=m,r}function F(e){e.depsTail=void 0,e.flags&=-13}function B(e){let n=e.depsTail,t=n!==void 0?n.nextDep:e.deps;for(;t!==void 0;)t=L(t,e)}function le(e){let n=e;do{let t=n.sub,o=t.flags;(o&4)===0&&(t.flags=o|4,(o&8)===0&&((o&2)!==0?P(t):t.subs!==void 0&&U(t.subs))),n=n.nextSub}while(n!==void 0)}function U(e){let n=e;do{let t=n.sub,o=t.flags;(o&12)===0&&(t.flags=o|8,(o&2)!==0?P(t):t.subs!==void 0&&U(t.subs)),n=n.nextSub}while(n!==void 0)}function se(e){let n=e;do{let t=n.sub,o=t.flags;(o&12)===8&&(t.flags=o|4),n=n.nextSub}while(n!==void 0)}function W(e,n){if(e.equals(e.v,n))return;e.v=n;let t=e.subs;t!==void 0&&(le(t),R===0&&H())}function q(e){if((e.flags&4)!==0||M(e)){if(!ue(e))return!1;let t=e.subs;return t!==void 0&&t.nextSub!==void 0&&se(t),!0}return e.flags=e.flags&-9,!1}function M(e){let n=e.deps;for(;n!==void 0;){let t=n.dep;if((t.flags&1)!==0&&(t.flags&12)!==0&&q(t))return!0;n=n.nextDep}return!1}function ue(e){let n=u,t=s;u=e,s=null,F(e);try{let o=e.fn();return(e.flags&32)!==0&&e.equals(e.v,o)?!1:(e.flags|=32,e.v=o,!0)}finally{B(e),u=n,s=t}}function P(e){w.push(e)}function H(){if(S)return;S=!0;let e=0;try{for(;g<w.length;){let n=w[g];if(w[g++]=void 0,(n.flags&16)===0){if(++e>oe)throw new c;(n.flags&4)!==0||M(n)?V(n):n.flags&=-9}}}finally{w.length=0,g=0,S=!1}}function V(e){let n=e.scope;j(n);let t=u,o=s;u=e,s=n,F(e);try{let r=e.fn();typeof r=="function"&&(n.disposals??=[]).push(r)}catch(r){x(r,n)}finally{B(e),u=t,s=o}}function T(e){let n={parent:e,attached:e!==null,prev:null,next:null,head:null,tail:null,disposals:null,cells:null,ctx:e!==null?e.ctx:null,handler:null};if(e!==null){let t=e.tail;n.prev=t,t!==null?t.next=n:e.head=n,e.tail=n}return n}function j(e){let n=e.head;for(;n!==null;){let r=n.next;n.attached=!1,n.prev=null,n.next=null,j(n),n=r}e.head=null,e.tail=null,e.ctx=e.parent!==null?e.parent.ctx:null;let t=e.cells;if(t!==null){for(let r=t.length-1;r>=0;r--)E(t[r]);e.cells=null}let o=e.disposals;if(o!==null){e.disposals=null;for(let r=o.length-1;r>=0;r--)try{o[r]()}catch(i){x(i,e)}}}function O(e){if(e.attached){let n=e.parent,t=e.prev,o=e.next;t!==null?t.next=o:n.head=o,o!==null?o.prev=t:n.tail=t,e.attached=!1,e.prev=null,e.next=null}j(e)}function E(e){e.flags|=16;let n=e.deps;for(;n!==void 0;)n=L(n,e);let t=e.subs;for(;t!==void 0;){let r=t.nextSub;L(t,t.sub),t=r}let o=e.scope;o!==void 0&&(O(o),e.scope=void 0,e.fn=void 0)}function x(e,n){if(e instanceof c)throw e;let t=n;for(;t!==null;){let o=t.handler;if(o!==null){try{o(e)}catch(r){x(r,t.parent)}return}t=t.parent}N(e)}function d(){return s}function f(e){let n=s;return s=e,n}function b(e){let n=s;n!==null&&(n.cells??=[]).push(e)}function G(e){let n=T(s);return e.scope=n,n}function Y(e){V(e)}function $(e){e.flags|=16,e.fn=void 0;let n=s;n!==null&&n.cells.pop()}function a(e){return e===void 0?ne:e===!1?te:e}function de(e){R++;try{return e()}finally{--R===0&&H()}}function fe(e){try{return X(e)}finally{}}function X(e){let n=u;u=void 0;try{return e()}finally{u=n}}function ae(e,n){return new l(0,e,void 0,a(n?.equals))}function ce(e,n){let t=new l(5,void 0,e,a(n?.equals));return b(t),t}function I(e){let n=new l(2,void 0,e,a(void 0));return b(n),G(n),Y(n),n}function pe(e){let n=I(e);n.deps===void 0&&$(n)}function xe(e){d()===null&&void 0;let n=I(e);return()=>{E(n)}}function he(e){let n=d();if(n===null){return}(n.disposals??=[]).push(e)}function ve(e){let n=T(d()),t=f(n);try{return e(()=>{O(n)})}finally{f(t)}}function we(e,n){let t=T(d());t.handler=n;let o=f(t);try{let r=e();return f(o),r}catch(r){f(o),x(r,t);return}}function Ce(e,n){let t=f(e);try{return n()}finally{f(t)}}var J=Symbol("firsthand.ctx");function ye(e,n){let t=n??"context";return{id:Symbol(t),description:t,hasDefault:arguments.length>0,defaultValue:e,fallback:void 0}}function Te(e,n){let t=d();if(t===null){`${e.description}`;return}let o=n instanceof l?n:new l(0,n,void 0,a(void 0));me(t)[e.id]=o}function be(e){let n=d(),t=n!==null?n.ctx:null,o=t!==null?t[e.id]:void 0;if(o!==void 0)return o;let r=e;if(!r.hasDefault)throw new h(r.description);return r.fallback??=new l(0,r.defaultValue,void 0,a(void 0))}function me(e){let n=e.ctx;if(n!==null&&n[J]===e)return n;let t=n!==null?Object.create(n):Object.create(null);return t[J]=e,e.ctx=t,t}export{l as Cell,h as FirsthandContextError,c as FirsthandCycleError,p as FirsthandReadonlyError,de as batch,pe as bind,we as catchError,ce as computed,ye as createContext,I as createEffect,T as createOwner,ve as createRoot,Q as devEnterSetup,Z as devExitSetup,E as disposeCell,O as disposeOwner,xe as effect,d as getOwner,x as handleError,he as onCleanup,b as own,Te as provide,Ce as runWithOwner,f as setOwner,K as setStrictReactivity,ae as signal,fe as snapshot,X as untrack,be as useContext};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firsthandjs/core",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Fine-grained reactive core: signals, computeds, effects, owners and context. No DOM.",
5
5
  "license": "MIT",
6
6
  "type": "module",