@planet-matrix/mobius-model 0.1.1 → 0.1.2
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/CHANGELOG.md +6 -0
- package/LICENSE +21 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +6 -6
- package/dist/signal/index.d.ts +3 -0
- package/dist/signal/index.d.ts.map +1 -0
- package/dist/signal/signal-core/flags.d.ts.map +1 -0
- package/dist/signal/signal-core/index.d.ts +4 -0
- package/dist/signal/signal-core/index.d.ts.map +1 -0
- package/dist/{signal-core → signal/signal-core}/primitive.d.ts +2 -2
- package/dist/signal/signal-core/primitive.d.ts.map +1 -0
- package/dist/{signal-core → signal/signal-core}/reactive-system.d.ts +1 -1
- package/dist/signal/signal-core/reactive-system.d.ts.map +1 -0
- package/dist/{signal-operators → signal/signal-operators}/index.d.ts +1 -1
- package/dist/signal/signal-operators/index.d.ts.map +1 -0
- package/package.json +55 -14
- package/scripts/build.ts +2 -2
- package/src/index.ts +1 -2
- package/src/signal/index.ts +2 -0
- package/src/signal/signal-core/index.ts +3 -0
- package/src/{signal-core → signal/signal-core}/primitive.ts +4 -4
- package/src/{signal-core → signal/signal-core}/reactive-system.ts +1 -1
- package/src/{signal-operators → signal/signal-operators}/index.ts +2 -2
- package/tests/unit/{signals → signal}/computed.spec.ts +1 -1
- package/tests/unit/{signals → signal}/effect.spec.ts +1 -1
- package/vite.config.ts +3 -0
- package/dist/signal-core/flags.d.ts.map +0 -1
- package/dist/signal-core/index.d.ts +0 -4
- package/dist/signal-core/index.d.ts.map +0 -1
- package/dist/signal-core/primitive.d.ts.map +0 -1
- package/dist/signal-core/reactive-system.d.ts.map +0 -1
- package/dist/signal-operators/index.d.ts.map +0 -1
- package/src/signal-core/index.ts +0 -3
- /package/dist/{signal-core → signal/signal-core}/flags.d.ts +0 -0
- /package/src/{signal-core → signal/signal-core}/README.md +0 -0
- /package/src/{signal-core → signal/signal-core}/flags.ts +0 -0
package/CHANGELOG.md
CHANGED
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025-present, Planet Matrix Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
// Enjoy using Example Library!
|
|
3
|
-
var Q={None:0,Mutable:1,Pending:2,Dirty:4,Watching:8,Tracking:16,TrackingReusing:32},n=(U)=>{return(U&Q.Mutable)!==0},e=(U)=>{return U===void 0?Q.Mutable:U|Q.Mutable},UU=(U)=>{return U&~Q.Mutable},HU=(U)=>{return U^Q.Mutable},jU=(U)=>{return(U&Q.Dirty)!==0},JU=(U)=>{return U===void 0?Q.Dirty:U|Q.Dirty},KU=(U)=>{return U&~Q.Dirty},QU=(U)=>{return U^Q.Dirty},XU=(U)=>{return(U&Q.Pending)!==0},YU=(U)=>{return U===void 0?Q.Pending:U|Q.Pending},ZU=(U)=>{return U&~Q.Pending},$U=(U)=>{return U^Q.Pending},zU=(U)=>{return(U&Q.Watching)!==0},qU=(U)=>{return U===void 0?Q.Watching:U|Q.Watching},EU=(U)=>{return U&~Q.Watching},MU=(U)=>{return U^Q.Watching},WU=(U)=>{return(U&Q.Tracking)!==0},mU=(U)=>{return U===void 0?Q.Tracking:U|Q.Tracking},VU=(U)=>{return U&~Q.Tracking},BU=(U)=>{return U^Q.Tracking},PU=(U)=>{return(U&Q.TrackingReusing)!==0},RU=(U)=>{return U===void 0?Q.TrackingReusing:U|Q.TrackingReusing},yU=(U)=>{return U&~Q.TrackingReusing},xU=(U)=>{return U^Q.TrackingReusing};class x{flags;constructor(){this.flags=Q.None}static clone(U){let X=new x;return X.set(U.get()),X}get(){return this.flags}set(U){return this.flags=U,this}clear(){return this.flags=Q.None,this}hasMutable(){return n(this.flags)}setMutable(){return this.flags=e(this.flags),this}unsetMutable(){return this.flags=UU(this.flags),this}toggleMutable(){return this.flags=HU(this.flags),this}hasDirty(){return jU(this.flags)}setDirty(){return this.flags=JU(this.flags),this}unsetDirty(){return this.flags=KU(this.flags),this}toggleDirty(){return this.flags=QU(this.flags),this}hasPending(){return XU(this.flags)}setPending(){return this.flags=YU(this.flags),this}unsetPending(){return this.flags=ZU(this.flags),this}togglePending(){return this.flags=$U(this.flags),this}hasWatching(){return zU(this.flags)}setWatching(){return this.flags=qU(this.flags),this}unsetWatching(){return this.flags=EU(this.flags),this}toggleWatching(){return this.flags=MU(this.flags),this}hasTracking(){return WU(this.flags)}setTracking(){return this.flags=mU(this.flags),this}unsetTracking(){return this.flags=VU(this.flags),this}toggleTracking(){return this.flags=BU(this.flags),this}hasTrackingReusing(){return PU(this.flags)}setTrackingReusing(){return this.flags=RU(this.flags),this}unsetTrackingReusing(){return this.flags=yU(this.flags),this}toggleTrackingReusing(){return this.flags=xU(this.flags),this}toString(){if(this.flags===Q.None)return"Flags(None)";let U=[];if(this.hasMutable())U.push("Mutable");if(this.hasPending())U.push("Pending");if(this.hasDirty())U.push("Dirty");if(this.hasWatching())U.push("Watching");if(this.hasTracking())U.push("Tracking");if(this.hasTrackingReusing())U.push("TrackingReusing");return`Flags(${U.join(" | ")})`}}var m=(U)=>{let X=new x;if(U!==void 0)X.set(U);return X};var
|
|
3
|
+
var Q={None:0,Mutable:1,Pending:2,Dirty:4,Watching:8,Tracking:16,TrackingReusing:32},n=(U)=>{return(U&Q.Mutable)!==0},e=(U)=>{return U===void 0?Q.Mutable:U|Q.Mutable},UU=(U)=>{return U&~Q.Mutable},HU=(U)=>{return U^Q.Mutable},jU=(U)=>{return(U&Q.Dirty)!==0},JU=(U)=>{return U===void 0?Q.Dirty:U|Q.Dirty},KU=(U)=>{return U&~Q.Dirty},QU=(U)=>{return U^Q.Dirty},XU=(U)=>{return(U&Q.Pending)!==0},YU=(U)=>{return U===void 0?Q.Pending:U|Q.Pending},ZU=(U)=>{return U&~Q.Pending},$U=(U)=>{return U^Q.Pending},zU=(U)=>{return(U&Q.Watching)!==0},qU=(U)=>{return U===void 0?Q.Watching:U|Q.Watching},EU=(U)=>{return U&~Q.Watching},MU=(U)=>{return U^Q.Watching},WU=(U)=>{return(U&Q.Tracking)!==0},mU=(U)=>{return U===void 0?Q.Tracking:U|Q.Tracking},VU=(U)=>{return U&~Q.Tracking},BU=(U)=>{return U^Q.Tracking},PU=(U)=>{return(U&Q.TrackingReusing)!==0},RU=(U)=>{return U===void 0?Q.TrackingReusing:U|Q.TrackingReusing},yU=(U)=>{return U&~Q.TrackingReusing},xU=(U)=>{return U^Q.TrackingReusing};class x{flags;constructor(){this.flags=Q.None}static clone(U){let X=new x;return X.set(U.get()),X}get(){return this.flags}set(U){return this.flags=U,this}clear(){return this.flags=Q.None,this}hasMutable(){return n(this.flags)}setMutable(){return this.flags=e(this.flags),this}unsetMutable(){return this.flags=UU(this.flags),this}toggleMutable(){return this.flags=HU(this.flags),this}hasDirty(){return jU(this.flags)}setDirty(){return this.flags=JU(this.flags),this}unsetDirty(){return this.flags=KU(this.flags),this}toggleDirty(){return this.flags=QU(this.flags),this}hasPending(){return XU(this.flags)}setPending(){return this.flags=YU(this.flags),this}unsetPending(){return this.flags=ZU(this.flags),this}togglePending(){return this.flags=$U(this.flags),this}hasWatching(){return zU(this.flags)}setWatching(){return this.flags=qU(this.flags),this}unsetWatching(){return this.flags=EU(this.flags),this}toggleWatching(){return this.flags=MU(this.flags),this}hasTracking(){return WU(this.flags)}setTracking(){return this.flags=mU(this.flags),this}unsetTracking(){return this.flags=VU(this.flags),this}toggleTracking(){return this.flags=BU(this.flags),this}hasTrackingReusing(){return PU(this.flags)}setTrackingReusing(){return this.flags=RU(this.flags),this}unsetTrackingReusing(){return this.flags=yU(this.flags),this}toggleTrackingReusing(){return this.flags=xU(this.flags),this}toString(){if(this.flags===Q.None)return"Flags(None)";let U=[];if(this.hasMutable())U.push("Mutable");if(this.hasPending())U.push("Pending");if(this.hasDirty())U.push("Dirty");if(this.hasWatching())U.push("Watching");if(this.hasTracking())U.push("Tracking");if(this.hasTrackingReusing())U.push("TrackingReusing");return`Flags(${U.join(" | ")})`}}var m=(U)=>{let X=new x;if(U!==void 0)X.set(U);return X};var S=(U)=>{let{update:X,notify:$,unwatched:V}=U,g=(j,H)=>{let J=H.tailDepLink;while(J!==void 0){if(J===j)return!0;J=J.prevDepLink}return!1},d=(j,H)=>{let J=H.tailSubLink;while(J!==void 0){if(J===j)return!0;J=J.prevSubLink}return!1},E=(j,H)=>{let J=j.tailSubLink;while(J!==void 0){if(J.sub===H)return J;J=J.prevSubLink}return},k=(j,H)=>{if(E(j,H)!==void 0===!0)return!0;if(E(H,j)!==void 0===!0)return!0;return!1},C=(j,H)=>{if(E(j,H)!==void 0===!0)return;let K={dep:j,prevSubLink:void 0,nextSubLink:void 0,sub:H,prevDepLink:void 0,nextDepLink:void 0},Y=H.tailDepLink;if(Y!==void 0)Y.nextDepLink=K,K.prevDepLink=Y;else H.headDepLink=K;H.tailDepLink=K;let Z=j.tailSubLink;if(Z!==void 0)Z.nextSubLink=K,K.prevSubLink=Z;else j.headSubLink=K;j.tailSubLink=K},t=(j,H)=>{let J=E(j,H);if(J!==void 0)M(J);let K=E(H,j);if(K!==void 0)M(K)},M=(j)=>{let{prevDepLink:H,dep:J,nextDepLink:K,prevSubLink:Y,sub:Z,nextSubLink:z}=j;if(K!==void 0)K.prevDepLink=H;else Z.tailDepLink=H;if(H!==void 0)H.nextDepLink=K;else Z.headDepLink=K;if(z!==void 0)z.prevSubLink=Y;else J.tailSubLink=Y;if(Y!==void 0)Y.nextSubLink=z;else J.headSubLink=z;if(J.headSubLink===void 0&&J.tailSubLink===void 0)V(J);j.prevDepLink=void 0,j.dep=void 0,j.nextDepLink=void 0,j.prevSubLink=void 0,j.sub=void 0,j.nextSubLink=void 0},l=(j)=>{let H=j.headDepLink;while(H!==void 0){let J=H.nextDepLink;M(H),H=J}},s=(j)=>{let H=j.headSubLink;while(H!==void 0){let J=H.nextSubLink;M(H),H=J}},N=[],B=void 0,T=()=>{return B},P=(j)=>{N.push(B),B=j},R=()=>{B=N.pop()},u=(j,H)=>{P(j);try{return H()}finally{R()}},v=(j)=>{P(j),j.flags.unsetPending().unsetDirty().setTracking()},F=(j)=>{let H=j.flags;if(H.hasTrackingReusing()===!0){let J=j?.tailDepLink?.nextDepLink;if(J!==void 0){let K=J;while(K!==void 0){let Y=K.nextDepLink;M(K),K=Y}}}H.unsetTrackingReusing().unsetTracking(),R()},a=(j,H)=>{v(j);try{return H()}finally{F(j)}},h=(j,H)=>{let J,K=H.flags;if(K.hasTracking()===!0&&K.hasTrackingReusing()===!1)K.setTrackingReusing(),H.tailDepLink=H.headDepLink,J=H.tailDepLink;else J=H.tailDepLink?.nextDepLink;if(J!==void 0&&J.dep===j)return;C(j,H)},i=(j)=>{let H=T();if(H!==void 0)h(j,H)},A=(j)=>{let H=j.headSubLink;while(H!==void 0){let J=H.sub,K=J.flags,Y=!1;if(K.hasPending()===!0&&K.hasDirty()===!1)K.setDirty().unsetPending(),Y=!0;else{H=H.nextSubLink;continue}if(Y===!0){if((K.hasWatching()===!0&&K.hasTracking()===!1)===!0)$(J)}H=H.nextSubLink}};return{isDepLinkOfNode:g,isSubLinkOfNode:d,getLinkOfNodes:E,isLinked:k,linkNode:C,unlinkNode:t,unlink:M,unlinkAllDepLinksOfNode:l,unlinkAllSubLinksOfNode:s,getActiveNodeAsSub:T,setActiveNodeAsSub:P,resetActiveNodeAsSub:R,withActiveNodeAsSub:u,startTracking:v,endTracking:F,withTracking:a,linkNodeOptimizedForTracking:h,track:i,shallowPropagate:A,deeeeepPropagate:(j)=>{let H=j.headSubLink,J=H?.nextSubLink,K=void 0;while(H!==void 0){let Y=H.sub,Z=Y.flags,z=Z.hasWatching(),q=Z.hasMutable();if(Z.hasTracking()===!1&&Z.hasDirty()===!1&&Z.hasPending()===!1)Z.setPending();else if(Z.hasTracking()===!1)z=!1,q=!1;else if(Z.hasDirty()===!1&&Z.hasPending()===!1)Z.setPending(),z=!1;else z=!1,q=!1;if(z===!0)$(Y);if(q===!0){let y=Y.headSubLink;if(y!==void 0){H=y;let p=y.nextSubLink;if(p!==void 0)K={value:J,prev:K},J=p;continue}}if(H=J,H!==void 0){J=H.nextSubLink;continue}if(K!==void 0){if(H=K.value,K=K.prev,H!==void 0)J=H.nextSubLink}}},resolvePending:(j)=>{let H=j.headDepLink,J=void 0;while(H!==void 0){let{sub:K,dep:Y}=H,Z=K.flags,z=Y.flags;if(z.hasMutable()===!0&&z.hasDirty()===!0){if(X(Y)===!0)A(Y)}else if(z.hasMutable()===!0&&z.hasPending()===!0){J={value:H,prev:J},H=Y.headDepLink;continue}if(Z.hasPending()===!0){let q=H.nextDepLink;if(q!==void 0){H=q;continue}}if(J!==void 0)H=J.value,J=J.prev,H.dep.flags.unsetPending();else{H.sub.flags.unsetPending();break}}}}};var wU=Symbol("void"),w=[],D=()=>{while(w.length!==0)w.shift().run()},W=0,FU=()=>{W=W+1},hU=()=>{if(W=W-1,W===0)D()},GU=S({update(U){return U.update()},notify(U){let X=[],$=U;while($!==void 0){if($.flags.hasWatching()===!1)break;U.notify(),X.push($);let V=$?.headSubLink?.sub;$=V instanceof _?V:void 0}w.push(...X.toReversed())},unwatched(U){return U.stop()}}),{unlinkAllDepLinksOfNode:c,withTracking:r,track:G,shallowPropagate:f,deeeeepPropagate:_U,resolvePending:b}=GU;class o{headSubLink;tailSubLink;flags;value;pendingValue;constructor(U){this.headSubLink=void 0,this.tailSubLink=void 0,this.flags=m().setMutable(),this.pendingValue=U,this.value=U}get(){let U=!1;if(this.flags.hasDirty()===!0)U=this.update();if(U===!0)f(this);return G(this),this.value}set(U){if(this.pendingValue=U,this.flags.setDirty(),_U(this),W===0)D()}update(){this.flags.unsetDirty();let U=this.value,X=this.pendingValue;return this.value=X,U!==X}stop(){}}class L{headDepLink;tailDepLink;headSubLink;tailSubLink;flags;value;getValue;constructor(U){this.headDepLink=void 0,this.tailDepLink=void 0,this.headSubLink=void 0,this.tailSubLink=void 0,this.flags=m().setMutable().setDirty(),this.value=wU,this.getValue=U}get(){let U=!1;if(this.flags.hasPending()===!0)b(this);if(this.flags.hasDirty()===!0)U=this.update();if(U===!0)f(this);return G(this),this.value}update(){return r(this,()=>{let X=this.value,$=this.getValue();return this.value=$,X!==$})}stop(){c(this),this.flags=m().setMutable().setDirty()}}class _{headDepLink;tailDepLink;headSubLink;tailSubLink;flags;fn;constructor(U){this.headDepLink=void 0,this.tailDepLink=void 0,this.headSubLink=void 0,this.tailSubLink=void 0,this.flags=m().setWatching(),this.fn=U,this.internalRun()}notify(){this.flags.unsetWatching()}run(){if(this.flags.setWatching(),this.flags.hasPending()===!0)b(this);if(this.flags.hasDirty()===!0)this.internalRun()}internalRun(){G(this),r(this,()=>{return this.fn()})}stop(){c(this),this.flags.clear()}}var I=(U)=>{return new o(U)},AU=(U)=>{return new L(U)},O=(U)=>{return new _(U)};var bU=(U)=>{let X=[];return O(()=>{X.push(U.get())}),I(X)},oU=(U,X)=>{let $=I([U.get(),X.get()]);return O(()=>{$.set([U.get(),X.get()])}),$};export{oU as zip,bU as withHistory,EU as unsetWatching,yU as unsetTrackingReusing,VU as unsetTracking,ZU as unsetPending,UU as unsetMutable,KU as unsetDirty,MU as toggleWatching,xU as toggleTrackingReusing,BU as toggleTracking,$U as togglePending,HU as toggleMutable,QU as toggleDirty,FU as startBatch,I as signal,qU as setWatching,RU as setTrackingReusing,mU as setTracking,YU as setPending,e as setMutable,JU as setDirty,zU as hasWatching,PU as hasTrackingReusing,WU as hasTracking,XU as hasPending,n as hasMutable,jU as hasDirty,m as flags,hU as endBatch,O as effect,S as createReactiveSystem,AU as computed,o as Signal,x as Flags,Q as FLAG_DICT,_ as Effect,L as Computed};
|
|
4
4
|
// Made with ♥ by the Planet Matrix team!
|
|
5
5
|
|
|
6
|
-
//# debugId=
|
|
6
|
+
//# debugId=DFFA09A32FC4BCF264756E2164756E21
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["..\\src\\signal-core\\flags.ts", "..\\src\\signal-core\\reactive-system.ts", "..\\src\\signal-core\\primitive.ts", "..\\src\\signal-operators\\index.ts"],
|
|
3
|
+
"sources": ["..\\src\\signal\\signal-core\\flags.ts", "..\\src\\signal\\signal-core\\reactive-system.ts", "..\\src\\signal\\signal-core\\primitive.ts", "..\\src\\signal\\signal-operators\\index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"export const FLAG_DICT = {\n /**\n * 当前节点没有任何特性。\n */\n None: 0,\n /**\n * 当前节点的值是可变的。值的变化可以通过此节点继续传递。\n */\n Mutable: 1,\n /**\n * 当前节点的值可能发生了变化,待确定。\n */\n Pending: 2,\n /**\n * 当前节点的值发生了变化。\n */\n Dirty: 4,\n /**\n * 当前节点正在进行观察。当上游节点的值发生变化时应该通知当前节点。\n */\n Watching: 8,\n\n /**\n * 当前节点正在进行依赖收集。\n *\n * 目前只考虑到以下用途:\n *\n * 1. 用于防止在某节点依赖收集过程中依赖发生变化导致该节点重复运行。\n * ```\n * const count = signal(0);\n * effect(() => {\n * count(count() + 1);\n * })\n * ```\n */\n Tracking: 16,\n /**\n * 当前节点正在进行依赖收集,且正在尝试复用现存连接。\n */\n TrackingReusing: 32,\n} as const;\n\nexport const hasMutable = (flags: number): boolean => {\n return (flags & FLAG_DICT.Mutable) !== 0;\n}\nexport const setMutable = (flags?: number | undefined): number => {\n return flags === undefined ? FLAG_DICT.Mutable : (flags | FLAG_DICT.Mutable);\n}\nexport const unsetMutable = (flags: number): number => {\n return flags & ~FLAG_DICT.Mutable;\n}\nexport const toggleMutable = (flags: number): number => {\n return flags ^ FLAG_DICT.Mutable;\n}\nexport const hasDirty = (flags: number): boolean => {\n return (flags & FLAG_DICT.Dirty) !== 0;\n}\nexport const setDirty = (flags?: number | undefined): number => {\n return flags === undefined ? FLAG_DICT.Dirty : (flags | FLAG_DICT.Dirty);\n}\nexport const unsetDirty = (flags: number): number => {\n return flags & ~FLAG_DICT.Dirty;\n}\nexport const toggleDirty = (flags: number): number => {\n return flags ^ FLAG_DICT.Dirty;\n}\nexport const hasPending = (flags: number): boolean => {\n return (flags & FLAG_DICT.Pending) !== 0;\n}\nexport const setPending = (flags?: number | undefined): number => {\n return flags === undefined ? FLAG_DICT.Pending : (flags | FLAG_DICT.Pending);\n}\nexport const unsetPending = (flags: number): number => {\n return flags & ~FLAG_DICT.Pending;\n}\nexport const togglePending = (flags: number): number => {\n return flags ^ FLAG_DICT.Pending;\n}\nexport const hasWatching = (flags: number): boolean => {\n return (flags & FLAG_DICT.Watching) !== 0;\n}\nexport const setWatching = (flags?: number | undefined): number => {\n return flags === undefined ? FLAG_DICT.Watching : (flags | FLAG_DICT.Watching);\n}\nexport const unsetWatching = (flags: number): number => {\n return flags & ~FLAG_DICT.Watching;\n}\nexport const toggleWatching = (flags: number): number => {\n return flags ^ FLAG_DICT.Watching;\n}\nexport const hasTracking = (flags: number): boolean => {\n return (flags & FLAG_DICT.Tracking) !== 0;\n}\nexport const setTracking = (flags?: number | undefined): number => {\n return flags === undefined ? FLAG_DICT.Tracking : (flags | FLAG_DICT.Tracking);\n}\nexport const unsetTracking = (flags: number): number => {\n return flags & ~FLAG_DICT.Tracking;\n}\nexport const toggleTracking = (flags: number): number => {\n return flags ^ FLAG_DICT.Tracking;\n}\nexport const hasTrackingReusing = (flags: number): boolean => {\n return (flags & FLAG_DICT.TrackingReusing) !== 0;\n}\nexport const setTrackingReusing = (flags?: number): number => {\n return flags === undefined ? FLAG_DICT.TrackingReusing : (flags | FLAG_DICT.TrackingReusing);\n}\nexport const unsetTrackingReusing = (flags: number): number => {\n return flags & ~FLAG_DICT.TrackingReusing;\n}\nexport const toggleTrackingReusing = (flags: number): number => {\n return flags ^ FLAG_DICT.TrackingReusing;\n}\n\nexport class Flags {\n private flags: number;\n\n constructor() {\n this.flags = FLAG_DICT.None;\n }\n\n static clone(flags: Flags): Flags {\n const newFlags = new Flags();\n newFlags.set(flags.get());\n return newFlags;\n }\n\n get(): number {\n return this.flags;\n }\n\n set(flags: number): this {\n this.flags = flags;\n return this;\n }\n\n clear(): this {\n this.flags = FLAG_DICT.None;\n return this;\n }\n\n hasMutable(): boolean {\n return hasMutable(this.flags);\n }\n setMutable(): this {\n this.flags = setMutable(this.flags);\n return this;\n }\n unsetMutable(): this {\n this.flags = unsetMutable(this.flags);\n return this;\n }\n toggleMutable(): this {\n this.flags = toggleMutable(this.flags);\n return this;\n }\n\n hasDirty(): boolean {\n return hasDirty(this.flags);\n }\n setDirty(): this {\n this.flags = setDirty(this.flags);\n return this;\n }\n unsetDirty(): this {\n this.flags = unsetDirty(this.flags);\n return this;\n }\n toggleDirty(): this {\n this.flags = toggleDirty(this.flags);\n return this;\n }\n\n hasPending(): boolean {\n return hasPending(this.flags);\n }\n setPending(): this {\n this.flags = setPending(this.flags);\n return this;\n }\n unsetPending(): this {\n this.flags = unsetPending(this.flags);\n return this;\n }\n togglePending(): this {\n this.flags = togglePending(this.flags);\n return this;\n }\n\n hasWatching(): boolean {\n return hasWatching(this.flags);\n }\n setWatching(): this {\n this.flags = setWatching(this.flags);\n return this;\n }\n unsetWatching(): this {\n this.flags = unsetWatching(this.flags);\n return this;\n }\n toggleWatching(): this {\n this.flags = toggleWatching(this.flags);\n return this;\n }\n\n hasTracking(): boolean {\n return hasTracking(this.flags);\n }\n setTracking(): this {\n this.flags = setTracking(this.flags);\n return this;\n }\n unsetTracking(): this {\n this.flags = unsetTracking(this.flags);\n return this;\n }\n toggleTracking(): this {\n this.flags = toggleTracking(this.flags);\n return this;\n }\n\n hasTrackingReusing(): boolean {\n return hasTrackingReusing(this.flags);\n }\n setTrackingReusing(): this {\n this.flags = setTrackingReusing(this.flags);\n return this;\n }\n unsetTrackingReusing(): this {\n this.flags = unsetTrackingReusing(this.flags);\n return this;\n }\n toggleTrackingReusing(): this {\n this.flags = toggleTrackingReusing(this.flags);\n return this;\n }\n\n toString(): string {\n if (this.flags === FLAG_DICT.None) {\n return 'Flags(None)';\n }\n\n const activeFlags: string[] = [];\n\n if (this.hasMutable()) {\n activeFlags.push('Mutable')\n };\n if (this.hasPending()) {\n activeFlags.push('Pending')\n };\n if (this.hasDirty()) {\n activeFlags.push('Dirty')\n };\n if (this.hasWatching()) {\n activeFlags.push('Watching')\n };\n if (this.hasTracking()) {\n activeFlags.push('Tracking')\n };\n if (this.hasTrackingReusing()) {\n activeFlags.push('TrackingReusing')\n };\n\n return `Flags(${activeFlags.join(' | ')})`;\n }\n}\n\nexport const flags = (flags?: number | undefined): Flags => {\n const f = new Flags();\n if (flags !== undefined) {\n f.set(flags);\n }\n return f;\n}\n",
|
|
6
|
-
"import type { Flags } from './flags'\n\nexport interface Node {\n /**\n * 当前节点的上游连接链中的第一个连接。\n */\n headDepLink?: Link | undefined;\n /**\n * 当前节点的上游连接链中的最后一个连接。\n */\n tailDepLink?: Link | undefined;\n\n /**\n * 当前节点的下游连接链中的第一个连接。\n */\n headSubLink?: Link | undefined;\n /**\n * 当前节点的下游连接链中的最后一个连接。\n */\n tailSubLink?: Link | undefined;\n\n /**\n * 当前节点的标记。\n */\n flags: Flags;\n}\n/**\n * 连接用于表示某个节点(下游节点)依赖了某个节点(上游节点)。\n *\n * 多个连接连在一起形成连接链,连接链只有两种情况:\n *\n * 1. 下游连接链:链中所有连接的上游节点相同,通过该链可以找到该上游节点的所有下游节点。\n * 2. 上游连接链:链中所有连接的下游节点相同,通过该链可以找到该下游节点的所有上游节点。\n */\nexport interface Link {\n /**\n * 连接中的上游节点。\n */\n dep: Node;\n /**\n * 连接中的上游节点的下游连接链中的上一个连接。(下一个下游连接)\n */\n prevSubLink?: Link | undefined;\n /**\n * 连接中的上游节点的下游连接链中的下一个连接。(上一个下游连接)\n */\n nextSubLink?: Link | undefined;\n\n /**\n * 连接中的下游节点。\n */\n sub: Node;\n /**\n * 连接中的下游节点的上游连接链中的上一个连接。(上一个上游连接)\n */\n prevDepLink?: Link | undefined;\n /**\n * 连接中的下游节点的上游连接链中的下一个连接。(下一个上游连接)\n */\n nextDepLink?: Link | undefined;\n}\n\nexport interface CreateReactiveSystemOptions {\n /**\n * 当节点的值需要更新时此回调会执行,返回值表示更新前后值是否变化。\n */\n update(sub: Node): boolean;\n /**\n * 当节点的上游节点的值发生变化后此回调会执行。\n *\n * 注意:只有包含 Watching 标记的节点会触发此方法。\n */\n notify(node: Node): void;\n /**\n * 当节点不再拥有任何下游节点时此回调会执行。\n */\n unwatched(node: Node): void;\n}\nexport interface ReactiveSystem {\n /**\n * 判断连接是否是节点的上游连接。\n */\n isDepLinkOfNode(link: Link, node: Node): boolean;\n /**\n * 判断连接是否是节点的下游连接。\n */\n isSubLinkOfNode(link: Link, node: Node): boolean;\n /**\n * 获取两个节点之间的连接。\n */\n getLinkOfNodes(dep: Node, sub: Node): Link | undefined;\n /**\n * 判断两个节点之间是否存在连接。\n */\n isLinked(nodeA: Node, nodeB: Node): boolean;\n /**\n * 为两个节点建立连接。\n */\n linkNode(dep: Node, sub: Node): void;\n /**\n * 为两个节点解除连接。\n */\n unlinkNode(nodeA: Node, nodeB: Node): void;\n /**\n * 解除连接。\n */\n unlink(link: Link): void;\n /**\n * 为节点解除所有上游连接。\n */\n unlinkAllDepLinksOfNode(node: Node): void;\n /**\n * 为节点解除所有下游连接。\n */\n unlinkAllSubLinksOfNode(node: Node): void;\n\n\n /**\n * 获取当前正在进行依赖收集的节点。\n */\n getActiveNodeAsSub(): Node | undefined;\n /**\n * 设置当前正在进行依赖收集的节点。\n */\n setActiveNodeAsSub(nodeAsSub: Node): void;\n /**\n * 重置当前正在进行依赖收集的节点。\n */\n resetActiveNodeAsSub(): void;\n /**\n * 将指定节点作为当前正在进行依赖收集的节点执行指定函数。\n */\n withActiveNodeAsSub<T>(nodeAsSub: Node, fn: () => T): T;\n /**\n * 开始对节点(作为下游节点)进行依赖收集。\n */\n startTracking(node: Node): void;\n /**\n * 结束对节点(作为下游节点)进行依赖收集。\n */\n endTracking(node: Node): void;\n /**\n * 对节点(作为下游节点)进行依赖收集。\n */\n withTracking<T>(node: Node, fn: () => T): T;\n /**\n * 为两个节点建立连接(依赖收集优化版)。\n */\n linkNodeOptimizedForTracking(dep: Node, sub: Node): void;\n /**\n * 将节点作为当前正在进行依赖收集的节点的上游节点。\n */\n track(node: Node): void;\n\n /**\n * 当节点的值发生变化后,调用此方法更新直接下游节点的标记。\n */\n shallowPropagate(node: Node): void;\n /**\n * 当节点的值发生变化后,调用此方法更新所有下游节点的标记。\n */\n deeeeepPropagate(node: Node): void;\n /**\n * 解决节点的 Pending 标记。\n */\n resolvePending(node: Node): void;\n}\nexport const createReactiveSystem = (options: CreateReactiveSystemOptions): ReactiveSystem => {\n const { update, notify, unwatched } = options;\n\n const isDepLinkOfNode = (link: Link, node: Node): boolean => {\n let tailDepLinkOfNode = node.tailDepLink;\n while (tailDepLinkOfNode !== undefined) {\n if (tailDepLinkOfNode === link) {\n return true;\n }\n tailDepLinkOfNode = tailDepLinkOfNode.prevDepLink;\n }\n return false;\n }\n\n const isSubLinkOfNode = (link: Link, node: Node): boolean => {\n let tailSubLinkOfNode = node.tailSubLink;\n while (tailSubLinkOfNode !== undefined) {\n if (tailSubLinkOfNode === link) {\n return true;\n }\n tailSubLinkOfNode = tailSubLinkOfNode.prevSubLink;\n }\n return false;\n }\n\n const getLinkOfNodes = (dep: Node, sub: Node): Link | undefined => {\n let subToCheck = dep.tailSubLink;\n while (subToCheck !== undefined) {\n if (subToCheck.sub === sub) {\n return subToCheck;\n }\n subToCheck = subToCheck.prevSubLink;\n }\n return undefined;\n }\n\n const isLinked = (nodeA: Node, nodeB: Node): boolean => {\n const aIsDepOfB = getLinkOfNodes(nodeA, nodeB) !== undefined;\n if (aIsDepOfB === true) {\n return true;\n }\n const bIsDepOfA = getLinkOfNodes(nodeB, nodeA) !== undefined;\n if (bIsDepOfA === true) {\n return true;\n }\n return false;\n }\n\n const linkNode = (dep: Node, sub: Node): void => {\n /**\n * 检查是否存在重复连接。\n */\n const isLinked = getLinkOfNodes(dep, sub) !== undefined;\n if (isLinked === true) {\n return;\n }\n\n /**\n * 建立新连接。\n */\n const newLink: Link = {\n dep,\n prevSubLink: undefined,\n nextSubLink: undefined,\n\n sub,\n prevDepLink: undefined,\n nextDepLink: undefined,\n };\n\n const tailDepLinkOfSub = sub.tailDepLink;\n if (tailDepLinkOfSub !== undefined) {\n tailDepLinkOfSub.nextDepLink = newLink;\n newLink.prevDepLink = tailDepLinkOfSub;\n } else {\n sub.headDepLink = newLink;\n }\n sub.tailDepLink = newLink;\n\n const tailSubLinkOfDep = dep.tailSubLink;\n if (tailSubLinkOfDep !== undefined) {\n tailSubLinkOfDep.nextSubLink = newLink;\n newLink.prevSubLink = tailSubLinkOfDep;\n } else {\n dep.headSubLink = newLink;\n }\n dep.tailSubLink = newLink;\n }\n\n const unlinkNode = (nodeA: Node, nodeB: Node): void => {\n const linkAB = getLinkOfNodes(nodeA, nodeB);\n if (linkAB !== undefined) {\n unlink(linkAB);\n }\n const linkBA = getLinkOfNodes(nodeB, nodeA);\n if (linkBA !== undefined) {\n unlink(linkBA);\n }\n }\n\n const unlink = (link: Link): void => {\n const prevDepLink = link.prevDepLink;\n const dep = link.dep;\n const nextDepLink = link.nextDepLink;\n const prevSubLink = link.prevSubLink;\n const sub = link.sub;\n const nextSubLink = link.nextSubLink;\n\n /**\n * 处理上游连接链。\n */\n\n if (nextDepLink !== undefined) {\n // 如果当前连接的下一个连接存在,则将当前连接的下一个连接的上一个连接指向当前连接的上一个连接\n nextDepLink.prevDepLink = prevDepLink;\n } else {\n // 如果当前连接的下一个连接不存在,则将当前连接的上一个连接作为最后一个连接\n sub.tailDepLink = prevDepLink;\n }\n if (prevDepLink !== undefined) {\n // 如果当前连接的上一个连接存在,则将当前连接的上一个连接的下一个连接指向当前连接的下一个连接\n prevDepLink.nextDepLink = nextDepLink;\n } else {\n // 如果当前连接的上一个连接不存在,则将当前连接的下一个连接作为第一个连接\n sub.headDepLink = nextDepLink;\n }\n\n /**\n * 处理下游连接链。\n */\n\n if (nextSubLink !== undefined) {\n // 如果当前连接的下一个连接存在,则将当前连接的下一个连接的上一个连接指向当前连接的上一个连接\n nextSubLink.prevSubLink = prevSubLink;\n } else {\n // 如果当前连接的下一个连接不存在,则将当前连接的上一个连接作为最后一个连接\n dep.tailSubLink = prevSubLink;\n }\n if (prevSubLink !== undefined) {\n // 如果当前连接的上一个连接存在,则将当前连接的上一个连接的下一个连接指向当前连接的下一个连接\n prevSubLink.nextSubLink = nextSubLink;\n } else {\n // 如果当前连接的上一个连接不存在,则将当前连接的下一个连接作为第一个连接\n dep.headSubLink = nextSubLink;\n }\n\n /**\n * 处理完连接链之后,检查当前连接中的上游节点是否还有下游节点。\n *\n * - 如果有:什么都不做。\n * - 如果没有:触发回调。\n */\n if (dep.headSubLink === undefined && dep.tailSubLink === undefined) {\n unwatched(dep);\n }\n\n /**\n * 彻底断引用,防止内存泄漏。\n */\n link.prevDepLink = undefined;\n // oxlint-disable-next-line no-unsafe-type-assertion\n link.dep = undefined as unknown as Node; // type cast\n link.nextDepLink = undefined;\n link.prevSubLink = undefined;\n // oxlint-disable-next-line no-unsafe-type-assertion\n link.sub = undefined as unknown as Node; // type cast\n link.nextSubLink = undefined;\n }\n\n const unlinkAllDepLinksOfNode = (node: Node): void => {\n let currentDepLink = node.headDepLink;\n while (currentDepLink !== undefined) {\n const nextDepLink = currentDepLink.nextDepLink;\n unlink(currentDepLink);\n currentDepLink = nextDepLink;\n }\n }\n\n const unlinkAllSubLinksOfNode = (node: Node): void => {\n let currentSubLink = node.headSubLink;\n while (currentSubLink !== undefined) {\n const nextSubLink = currentSubLink.nextSubLink;\n unlink(currentSubLink);\n currentSubLink = nextSubLink;\n }\n }\n\n let prevActiveNodeAsSubStack: Array<Node | undefined> = [];\n let activeNodeAsSub: Node | undefined = undefined;\n const getActiveNodeAsSub = (): Node | undefined => {\n return activeNodeAsSub;\n }\n const setActiveNodeAsSub = (nodeAsSub: Node): void => {\n prevActiveNodeAsSubStack.push(activeNodeAsSub);\n activeNodeAsSub = nodeAsSub;\n }\n const resetActiveNodeAsSub = (): void => {\n activeNodeAsSub = prevActiveNodeAsSubStack.pop();\n }\n const withActiveNodeAsSub = <T>(nodeAsSub: Node, fn: () => T): T => {\n setActiveNodeAsSub(nodeAsSub);\n try {\n return fn();\n } finally {\n resetActiveNodeAsSub();\n }\n }\n\n const startTracking = (nodeAsSub: Node): void => {\n setActiveNodeAsSub(nodeAsSub);\n\n const flags = nodeAsSub.flags;\n flags.unsetPending().unsetDirty().setTracking();\n }\n const endTracking = (nodeAsSub: Node): void => {\n const flags = nodeAsSub.flags;\n if (flags.hasTrackingReusing() === true) {\n const firstRedundantDepLink = nodeAsSub?.tailDepLink?.nextDepLink;\n if (firstRedundantDepLink !== undefined) {\n let toRemove: Link | undefined = firstRedundantDepLink;\n while (toRemove !== undefined) {\n const nextToRemove: Link | undefined = toRemove.nextDepLink;\n unlink(toRemove);\n toRemove = nextToRemove;\n }\n }\n }\n flags.unsetTrackingReusing().unsetTracking();\n\n resetActiveNodeAsSub();\n }\n const withTracking = <T>(node: Node, fn: () => T): T => {\n startTracking(node);\n try {\n return fn();\n } finally {\n endTracking(node);\n }\n }\n /**\n * 依赖收集的目标是:在完成一次依赖收集之后,对于所有在依赖收集执行过程中被访问过的节点(上游节点),\n * 都与进行依赖收集的节点(下游节点)建立且仅建立一个连接。\n */\n const linkNodeOptimizedForTracking = (dep: Node, sub: Node): void => {\n let existingDepLinkToCompare: Link | undefined;\n\n const subFlags = sub.flags;\n if (subFlags.hasTracking() === true && subFlags.hasTrackingReusing() === false) {\n subFlags.setTrackingReusing();\n sub.tailDepLink = sub.headDepLink;\n existingDepLinkToCompare = sub.tailDepLink\n } else {\n existingDepLinkToCompare = sub.tailDepLink?.nextDepLink;\n }\n\n /**\n * 检查是否可以复用现存连接。\n */\n if (existingDepLinkToCompare !== undefined && existingDepLinkToCompare.dep === dep) {\n return;\n }\n\n linkNode(dep, sub);\n }\n const track = (node: Node): void => {\n const activeNodeAsSub = getActiveNodeAsSub();\n if (activeNodeAsSub !== undefined) {\n linkNodeOptimizedForTracking(node, activeNodeAsSub);\n }\n }\n\n const shallowPropagate = (node: Node): void => {\n // 从头到尾遍历目标节点下游连接链中的所有下游节点,更新其标记。\n\n let currentSubLink: Link | undefined = node.headSubLink;\n while (currentSubLink !== undefined) {\n const sub = currentSubLink.sub;\n const flags = sub.flags;\n let isChangeToDirty = false;\n\n if (flags.hasPending() === true && flags.hasDirty() === false) {\n // 如果包含 Pending 标记,且不包含 Dirty 标记,为其添加 Dirty 标记,移除 Pending 标记\n flags.setDirty().unsetPending();\n isChangeToDirty = true;\n } else {\n // 如果是其它情况,则处理下一个连接\n currentSubLink = currentSubLink.nextSubLink;\n continue;\n }\n\n if (isChangeToDirty === true) {\n // 如果检查过程中被标记为 Dirty,则酌情触发 notify 回调\n const shouldNotify = flags.hasWatching() === true && flags.hasTracking() === false;\n if (shouldNotify === true) {\n notify(sub);\n }\n }\n\n // 当前连接处理完成,处理下一个连接\n currentSubLink = currentSubLink.nextSubLink;\n }\n }\n\n interface InternalStack<T> {\n value: T;\n prev: InternalStack<T> | undefined;\n }\n\n const deeeeepPropagate = (node: Node): void => {\n let currentSubLink = node.headSubLink;\n let nextSubLink = currentSubLink?.nextSubLink;\n let unhandledSubLinkStack: InternalStack<Link | undefined> | undefined = undefined;\n\n while (currentSubLink !== undefined) {\n const sub = currentSubLink.sub;\n\n let flags = sub.flags;\n let shouldNotify = flags.hasWatching();\n let shouldDownward = flags.hasMutable();\n\n if (flags.hasTracking() === false && flags.hasDirty() === false && flags.hasPending() === false) {\n /**\n * 进入此分支的 flags:\n * 1. 不包含 Tracking 标记。\n * 2. 不包含 Dirty 标记或 Pending 标记。\n *\n * 说明:上游节点的变更首次传递到该节点。\n *\n * 此时,添加 Pending 标记,根据其它标记决定是否需要 Notify,根据其它标记决定是否需要 Downward。\n */\n flags.setPending();\n // shouldNotify = shouldNotify;\n // shouldDownward = shouldDownward;\n } else if (flags.hasTracking() === false) {\n /**\n * 进入此分支的 flags:\n * 1. 不包含 Tracking 标记。\n * 2. 包含 Dirty 标记或 Pending 标记。\n *\n * 说明:上游节点的变更已经传递到该节点。\n *\n * 此时,什么都不做,不需要修改标记,不需要 Notify,不需要 Downward。\n */\n // flags = flags;\n shouldNotify = false;\n shouldDownward = false;\n } else if (flags.hasDirty() === false && flags.hasPending() === false) {\n /**\n * 进入此分支的 flags:\n * 1. 包含 Tracking 标记。\n * 2. 不包含 Dirty 标记或 Pending 标记。\n *\n * 说明:上游节点的变更首次传递到该节点,且该节点正在进行依赖收集。\n *\n * 此时,添加 Pending 标记,不需要 Notify,根据其它标记决定是否需要 Downward。\n */\n flags.setPending();\n shouldNotify = false;\n // shouldDownward = shouldDownward;\n } else {\n /**\n * 进入此分支的 flags:\n * 1. 包含 Tracking 标记。\n * 2. 包含 Dirty 标记或 Pending 标记。\n *\n * 说明:上游节点的变更已经传递到该节点,且该节点正在进行依赖收集。\n *\n * 此时,不需要修改标记,不需要 Notify,不需要 Downward。\n */\n // flags = flags;\n shouldNotify = false;\n shouldDownward = false;\n }\n\n if (shouldNotify === true) {\n notify(sub);\n }\n\n if (shouldDownward === true) {\n const headSubLinkOfSub = sub.headSubLink;\n if (headSubLinkOfSub !== undefined) {\n currentSubLink = headSubLinkOfSub;\n const nextSubLinkOfSub = headSubLinkOfSub.nextSubLink;\n if (nextSubLinkOfSub !== undefined) {\n unhandledSubLinkStack = { value: nextSubLink, prev: unhandledSubLinkStack };\n nextSubLink = nextSubLinkOfSub;\n }\n continue;\n }\n }\n\n currentSubLink = nextSubLink\n if (currentSubLink !== undefined) {\n nextSubLink = currentSubLink.nextSubLink;\n continue;\n }\n\n if (unhandledSubLinkStack !== undefined) {\n currentSubLink = unhandledSubLinkStack.value;\n unhandledSubLinkStack = unhandledSubLinkStack.prev;\n if (currentSubLink !== undefined) {\n nextSubLink = currentSubLink.nextSubLink;\n }\n }\n }\n }\n\n const resolvePending = (node: Node): void => {\n let currentDepLink = node.headDepLink;\n let unhandledDepLinkStack: InternalStack<Link> | undefined = undefined;\n\n while (currentDepLink !== undefined) {\n const currentSub: Node = currentDepLink.sub;\n const currentDep: Node = currentDepLink.dep;\n const subFlags = currentSub.flags;\n const depFlags = currentDep.flags;\n\n if (depFlags.hasMutable() === true && depFlags.hasDirty() === true) {\n /**\n * 当前下游节点不包含 Dirty 标记,当前上游节点包含 Dirty 标记。\n *\n * 更新当前上游节点,若值有变化,则将状态向直接下游节点传播。\n */\n const valueChanged = update(currentDep);\n if (valueChanged === true) {\n shallowPropagate(currentDep);\n }\n } else if (depFlags.hasMutable() === true && depFlags.hasPending() === true) {\n /**\n * 当前下游节点不包含 Dirty 标记,当前上游节点包含 Pending 标记。\n *\n * 继续检查当前上游节点的上游节点。\n */\n unhandledDepLinkStack = { value: currentDepLink, prev: unhandledDepLinkStack };\n currentDepLink = currentDep.headDepLink;\n continue;\n }\n\n if (subFlags.hasPending() === true) {\n const nextDepLink = currentDepLink.nextDepLink;\n if (nextDepLink !== undefined) {\n currentDepLink = nextDepLink;\n continue;\n }\n }\n\n if (unhandledDepLinkStack !== undefined) {\n currentDepLink = unhandledDepLinkStack.value;\n unhandledDepLinkStack = unhandledDepLinkStack.prev;\n\n /**\n * 当一个连接先被存起来,后续又被取出来处理时,说明其所有上游节点都已经处理完成,\n * 因此可以将其 Pending 标记移除。\n */\n currentDepLink.dep.flags.unsetPending();\n } else {\n /**\n * 所有连接都处理完成,可以安全移除当前连接的下游节点的 Pending 标记。\n */\n currentDepLink.sub.flags.unsetPending();\n break;\n }\n }\n }\n\n return {\n isDepLinkOfNode,\n isSubLinkOfNode,\n getLinkOfNodes,\n isLinked,\n linkNode,\n unlinkNode,\n unlink,\n unlinkAllDepLinksOfNode,\n unlinkAllSubLinksOfNode,\n\n getActiveNodeAsSub,\n setActiveNodeAsSub,\n resetActiveNodeAsSub,\n withActiveNodeAsSub,\n startTracking,\n endTracking,\n withTracking,\n linkNodeOptimizedForTracking,\n track,\n\n shallowPropagate,\n deeeeepPropagate,\n resolvePending,\n };\n}\n",
|
|
7
|
-
"import type { Flags } from \"./flags\"\nimport { createReactiveSystem } from \"./reactive-system\"\nimport { flags } from \"./flags\"\nimport type { Link, Node } from \"./reactive-system\"\n\nconst VOID = Symbol(\"void\") as unknown;\n\nconst queue: Effect[] = [];\nconst flush = (): void => {\n while (queue.length !== 0) {\n queue.shift()!.run();\n }\n}\n\nlet batchDepth = 0;\nexport const startBatch = (): void => {\n batchDepth = batchDepth + 1;\n}\nexport const endBatch = (): void => {\n batchDepth = batchDepth - 1;\n if (batchDepth === 0) {\n flush();\n }\n}\n\nconst reactiveSystem = createReactiveSystem({\n update(node: Signal | Computed) {\n return node.update();\n },\n notify(node: Effect) {\n const nodes = []\n let currentNode: Effect | undefined = node\n while (currentNode !== undefined) {\n if (currentNode.flags.hasWatching() === false) {\n break\n }\n node.notify();\n nodes.push(currentNode);\n const nextNode: Node | undefined = currentNode?.headSubLink?.sub\n currentNode = nextNode instanceof Effect ? nextNode : undefined\n }\n queue.push(...nodes.toReversed());\n },\n unwatched(node: Signal | Computed | Effect) {\n return node.stop();\n }\n});\nconst {\n unlinkAllDepLinksOfNode,\n\n withTracking,\n track,\n\n shallowPropagate,\n deeeeepPropagate,\n resolvePending,\n} = reactiveSystem\n\n/**\n * Signal 的值只有在被获取的时候才会更新。\n */\nexport class Signal<T = unknown> implements Node {\n headSubLink: Link | undefined;\n tailSubLink: Link | undefined;\n flags: Flags;\n\n value: T;\n pendingValue: T;\n\n constructor(value: T) {\n this.headSubLink = undefined;\n this.tailSubLink = undefined;\n this.flags = flags().setMutable();\n\n this.pendingValue = value;\n this.value = value;\n }\n\n get(): T {\n let valueChanged = false\n\n // 如果包含 Dirty 标记,则进行更新\n const shouldUpdate = this.flags.hasDirty();\n if (shouldUpdate === true) {\n valueChanged = this.update()\n }\n\n // 如果值发生变化,则更新直接下游节点的标记\n if (valueChanged === true) {\n shallowPropagate(this);\n }\n\n // 自动进行依赖收集\n track(this);\n\n return this.value;\n }\n\n set(value: T): void {\n // 将新值暂存起来,等用到的时候再执行更新\n this.pendingValue = value;\n // 为当前节点添加 Dirty 标记\n this.flags.setDirty();\n\n // 更新所有下游节点的标记\n deeeeepPropagate(this);\n\n // 执行更新队列\n if (batchDepth === 0) {\n flush();\n }\n }\n\n /**\n * 返回值表示更新前后值是否变化。\n */\n update(): boolean {\n this.flags.unsetDirty();\n\n const oldValue = this.value;\n const newValue = this.pendingValue;\n this.value = newValue;\n\n return oldValue !== newValue;\n }\n\n stop(): void {\n // do nothing\n }\n}\n\n/**\n * Computed 的值只有在被获取的时候才会更新。\n * Computed 的值只有在上游节点的值发生变化时才会更新。\n * Computed 的下游节点全部解除连接时会自动与所有上游节点解除连接,并回到初始状态。\n */\nexport class Computed<T = unknown> implements Node {\n headDepLink: Link | undefined;\n tailDepLink: Link | undefined;\n headSubLink: Link | undefined;\n tailSubLink: Link | undefined;\n flags: Flags;\n\n value: T;\n getValue: () => T;\n\n constructor(getValue: () => T) {\n this.headDepLink = undefined;\n this.tailDepLink = undefined;\n this.headSubLink = undefined;\n this.tailSubLink = undefined;\n // 值在创建时尚未计算,因此初始时添加 Dirty 标记\n this.flags = flags().setMutable().setDirty();\n\n // undefined 可能是使用者期待的合法值,因此这里使用 VOID 占位\n // oxlint-disable-next-line no-unsafe-type-assertion\n this.value = VOID as T;\n this.getValue = getValue;\n }\n\n get(): T {\n let valueChanged = false;\n\n // 如果包含 Pending 标记,则进行解决\n const shouldResolve = this.flags.hasPending();\n if (shouldResolve === true) {\n resolvePending(this);\n }\n\n // 如果包含 Dirty 标记,则进行更新\n const shouldUpdate = this.flags.hasDirty();\n if (shouldUpdate === true) {\n valueChanged = this.update()\n }\n\n // 如果值变化,则通知下游(仅通知直接下游)\n if (valueChanged === true) {\n shallowPropagate(this);\n }\n\n // 自动进行依赖收集\n track(this);\n\n return this.value;\n }\n\n /**\n * 返回值表示更新前后值是否变化。\n */\n update(): boolean {\n const result = withTracking(this, () => {\n const oldValue = this.value;\n const newValue = this.getValue();\n this.value = newValue;\n return oldValue !== newValue;\n })\n return result;\n }\n\n stop(): void {\n unlinkAllDepLinksOfNode(this);\n this.flags = flags().setMutable().setDirty();\n }\n}\n\n/**\n * Effect 会在创建时立即执行一次传入的函数。\n * Effect 会在每次上游节点的值发生变化时重新执行传入的函数。\n * Effect 在任意时刻最多只能一个待运行。\n * Effect 可以与 Effect 建立连接。\n * 作为上游节点的 Effect 在没有下游节点时会自动与所有上游节点解除连接,并将标记清空。\n */\nexport class Effect implements Node {\n headDepLink: Link | undefined;\n tailDepLink: Link | undefined;\n headSubLink: Link | undefined;\n tailSubLink: Link | undefined;\n flags: Flags;\n\n fn: () => void;\n\n constructor(fn: () => void) {\n this.headDepLink = undefined;\n this.tailDepLink = undefined;\n this.headSubLink = undefined;\n this.tailSubLink = undefined;\n // 在创建完成后即进入观察状态,因此初始时添加 Watching 标记\n this.flags = flags().setWatching();\n\n this.fn = fn;\n this.internalRun();\n }\n\n notify(): void {\n this.flags.unsetWatching();\n }\n\n run(): void {\n this.flags.setWatching();\n\n // 如果包含 Pending 标记,则进行解决\n const shouldResolve = this.flags.hasPending();\n if (shouldResolve === true) {\n resolvePending(this);\n }\n\n // 如果包含 Dirty 标记,则进行更新\n const shouldRun = this.flags.hasDirty();\n if (shouldRun === true) {\n this.internalRun();\n }\n }\n\n private internalRun(): void {\n track(this);\n withTracking(this, () => {\n return this.fn();\n })\n }\n\n stop(): void {\n unlinkAllDepLinksOfNode(this);\n this.flags.clear();\n }\n}\n\nexport const signal = <T>(initialValue: T): Signal<T> => {\n return new Signal(initialValue);\n}\nexport const computed = <T>(getter: () => T): Computed<T> => {\n return new Computed<T>(getter);\n}\nexport const effect = (fn: () => void): Effect => {\n return new Effect(fn);\n}\n",
|
|
8
|
-
"import type { Signal } from \"Source/index\"\nimport { effect, signal } from \"Source/index\"\n\nexport const withHistory = <T>(orginal: Signal<T>): Signal<T[]> => {\n const history: T[] = []\n effect(() => {\n history.push(orginal.get())\n })\n const result = signal<T[]>(history)\n return result\n}\n\nexport const zip = <T, U>(signal1: Signal<T>, signal2: Signal<U>): Signal<[T, U]> => {\n const result = signal<[T, U]>([signal1.get(), signal2.get()])\n effect(() => {\n result.set([signal1.get(), signal2.get()])\n })\n return result\n}\n"
|
|
6
|
+
"import type { Flags } from './flags.ts'\n\nexport interface Node {\n /**\n * 当前节点的上游连接链中的第一个连接。\n */\n headDepLink?: Link | undefined;\n /**\n * 当前节点的上游连接链中的最后一个连接。\n */\n tailDepLink?: Link | undefined;\n\n /**\n * 当前节点的下游连接链中的第一个连接。\n */\n headSubLink?: Link | undefined;\n /**\n * 当前节点的下游连接链中的最后一个连接。\n */\n tailSubLink?: Link | undefined;\n\n /**\n * 当前节点的标记。\n */\n flags: Flags;\n}\n/**\n * 连接用于表示某个节点(下游节点)依赖了某个节点(上游节点)。\n *\n * 多个连接连在一起形成连接链,连接链只有两种情况:\n *\n * 1. 下游连接链:链中所有连接的上游节点相同,通过该链可以找到该上游节点的所有下游节点。\n * 2. 上游连接链:链中所有连接的下游节点相同,通过该链可以找到该下游节点的所有上游节点。\n */\nexport interface Link {\n /**\n * 连接中的上游节点。\n */\n dep: Node;\n /**\n * 连接中的上游节点的下游连接链中的上一个连接。(下一个下游连接)\n */\n prevSubLink?: Link | undefined;\n /**\n * 连接中的上游节点的下游连接链中的下一个连接。(上一个下游连接)\n */\n nextSubLink?: Link | undefined;\n\n /**\n * 连接中的下游节点。\n */\n sub: Node;\n /**\n * 连接中的下游节点的上游连接链中的上一个连接。(上一个上游连接)\n */\n prevDepLink?: Link | undefined;\n /**\n * 连接中的下游节点的上游连接链中的下一个连接。(下一个上游连接)\n */\n nextDepLink?: Link | undefined;\n}\n\nexport interface CreateReactiveSystemOptions {\n /**\n * 当节点的值需要更新时此回调会执行,返回值表示更新前后值是否变化。\n */\n update(sub: Node): boolean;\n /**\n * 当节点的上游节点的值发生变化后此回调会执行。\n *\n * 注意:只有包含 Watching 标记的节点会触发此方法。\n */\n notify(node: Node): void;\n /**\n * 当节点不再拥有任何下游节点时此回调会执行。\n */\n unwatched(node: Node): void;\n}\nexport interface ReactiveSystem {\n /**\n * 判断连接是否是节点的上游连接。\n */\n isDepLinkOfNode(link: Link, node: Node): boolean;\n /**\n * 判断连接是否是节点的下游连接。\n */\n isSubLinkOfNode(link: Link, node: Node): boolean;\n /**\n * 获取两个节点之间的连接。\n */\n getLinkOfNodes(dep: Node, sub: Node): Link | undefined;\n /**\n * 判断两个节点之间是否存在连接。\n */\n isLinked(nodeA: Node, nodeB: Node): boolean;\n /**\n * 为两个节点建立连接。\n */\n linkNode(dep: Node, sub: Node): void;\n /**\n * 为两个节点解除连接。\n */\n unlinkNode(nodeA: Node, nodeB: Node): void;\n /**\n * 解除连接。\n */\n unlink(link: Link): void;\n /**\n * 为节点解除所有上游连接。\n */\n unlinkAllDepLinksOfNode(node: Node): void;\n /**\n * 为节点解除所有下游连接。\n */\n unlinkAllSubLinksOfNode(node: Node): void;\n\n\n /**\n * 获取当前正在进行依赖收集的节点。\n */\n getActiveNodeAsSub(): Node | undefined;\n /**\n * 设置当前正在进行依赖收集的节点。\n */\n setActiveNodeAsSub(nodeAsSub: Node): void;\n /**\n * 重置当前正在进行依赖收集的节点。\n */\n resetActiveNodeAsSub(): void;\n /**\n * 将指定节点作为当前正在进行依赖收集的节点执行指定函数。\n */\n withActiveNodeAsSub<T>(nodeAsSub: Node, fn: () => T): T;\n /**\n * 开始对节点(作为下游节点)进行依赖收集。\n */\n startTracking(node: Node): void;\n /**\n * 结束对节点(作为下游节点)进行依赖收集。\n */\n endTracking(node: Node): void;\n /**\n * 对节点(作为下游节点)进行依赖收集。\n */\n withTracking<T>(node: Node, fn: () => T): T;\n /**\n * 为两个节点建立连接(依赖收集优化版)。\n */\n linkNodeOptimizedForTracking(dep: Node, sub: Node): void;\n /**\n * 将节点作为当前正在进行依赖收集的节点的上游节点。\n */\n track(node: Node): void;\n\n /**\n * 当节点的值发生变化后,调用此方法更新直接下游节点的标记。\n */\n shallowPropagate(node: Node): void;\n /**\n * 当节点的值发生变化后,调用此方法更新所有下游节点的标记。\n */\n deeeeepPropagate(node: Node): void;\n /**\n * 解决节点的 Pending 标记。\n */\n resolvePending(node: Node): void;\n}\nexport const createReactiveSystem = (options: CreateReactiveSystemOptions): ReactiveSystem => {\n const { update, notify, unwatched } = options;\n\n const isDepLinkOfNode = (link: Link, node: Node): boolean => {\n let tailDepLinkOfNode = node.tailDepLink;\n while (tailDepLinkOfNode !== undefined) {\n if (tailDepLinkOfNode === link) {\n return true;\n }\n tailDepLinkOfNode = tailDepLinkOfNode.prevDepLink;\n }\n return false;\n }\n\n const isSubLinkOfNode = (link: Link, node: Node): boolean => {\n let tailSubLinkOfNode = node.tailSubLink;\n while (tailSubLinkOfNode !== undefined) {\n if (tailSubLinkOfNode === link) {\n return true;\n }\n tailSubLinkOfNode = tailSubLinkOfNode.prevSubLink;\n }\n return false;\n }\n\n const getLinkOfNodes = (dep: Node, sub: Node): Link | undefined => {\n let subToCheck = dep.tailSubLink;\n while (subToCheck !== undefined) {\n if (subToCheck.sub === sub) {\n return subToCheck;\n }\n subToCheck = subToCheck.prevSubLink;\n }\n return undefined;\n }\n\n const isLinked = (nodeA: Node, nodeB: Node): boolean => {\n const aIsDepOfB = getLinkOfNodes(nodeA, nodeB) !== undefined;\n if (aIsDepOfB === true) {\n return true;\n }\n const bIsDepOfA = getLinkOfNodes(nodeB, nodeA) !== undefined;\n if (bIsDepOfA === true) {\n return true;\n }\n return false;\n }\n\n const linkNode = (dep: Node, sub: Node): void => {\n /**\n * 检查是否存在重复连接。\n */\n const isLinked = getLinkOfNodes(dep, sub) !== undefined;\n if (isLinked === true) {\n return;\n }\n\n /**\n * 建立新连接。\n */\n const newLink: Link = {\n dep,\n prevSubLink: undefined,\n nextSubLink: undefined,\n\n sub,\n prevDepLink: undefined,\n nextDepLink: undefined,\n };\n\n const tailDepLinkOfSub = sub.tailDepLink;\n if (tailDepLinkOfSub !== undefined) {\n tailDepLinkOfSub.nextDepLink = newLink;\n newLink.prevDepLink = tailDepLinkOfSub;\n } else {\n sub.headDepLink = newLink;\n }\n sub.tailDepLink = newLink;\n\n const tailSubLinkOfDep = dep.tailSubLink;\n if (tailSubLinkOfDep !== undefined) {\n tailSubLinkOfDep.nextSubLink = newLink;\n newLink.prevSubLink = tailSubLinkOfDep;\n } else {\n dep.headSubLink = newLink;\n }\n dep.tailSubLink = newLink;\n }\n\n const unlinkNode = (nodeA: Node, nodeB: Node): void => {\n const linkAB = getLinkOfNodes(nodeA, nodeB);\n if (linkAB !== undefined) {\n unlink(linkAB);\n }\n const linkBA = getLinkOfNodes(nodeB, nodeA);\n if (linkBA !== undefined) {\n unlink(linkBA);\n }\n }\n\n const unlink = (link: Link): void => {\n const prevDepLink = link.prevDepLink;\n const dep = link.dep;\n const nextDepLink = link.nextDepLink;\n const prevSubLink = link.prevSubLink;\n const sub = link.sub;\n const nextSubLink = link.nextSubLink;\n\n /**\n * 处理上游连接链。\n */\n\n if (nextDepLink !== undefined) {\n // 如果当前连接的下一个连接存在,则将当前连接的下一个连接的上一个连接指向当前连接的上一个连接\n nextDepLink.prevDepLink = prevDepLink;\n } else {\n // 如果当前连接的下一个连接不存在,则将当前连接的上一个连接作为最后一个连接\n sub.tailDepLink = prevDepLink;\n }\n if (prevDepLink !== undefined) {\n // 如果当前连接的上一个连接存在,则将当前连接的上一个连接的下一个连接指向当前连接的下一个连接\n prevDepLink.nextDepLink = nextDepLink;\n } else {\n // 如果当前连接的上一个连接不存在,则将当前连接的下一个连接作为第一个连接\n sub.headDepLink = nextDepLink;\n }\n\n /**\n * 处理下游连接链。\n */\n\n if (nextSubLink !== undefined) {\n // 如果当前连接的下一个连接存在,则将当前连接的下一个连接的上一个连接指向当前连接的上一个连接\n nextSubLink.prevSubLink = prevSubLink;\n } else {\n // 如果当前连接的下一个连接不存在,则将当前连接的上一个连接作为最后一个连接\n dep.tailSubLink = prevSubLink;\n }\n if (prevSubLink !== undefined) {\n // 如果当前连接的上一个连接存在,则将当前连接的上一个连接的下一个连接指向当前连接的下一个连接\n prevSubLink.nextSubLink = nextSubLink;\n } else {\n // 如果当前连接的上一个连接不存在,则将当前连接的下一个连接作为第一个连接\n dep.headSubLink = nextSubLink;\n }\n\n /**\n * 处理完连接链之后,检查当前连接中的上游节点是否还有下游节点。\n *\n * - 如果有:什么都不做。\n * - 如果没有:触发回调。\n */\n if (dep.headSubLink === undefined && dep.tailSubLink === undefined) {\n unwatched(dep);\n }\n\n /**\n * 彻底断引用,防止内存泄漏。\n */\n link.prevDepLink = undefined;\n // oxlint-disable-next-line no-unsafe-type-assertion\n link.dep = undefined as unknown as Node; // type cast\n link.nextDepLink = undefined;\n link.prevSubLink = undefined;\n // oxlint-disable-next-line no-unsafe-type-assertion\n link.sub = undefined as unknown as Node; // type cast\n link.nextSubLink = undefined;\n }\n\n const unlinkAllDepLinksOfNode = (node: Node): void => {\n let currentDepLink = node.headDepLink;\n while (currentDepLink !== undefined) {\n const nextDepLink = currentDepLink.nextDepLink;\n unlink(currentDepLink);\n currentDepLink = nextDepLink;\n }\n }\n\n const unlinkAllSubLinksOfNode = (node: Node): void => {\n let currentSubLink = node.headSubLink;\n while (currentSubLink !== undefined) {\n const nextSubLink = currentSubLink.nextSubLink;\n unlink(currentSubLink);\n currentSubLink = nextSubLink;\n }\n }\n\n let prevActiveNodeAsSubStack: Array<Node | undefined> = [];\n let activeNodeAsSub: Node | undefined = undefined;\n const getActiveNodeAsSub = (): Node | undefined => {\n return activeNodeAsSub;\n }\n const setActiveNodeAsSub = (nodeAsSub: Node): void => {\n prevActiveNodeAsSubStack.push(activeNodeAsSub);\n activeNodeAsSub = nodeAsSub;\n }\n const resetActiveNodeAsSub = (): void => {\n activeNodeAsSub = prevActiveNodeAsSubStack.pop();\n }\n const withActiveNodeAsSub = <T>(nodeAsSub: Node, fn: () => T): T => {\n setActiveNodeAsSub(nodeAsSub);\n try {\n return fn();\n } finally {\n resetActiveNodeAsSub();\n }\n }\n\n const startTracking = (nodeAsSub: Node): void => {\n setActiveNodeAsSub(nodeAsSub);\n\n const flags = nodeAsSub.flags;\n flags.unsetPending().unsetDirty().setTracking();\n }\n const endTracking = (nodeAsSub: Node): void => {\n const flags = nodeAsSub.flags;\n if (flags.hasTrackingReusing() === true) {\n const firstRedundantDepLink = nodeAsSub?.tailDepLink?.nextDepLink;\n if (firstRedundantDepLink !== undefined) {\n let toRemove: Link | undefined = firstRedundantDepLink;\n while (toRemove !== undefined) {\n const nextToRemove: Link | undefined = toRemove.nextDepLink;\n unlink(toRemove);\n toRemove = nextToRemove;\n }\n }\n }\n flags.unsetTrackingReusing().unsetTracking();\n\n resetActiveNodeAsSub();\n }\n const withTracking = <T>(node: Node, fn: () => T): T => {\n startTracking(node);\n try {\n return fn();\n } finally {\n endTracking(node);\n }\n }\n /**\n * 依赖收集的目标是:在完成一次依赖收集之后,对于所有在依赖收集执行过程中被访问过的节点(上游节点),\n * 都与进行依赖收集的节点(下游节点)建立且仅建立一个连接。\n */\n const linkNodeOptimizedForTracking = (dep: Node, sub: Node): void => {\n let existingDepLinkToCompare: Link | undefined;\n\n const subFlags = sub.flags;\n if (subFlags.hasTracking() === true && subFlags.hasTrackingReusing() === false) {\n subFlags.setTrackingReusing();\n sub.tailDepLink = sub.headDepLink;\n existingDepLinkToCompare = sub.tailDepLink\n } else {\n existingDepLinkToCompare = sub.tailDepLink?.nextDepLink;\n }\n\n /**\n * 检查是否可以复用现存连接。\n */\n if (existingDepLinkToCompare !== undefined && existingDepLinkToCompare.dep === dep) {\n return;\n }\n\n linkNode(dep, sub);\n }\n const track = (node: Node): void => {\n const activeNodeAsSub = getActiveNodeAsSub();\n if (activeNodeAsSub !== undefined) {\n linkNodeOptimizedForTracking(node, activeNodeAsSub);\n }\n }\n\n const shallowPropagate = (node: Node): void => {\n // 从头到尾遍历目标节点下游连接链中的所有下游节点,更新其标记。\n\n let currentSubLink: Link | undefined = node.headSubLink;\n while (currentSubLink !== undefined) {\n const sub = currentSubLink.sub;\n const flags = sub.flags;\n let isChangeToDirty = false;\n\n if (flags.hasPending() === true && flags.hasDirty() === false) {\n // 如果包含 Pending 标记,且不包含 Dirty 标记,为其添加 Dirty 标记,移除 Pending 标记\n flags.setDirty().unsetPending();\n isChangeToDirty = true;\n } else {\n // 如果是其它情况,则处理下一个连接\n currentSubLink = currentSubLink.nextSubLink;\n continue;\n }\n\n if (isChangeToDirty === true) {\n // 如果检查过程中被标记为 Dirty,则酌情触发 notify 回调\n const shouldNotify = flags.hasWatching() === true && flags.hasTracking() === false;\n if (shouldNotify === true) {\n notify(sub);\n }\n }\n\n // 当前连接处理完成,处理下一个连接\n currentSubLink = currentSubLink.nextSubLink;\n }\n }\n\n interface InternalStack<T> {\n value: T;\n prev: InternalStack<T> | undefined;\n }\n\n const deeeeepPropagate = (node: Node): void => {\n let currentSubLink = node.headSubLink;\n let nextSubLink = currentSubLink?.nextSubLink;\n let unhandledSubLinkStack: InternalStack<Link | undefined> | undefined = undefined;\n\n while (currentSubLink !== undefined) {\n const sub = currentSubLink.sub;\n\n let flags = sub.flags;\n let shouldNotify = flags.hasWatching();\n let shouldDownward = flags.hasMutable();\n\n if (flags.hasTracking() === false && flags.hasDirty() === false && flags.hasPending() === false) {\n /**\n * 进入此分支的 flags:\n * 1. 不包含 Tracking 标记。\n * 2. 不包含 Dirty 标记或 Pending 标记。\n *\n * 说明:上游节点的变更首次传递到该节点。\n *\n * 此时,添加 Pending 标记,根据其它标记决定是否需要 Notify,根据其它标记决定是否需要 Downward。\n */\n flags.setPending();\n // shouldNotify = shouldNotify;\n // shouldDownward = shouldDownward;\n } else if (flags.hasTracking() === false) {\n /**\n * 进入此分支的 flags:\n * 1. 不包含 Tracking 标记。\n * 2. 包含 Dirty 标记或 Pending 标记。\n *\n * 说明:上游节点的变更已经传递到该节点。\n *\n * 此时,什么都不做,不需要修改标记,不需要 Notify,不需要 Downward。\n */\n // flags = flags;\n shouldNotify = false;\n shouldDownward = false;\n } else if (flags.hasDirty() === false && flags.hasPending() === false) {\n /**\n * 进入此分支的 flags:\n * 1. 包含 Tracking 标记。\n * 2. 不包含 Dirty 标记或 Pending 标记。\n *\n * 说明:上游节点的变更首次传递到该节点,且该节点正在进行依赖收集。\n *\n * 此时,添加 Pending 标记,不需要 Notify,根据其它标记决定是否需要 Downward。\n */\n flags.setPending();\n shouldNotify = false;\n // shouldDownward = shouldDownward;\n } else {\n /**\n * 进入此分支的 flags:\n * 1. 包含 Tracking 标记。\n * 2. 包含 Dirty 标记或 Pending 标记。\n *\n * 说明:上游节点的变更已经传递到该节点,且该节点正在进行依赖收集。\n *\n * 此时,不需要修改标记,不需要 Notify,不需要 Downward。\n */\n // flags = flags;\n shouldNotify = false;\n shouldDownward = false;\n }\n\n if (shouldNotify === true) {\n notify(sub);\n }\n\n if (shouldDownward === true) {\n const headSubLinkOfSub = sub.headSubLink;\n if (headSubLinkOfSub !== undefined) {\n currentSubLink = headSubLinkOfSub;\n const nextSubLinkOfSub = headSubLinkOfSub.nextSubLink;\n if (nextSubLinkOfSub !== undefined) {\n unhandledSubLinkStack = { value: nextSubLink, prev: unhandledSubLinkStack };\n nextSubLink = nextSubLinkOfSub;\n }\n continue;\n }\n }\n\n currentSubLink = nextSubLink\n if (currentSubLink !== undefined) {\n nextSubLink = currentSubLink.nextSubLink;\n continue;\n }\n\n if (unhandledSubLinkStack !== undefined) {\n currentSubLink = unhandledSubLinkStack.value;\n unhandledSubLinkStack = unhandledSubLinkStack.prev;\n if (currentSubLink !== undefined) {\n nextSubLink = currentSubLink.nextSubLink;\n }\n }\n }\n }\n\n const resolvePending = (node: Node): void => {\n let currentDepLink = node.headDepLink;\n let unhandledDepLinkStack: InternalStack<Link> | undefined = undefined;\n\n while (currentDepLink !== undefined) {\n const currentSub: Node = currentDepLink.sub;\n const currentDep: Node = currentDepLink.dep;\n const subFlags = currentSub.flags;\n const depFlags = currentDep.flags;\n\n if (depFlags.hasMutable() === true && depFlags.hasDirty() === true) {\n /**\n * 当前下游节点不包含 Dirty 标记,当前上游节点包含 Dirty 标记。\n *\n * 更新当前上游节点,若值有变化,则将状态向直接下游节点传播。\n */\n const valueChanged = update(currentDep);\n if (valueChanged === true) {\n shallowPropagate(currentDep);\n }\n } else if (depFlags.hasMutable() === true && depFlags.hasPending() === true) {\n /**\n * 当前下游节点不包含 Dirty 标记,当前上游节点包含 Pending 标记。\n *\n * 继续检查当前上游节点的上游节点。\n */\n unhandledDepLinkStack = { value: currentDepLink, prev: unhandledDepLinkStack };\n currentDepLink = currentDep.headDepLink;\n continue;\n }\n\n if (subFlags.hasPending() === true) {\n const nextDepLink = currentDepLink.nextDepLink;\n if (nextDepLink !== undefined) {\n currentDepLink = nextDepLink;\n continue;\n }\n }\n\n if (unhandledDepLinkStack !== undefined) {\n currentDepLink = unhandledDepLinkStack.value;\n unhandledDepLinkStack = unhandledDepLinkStack.prev;\n\n /**\n * 当一个连接先被存起来,后续又被取出来处理时,说明其所有上游节点都已经处理完成,\n * 因此可以将其 Pending 标记移除。\n */\n currentDepLink.dep.flags.unsetPending();\n } else {\n /**\n * 所有连接都处理完成,可以安全移除当前连接的下游节点的 Pending 标记。\n */\n currentDepLink.sub.flags.unsetPending();\n break;\n }\n }\n }\n\n return {\n isDepLinkOfNode,\n isSubLinkOfNode,\n getLinkOfNodes,\n isLinked,\n linkNode,\n unlinkNode,\n unlink,\n unlinkAllDepLinksOfNode,\n unlinkAllSubLinksOfNode,\n\n getActiveNodeAsSub,\n setActiveNodeAsSub,\n resetActiveNodeAsSub,\n withActiveNodeAsSub,\n startTracking,\n endTracking,\n withTracking,\n linkNodeOptimizedForTracking,\n track,\n\n shallowPropagate,\n deeeeepPropagate,\n resolvePending,\n };\n}\n",
|
|
7
|
+
"import type { Flags } from \"./flags.ts\"\nimport { createReactiveSystem } from \"./reactive-system.ts\"\nimport { flags } from \"./flags.ts\"\nimport type { Link, Node } from \"./reactive-system.ts\"\n\nconst VOID = Symbol(\"void\") as unknown;\n\nconst queue: Effect[] = [];\nconst flush = (): void => {\n while (queue.length !== 0) {\n queue.shift()!.run();\n }\n}\n\nlet batchDepth = 0;\nexport const startBatch = (): void => {\n batchDepth = batchDepth + 1;\n}\nexport const endBatch = (): void => {\n batchDepth = batchDepth - 1;\n if (batchDepth === 0) {\n flush();\n }\n}\n\nconst reactiveSystem = createReactiveSystem({\n update(node: Signal | Computed) {\n return node.update();\n },\n notify(node: Effect) {\n const nodes = []\n let currentNode: Effect | undefined = node\n while (currentNode !== undefined) {\n if (currentNode.flags.hasWatching() === false) {\n break\n }\n node.notify();\n nodes.push(currentNode);\n const nextNode: Node | undefined = currentNode?.headSubLink?.sub\n currentNode = nextNode instanceof Effect ? nextNode : undefined\n }\n queue.push(...nodes.toReversed());\n },\n unwatched(node: Signal | Computed | Effect) {\n return node.stop();\n }\n});\nconst {\n unlinkAllDepLinksOfNode,\n\n withTracking,\n track,\n\n shallowPropagate,\n deeeeepPropagate,\n resolvePending,\n} = reactiveSystem\n\n/**\n * Signal 的值只有在被获取的时候才会更新。\n */\nexport class Signal<T = unknown> implements Node {\n headSubLink: Link | undefined;\n tailSubLink: Link | undefined;\n flags: Flags;\n\n value: T;\n pendingValue: T;\n\n constructor(value: T) {\n this.headSubLink = undefined;\n this.tailSubLink = undefined;\n this.flags = flags().setMutable();\n\n this.pendingValue = value;\n this.value = value;\n }\n\n get(): T {\n let valueChanged = false\n\n // 如果包含 Dirty 标记,则进行更新\n const shouldUpdate = this.flags.hasDirty();\n if (shouldUpdate === true) {\n valueChanged = this.update()\n }\n\n // 如果值发生变化,则更新直接下游节点的标记\n if (valueChanged === true) {\n shallowPropagate(this);\n }\n\n // 自动进行依赖收集\n track(this);\n\n return this.value;\n }\n\n set(value: T): void {\n // 将新值暂存起来,等用到的时候再执行更新\n this.pendingValue = value;\n // 为当前节点添加 Dirty 标记\n this.flags.setDirty();\n\n // 更新所有下游节点的标记\n deeeeepPropagate(this);\n\n // 执行更新队列\n if (batchDepth === 0) {\n flush();\n }\n }\n\n /**\n * 返回值表示更新前后值是否变化。\n */\n update(): boolean {\n this.flags.unsetDirty();\n\n const oldValue = this.value;\n const newValue = this.pendingValue;\n this.value = newValue;\n\n return oldValue !== newValue;\n }\n\n stop(): void {\n // do nothing\n }\n}\n\n/**\n * Computed 的值只有在被获取的时候才会更新。\n * Computed 的值只有在上游节点的值发生变化时才会更新。\n * Computed 的下游节点全部解除连接时会自动与所有上游节点解除连接,并回到初始状态。\n */\nexport class Computed<T = unknown> implements Node {\n headDepLink: Link | undefined;\n tailDepLink: Link | undefined;\n headSubLink: Link | undefined;\n tailSubLink: Link | undefined;\n flags: Flags;\n\n value: T;\n getValue: () => T;\n\n constructor(getValue: () => T) {\n this.headDepLink = undefined;\n this.tailDepLink = undefined;\n this.headSubLink = undefined;\n this.tailSubLink = undefined;\n // 值在创建时尚未计算,因此初始时添加 Dirty 标记\n this.flags = flags().setMutable().setDirty();\n\n // undefined 可能是使用者期待的合法值,因此这里使用 VOID 占位\n // oxlint-disable-next-line no-unsafe-type-assertion\n this.value = VOID as T;\n this.getValue = getValue;\n }\n\n get(): T {\n let valueChanged = false;\n\n // 如果包含 Pending 标记,则进行解决\n const shouldResolve = this.flags.hasPending();\n if (shouldResolve === true) {\n resolvePending(this);\n }\n\n // 如果包含 Dirty 标记,则进行更新\n const shouldUpdate = this.flags.hasDirty();\n if (shouldUpdate === true) {\n valueChanged = this.update()\n }\n\n // 如果值变化,则通知下游(仅通知直接下游)\n if (valueChanged === true) {\n shallowPropagate(this);\n }\n\n // 自动进行依赖收集\n track(this);\n\n return this.value;\n }\n\n /**\n * 返回值表示更新前后值是否变化。\n */\n update(): boolean {\n const result = withTracking(this, () => {\n const oldValue = this.value;\n const newValue = this.getValue();\n this.value = newValue;\n return oldValue !== newValue;\n })\n return result;\n }\n\n stop(): void {\n unlinkAllDepLinksOfNode(this);\n this.flags = flags().setMutable().setDirty();\n }\n}\n\n/**\n * Effect 会在创建时立即执行一次传入的函数。\n * Effect 会在每次上游节点的值发生变化时重新执行传入的函数。\n * Effect 在任意时刻最多只能一个待运行。\n * Effect 可以与 Effect 建立连接。\n * 作为上游节点的 Effect 在没有下游节点时会自动与所有上游节点解除连接,并将标记清空。\n */\nexport class Effect implements Node {\n headDepLink: Link | undefined;\n tailDepLink: Link | undefined;\n headSubLink: Link | undefined;\n tailSubLink: Link | undefined;\n flags: Flags;\n\n fn: () => void;\n\n constructor(fn: () => void) {\n this.headDepLink = undefined;\n this.tailDepLink = undefined;\n this.headSubLink = undefined;\n this.tailSubLink = undefined;\n // 在创建完成后即进入观察状态,因此初始时添加 Watching 标记\n this.flags = flags().setWatching();\n\n this.fn = fn;\n this.internalRun();\n }\n\n notify(): void {\n this.flags.unsetWatching();\n }\n\n run(): void {\n this.flags.setWatching();\n\n // 如果包含 Pending 标记,则进行解决\n const shouldResolve = this.flags.hasPending();\n if (shouldResolve === true) {\n resolvePending(this);\n }\n\n // 如果包含 Dirty 标记,则进行更新\n const shouldRun = this.flags.hasDirty();\n if (shouldRun === true) {\n this.internalRun();\n }\n }\n\n private internalRun(): void {\n track(this);\n withTracking(this, () => {\n return this.fn();\n })\n }\n\n stop(): void {\n unlinkAllDepLinksOfNode(this);\n this.flags.clear();\n }\n}\n\nexport const signal = <T>(initialValue: T): Signal<T> => {\n return new Signal(initialValue);\n}\nexport const computed = <T>(getter: () => T): Computed<T> => {\n return new Computed<T>(getter);\n}\nexport const effect = (fn: () => void): Effect => {\n return new Effect(fn);\n}\n",
|
|
8
|
+
"import type { Signal } from \"#Source/index.ts\"\nimport { effect, signal } from \"#Source/index.ts\"\n\nexport const withHistory = <T>(orginal: Signal<T>): Signal<T[]> => {\n const history: T[] = []\n effect(() => {\n history.push(orginal.get())\n })\n const result = signal<T[]>(history)\n return result\n}\n\nexport const zip = <T, U>(signal1: Signal<T>, signal2: Signal<U>): Signal<[T, U]> => {\n const result = signal<[T, U]>([signal1.get(), signal2.get()])\n effect(() => {\n result.set([signal1.get(), signal2.get()])\n })\n return result\n}\n"
|
|
9
9
|
],
|
|
10
|
-
"mappings": "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",
|
|
11
|
-
"debugId": "
|
|
10
|
+
"mappings": "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",
|
|
11
|
+
"debugId": "DFFA09A32FC4BCF264756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signal/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-core/flags.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;IACpB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAGH;;;;;;;;;;;;OAYG;;IAEH;;OAEG;;CAEK,CAAC;AAEX,eAAO,MAAM,UAAU,4BAEtB,CAAA;AACD,eAAO,MAAM,UAAU,wCAEtB,CAAA;AACD,eAAO,MAAM,YAAY,2BAExB,CAAA;AACD,eAAO,MAAM,aAAa,2BAEzB,CAAA;AACD,eAAO,MAAM,QAAQ,4BAEpB,CAAA;AACD,eAAO,MAAM,QAAQ,wCAEpB,CAAA;AACD,eAAO,MAAM,UAAU,2BAEtB,CAAA;AACD,eAAO,MAAM,WAAW,2BAEvB,CAAA;AACD,eAAO,MAAM,UAAU,4BAEtB,CAAA;AACD,eAAO,MAAM,UAAU,wCAEtB,CAAA;AACD,eAAO,MAAM,YAAY,2BAExB,CAAA;AACD,eAAO,MAAM,aAAa,2BAEzB,CAAA;AACD,eAAO,MAAM,WAAW,4BAEvB,CAAA;AACD,eAAO,MAAM,WAAW,wCAEvB,CAAA;AACD,eAAO,MAAM,aAAa,2BAEzB,CAAA;AACD,eAAO,MAAM,cAAc,2BAE1B,CAAA;AACD,eAAO,MAAM,WAAW,4BAEvB,CAAA;AACD,eAAO,MAAM,WAAW,wCAEvB,CAAA;AACD,eAAO,MAAM,aAAa,2BAEzB,CAAA;AACD,eAAO,MAAM,cAAc,2BAE1B,CAAA;AACD,eAAO,MAAM,kBAAkB,4BAE9B,CAAA;AACD,eAAO,MAAM,kBAAkB,wCAE9B,CAAA;AACD,eAAO,MAAM,oBAAoB,2BAEhC,CAAA;AACD,eAAO,MAAM,qBAAqB,2BAEjC,CAAA;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAS;IAEtB,cAEC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAIhC;IAED,GAAG,IAAI,MAAM,CAEZ;IAED,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGvB;IAED,KAAK,IAAI,IAAI,CAGZ;IAED,UAAU,IAAI,OAAO,CAEpB;IACD,UAAU,IAAI,IAAI,CAGjB;IACD,YAAY,IAAI,IAAI,CAGnB;IACD,aAAa,IAAI,IAAI,CAGpB;IAED,QAAQ,IAAI,OAAO,CAElB;IACD,QAAQ,IAAI,IAAI,CAGf;IACD,UAAU,IAAI,IAAI,CAGjB;IACD,WAAW,IAAI,IAAI,CAGlB;IAED,UAAU,IAAI,OAAO,CAEpB;IACD,UAAU,IAAI,IAAI,CAGjB;IACD,YAAY,IAAI,IAAI,CAGnB;IACD,aAAa,IAAI,IAAI,CAGpB;IAED,WAAW,IAAI,OAAO,CAErB;IACD,WAAW,IAAI,IAAI,CAGlB;IACD,aAAa,IAAI,IAAI,CAGpB;IACD,cAAc,IAAI,IAAI,CAGrB;IAED,WAAW,IAAI,OAAO,CAErB;IACD,WAAW,IAAI,IAAI,CAGlB;IACD,aAAa,IAAI,IAAI,CAGpB;IACD,cAAc,IAAI,IAAI,CAGrB;IAED,kBAAkB,IAAI,OAAO,CAE5B;IACD,kBAAkB,IAAI,IAAI,CAGzB;IACD,oBAAoB,IAAI,IAAI,CAG3B;IACD,qBAAqB,IAAI,IAAI,CAG5B;IAED,QAAQ,IAAI,MAAM,CA2BjB;CACF;AAED,eAAO,MAAM,KAAK,uCAMjB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Flags } from "./flags";
|
|
2
|
-
import type { Link, Node } from "./reactive-system";
|
|
1
|
+
import type { Flags } from "./flags.ts";
|
|
2
|
+
import type { Link, Node } from "./reactive-system.ts";
|
|
3
3
|
export declare const startBatch: () => void;
|
|
4
4
|
export declare const endBatch: () => void;
|
|
5
5
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-core/primitive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAYtD,eAAO,MAAM,UAAU,YAEtB,CAAA;AACD,eAAO,MAAM,QAAQ,YAKpB,CAAA;AAmCD;;GAEG;AACH,qBAAa,MAAM,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,IAAI;IAC9C,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IAEb,KAAK,EAAE,CAAC,CAAC;IACT,YAAY,EAAE,CAAC,CAAC;IAEhB,YAAY,KAAK,EAAE,CAAC,EAOnB;IAED,GAAG,IAAI,CAAC,CAkBP;IAED,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAalB;IAED;;OAEG;IACH,MAAM,IAAI,OAAO,CAQhB;IAED,IAAI,IAAI,IAAI,CAEX;CACF;AAED;;;;GAIG;AACH,qBAAa,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,IAAI;IAChD,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IAEb,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC,CAAC;IAElB,YAAY,QAAQ,EAAE,MAAM,CAAC,EAY5B;IAED,GAAG,IAAI,CAAC,CAwBP;IAED;;OAEG;IACH,MAAM,IAAI,OAAO,CAQhB;IAED,IAAI,IAAI,IAAI,CAGX;CACF;AAED;;;;;;GAMG;AACH,qBAAa,MAAO,YAAW,IAAI;IACjC,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IAEb,EAAE,EAAE,MAAM,IAAI,CAAC;IAEf,YAAY,EAAE,EAAE,MAAM,IAAI,EAUzB;IAED,MAAM,IAAI,IAAI,CAEb;IAED,GAAG,IAAI,IAAI,CAcV;IAED,OAAO,CAAC,WAAW;IAOnB,IAAI,IAAI,IAAI,CAGX;CACF;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,+BAEvB,CAAA;AACD,eAAO,MAAM,QAAQ,GAAI,CAAC,iCAEzB,CAAA;AACD,eAAO,MAAM,MAAM,4BAElB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-system.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-core/reactive-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Signal } from "Source/index";
|
|
1
|
+
import type { Signal } from "#Source/index.ts";
|
|
2
2
|
export declare const withHistory: <T>(orginal: Signal<T>) => Signal<T[]>;
|
|
3
3
|
export declare const zip: <T, U>(signal1: Signal<T>, signal2: Signal<U>) => Signal<[T, U]>;
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-operators/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAG9C,eAAO,MAAM,WAAW,GAAI,CAAC,oCAO5B,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,2DAMvB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,26 +1,69 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@planet-matrix/mobius-model",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Mobius model.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mobius",
|
|
7
|
+
"model"
|
|
8
|
+
],
|
|
9
|
+
"homepage": "https://github.com/planet-matrix/mobius",
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/planet-matrix/mobius/issues",
|
|
12
|
+
"email": "kongxiangyan@planet-matrix.tech"
|
|
13
|
+
},
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"author": {
|
|
16
|
+
"name": "Kong Xiangyan",
|
|
17
|
+
"email": "kongxiangyan@planet-matrix.tech",
|
|
18
|
+
"url": "https://github.com/kongxiangyan"
|
|
19
|
+
},
|
|
20
|
+
"contributors": [],
|
|
21
|
+
"files": [
|
|
22
|
+
"*"
|
|
23
|
+
],
|
|
24
|
+
"bin": {},
|
|
25
|
+
"man": [],
|
|
5
26
|
"type": "module",
|
|
6
27
|
"exports": {
|
|
7
28
|
".": {
|
|
8
29
|
"import": {
|
|
9
|
-
"@planet-matrix/mobius-
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
30
|
+
"@planet-matrix/mobius-mono": "./src/index.ts",
|
|
11
31
|
"bun": "./src/index.ts",
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
12
33
|
"default": "./dist/index.js"
|
|
13
34
|
}
|
|
14
35
|
}
|
|
15
36
|
},
|
|
37
|
+
"imports": {
|
|
38
|
+
"#Project/*": {
|
|
39
|
+
"import": {
|
|
40
|
+
"@planet-matrix/mobius-mono": "./*",
|
|
41
|
+
"bun": "./*",
|
|
42
|
+
"default": "./*"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"#Source/*": {
|
|
46
|
+
"import": {
|
|
47
|
+
"@planet-matrix/mobius-mono": "./src/*",
|
|
48
|
+
"bun": "./src/*",
|
|
49
|
+
"default": "./src/*"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "git",
|
|
55
|
+
"url": "git+https://github.com/planet-matrix/mobius.git",
|
|
56
|
+
"directory": "packages/model"
|
|
57
|
+
},
|
|
16
58
|
"scripts": {
|
|
17
59
|
"lint": "bun oxlint",
|
|
18
60
|
"test": "vitest watch",
|
|
19
61
|
"build": "bun ./scripts/build.ts",
|
|
20
62
|
"prepublishOnly": "bun run build"
|
|
21
63
|
},
|
|
64
|
+
"dependencies": {},
|
|
22
65
|
"devDependencies": {
|
|
23
|
-
"@planet-matrix/mobius-mono": "0.
|
|
66
|
+
"@planet-matrix/mobius-mono": "0.4.0",
|
|
24
67
|
"@types/bun": "^1.3.5",
|
|
25
68
|
"oxlint": "^1.36.0",
|
|
26
69
|
"oxlint-tsgolint": "^0.10.1",
|
|
@@ -29,16 +72,14 @@
|
|
|
29
72
|
"vite": "^7.2.6",
|
|
30
73
|
"vitest": "^4.0.15"
|
|
31
74
|
},
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
},
|
|
75
|
+
"peerDependencies": {},
|
|
76
|
+
"peerDependenciesMeta": {},
|
|
77
|
+
"bundleDependencies": [],
|
|
78
|
+
"optionalDependencies": {},
|
|
79
|
+
"overrides": {},
|
|
80
|
+
"private": false,
|
|
37
81
|
"publishConfig": {
|
|
38
82
|
"registry": "https://registry.npmjs.org",
|
|
39
83
|
"access": "public"
|
|
40
|
-
}
|
|
41
|
-
"files": [
|
|
42
|
-
"*"
|
|
43
|
-
]
|
|
84
|
+
}
|
|
44
85
|
}
|
package/scripts/build.ts
CHANGED
|
@@ -5,7 +5,7 @@ console.log("Cleaning and preparing ./dist directory...")
|
|
|
5
5
|
await $`rm -rf dist`
|
|
6
6
|
|
|
7
7
|
console.log("Building TypeScript declarations...")
|
|
8
|
-
await $`bun run tsgo --
|
|
8
|
+
await $`bun run tsgo --noEmit false`
|
|
9
9
|
|
|
10
10
|
console.log("Building the library with Bun...")
|
|
11
11
|
const builtOutput = await build({
|
|
@@ -34,7 +34,7 @@ const builtOutput = await build({
|
|
|
34
34
|
asset: '[name]-[hash].[ext]',
|
|
35
35
|
},
|
|
36
36
|
outdir: "./dist",
|
|
37
|
-
packages: "
|
|
37
|
+
packages: "bundle",
|
|
38
38
|
plugins: [],
|
|
39
39
|
publicPath: undefined,
|
|
40
40
|
root: undefined,
|
package/src/index.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export * from "./signal
|
|
2
|
-
export * from "./signal-operators";
|
|
1
|
+
export * from "./signal/index.ts"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { Flags } from "./flags"
|
|
2
|
-
import { createReactiveSystem } from "./reactive-system"
|
|
3
|
-
import { flags } from "./flags"
|
|
4
|
-
import type { Link, Node } from "./reactive-system"
|
|
1
|
+
import type { Flags } from "./flags.ts"
|
|
2
|
+
import { createReactiveSystem } from "./reactive-system.ts"
|
|
3
|
+
import { flags } from "./flags.ts"
|
|
4
|
+
import type { Link, Node } from "./reactive-system.ts"
|
|
5
5
|
|
|
6
6
|
const VOID = Symbol("void") as unknown;
|
|
7
7
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Signal } from "Source/index"
|
|
2
|
-
import { effect, signal } from "Source/index"
|
|
1
|
+
import type { Signal } from "#Source/index.ts"
|
|
2
|
+
import { effect, signal } from "#Source/index.ts"
|
|
3
3
|
|
|
4
4
|
export const withHistory = <T>(orginal: Signal<T>): Signal<T[]> => {
|
|
5
5
|
const history: T[] = []
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { computed, effect, endBatch, signal, startBatch } from '../../../src';
|
|
2
1
|
import { expect, test } from 'vitest';
|
|
2
|
+
import { computed, effect, endBatch, signal, startBatch } from '#Source/index.ts';
|
|
3
3
|
|
|
4
4
|
test('should clear subscriptions when untracked by all subscribers', () => {
|
|
5
5
|
/**
|
package/vite.config.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/signal-core/flags.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;IACpB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAGH;;;;;;;;;;;;OAYG;;IAEH;;OAEG;;CAEK,CAAC;AAEX,eAAO,MAAM,UAAU,4BAEtB,CAAA;AACD,eAAO,MAAM,UAAU,wCAEtB,CAAA;AACD,eAAO,MAAM,YAAY,2BAExB,CAAA;AACD,eAAO,MAAM,aAAa,2BAEzB,CAAA;AACD,eAAO,MAAM,QAAQ,4BAEpB,CAAA;AACD,eAAO,MAAM,QAAQ,wCAEpB,CAAA;AACD,eAAO,MAAM,UAAU,2BAEtB,CAAA;AACD,eAAO,MAAM,WAAW,2BAEvB,CAAA;AACD,eAAO,MAAM,UAAU,4BAEtB,CAAA;AACD,eAAO,MAAM,UAAU,wCAEtB,CAAA;AACD,eAAO,MAAM,YAAY,2BAExB,CAAA;AACD,eAAO,MAAM,aAAa,2BAEzB,CAAA;AACD,eAAO,MAAM,WAAW,4BAEvB,CAAA;AACD,eAAO,MAAM,WAAW,wCAEvB,CAAA;AACD,eAAO,MAAM,aAAa,2BAEzB,CAAA;AACD,eAAO,MAAM,cAAc,2BAE1B,CAAA;AACD,eAAO,MAAM,WAAW,4BAEvB,CAAA;AACD,eAAO,MAAM,WAAW,wCAEvB,CAAA;AACD,eAAO,MAAM,aAAa,2BAEzB,CAAA;AACD,eAAO,MAAM,cAAc,2BAE1B,CAAA;AACD,eAAO,MAAM,kBAAkB,4BAE9B,CAAA;AACD,eAAO,MAAM,kBAAkB,wCAE9B,CAAA;AACD,eAAO,MAAM,oBAAoB,2BAEhC,CAAA;AACD,eAAO,MAAM,qBAAqB,2BAEjC,CAAA;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAS;IAEtB,cAEC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAIhC;IAED,GAAG,IAAI,MAAM,CAEZ;IAED,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGvB;IAED,KAAK,IAAI,IAAI,CAGZ;IAED,UAAU,IAAI,OAAO,CAEpB;IACD,UAAU,IAAI,IAAI,CAGjB;IACD,YAAY,IAAI,IAAI,CAGnB;IACD,aAAa,IAAI,IAAI,CAGpB;IAED,QAAQ,IAAI,OAAO,CAElB;IACD,QAAQ,IAAI,IAAI,CAGf;IACD,UAAU,IAAI,IAAI,CAGjB;IACD,WAAW,IAAI,IAAI,CAGlB;IAED,UAAU,IAAI,OAAO,CAEpB;IACD,UAAU,IAAI,IAAI,CAGjB;IACD,YAAY,IAAI,IAAI,CAGnB;IACD,aAAa,IAAI,IAAI,CAGpB;IAED,WAAW,IAAI,OAAO,CAErB;IACD,WAAW,IAAI,IAAI,CAGlB;IACD,aAAa,IAAI,IAAI,CAGpB;IACD,cAAc,IAAI,IAAI,CAGrB;IAED,WAAW,IAAI,OAAO,CAErB;IACD,WAAW,IAAI,IAAI,CAGlB;IACD,aAAa,IAAI,IAAI,CAGpB;IACD,cAAc,IAAI,IAAI,CAGrB;IAED,kBAAkB,IAAI,OAAO,CAE5B;IACD,kBAAkB,IAAI,IAAI,CAGzB;IACD,oBAAoB,IAAI,IAAI,CAG3B;IACD,qBAAqB,IAAI,IAAI,CAG5B;IAED,QAAQ,IAAI,MAAM,CA2BjB;CACF;AAED,eAAO,MAAM,KAAK,uCAMjB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signal-core/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../../src/signal-core/primitive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAGpC,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAYnD,eAAO,MAAM,UAAU,YAEtB,CAAA;AACD,eAAO,MAAM,QAAQ,YAKpB,CAAA;AAmCD;;GAEG;AACH,qBAAa,MAAM,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,IAAI;IAC9C,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IAEb,KAAK,EAAE,CAAC,CAAC;IACT,YAAY,EAAE,CAAC,CAAC;IAEhB,YAAY,KAAK,EAAE,CAAC,EAOnB;IAED,GAAG,IAAI,CAAC,CAkBP;IAED,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAalB;IAED;;OAEG;IACH,MAAM,IAAI,OAAO,CAQhB;IAED,IAAI,IAAI,IAAI,CAEX;CACF;AAED;;;;GAIG;AACH,qBAAa,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,IAAI;IAChD,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IAEb,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC,CAAC;IAElB,YAAY,QAAQ,EAAE,MAAM,CAAC,EAY5B;IAED,GAAG,IAAI,CAAC,CAwBP;IAED;;OAEG;IACH,MAAM,IAAI,OAAO,CAQhB;IAED,IAAI,IAAI,IAAI,CAGX;CACF;AAED;;;;;;GAMG;AACH,qBAAa,MAAO,YAAW,IAAI;IACjC,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,KAAK,CAAC;IAEb,EAAE,EAAE,MAAM,IAAI,CAAC;IAEf,YAAY,EAAE,EAAE,MAAM,IAAI,EAUzB;IAED,MAAM,IAAI,IAAI,CAEb;IAED,GAAG,IAAI,IAAI,CAcV;IAED,OAAO,CAAC,WAAW;IAOnB,IAAI,IAAI,IAAI,CAGX;CACF;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,+BAEvB,CAAA;AACD,eAAO,MAAM,QAAQ,GAAI,CAAC,iCAEzB,CAAA;AACD,eAAO,MAAM,MAAM,4BAElB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reactive-system.d.ts","sourceRoot":"","sources":["../../src/signal-core/reactive-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signal-operators/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAG1C,eAAO,MAAM,WAAW,GAAI,CAAC,oCAO5B,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,2DAMvB,CAAA"}
|
package/src/signal-core/index.ts
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|