mutts 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -2
- package/dist/browser.cjs +1030 -4406
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.ts +310 -573
- package/dist/browser.esm.js +18 -24
- package/dist/browser.esm.js.map +1 -1
- package/dist/chunks/{async-browser-CA0jPWIi.cjs → async-browser-lvzLOCgk.cjs} +17 -24
- package/dist/chunks/async-browser-lvzLOCgk.cjs.map +1 -0
- package/dist/chunks/{async-core-UqHzvJ-S.cjs → async-core-CRLKP3l-.cjs} +8 -4
- package/dist/chunks/async-core-CRLKP3l-.cjs.map +1 -0
- package/dist/chunks/{async-node-BYHuGTni.cjs → async-node-C3DeIb0y.cjs} +5 -12
- package/dist/chunks/async-node-C3DeIb0y.cjs.map +1 -0
- package/dist/chunks/index-2vea86wD.esm.js +3011 -0
- package/dist/chunks/index-2vea86wD.esm.js.map +1 -0
- package/dist/chunks/index-CtA2AWl3.esm.js +4376 -0
- package/dist/chunks/index-CtA2AWl3.esm.js.map +1 -0
- package/dist/chunks/index-VTO-b2vR.cjs +4461 -0
- package/dist/chunks/index-VTO-b2vR.cjs.map +1 -0
- package/dist/{reactive → debug}/debug.d.ts +19 -8
- package/dist/debug/debug.d.ts.map +1 -0
- package/dist/debug/index.d.ts +4 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug/lineage-panel.d.ts +5 -0
- package/dist/debug/lineage-panel.d.ts.map +1 -0
- package/dist/debug/lineage.d.ts +79 -0
- package/dist/debug/lineage.d.ts.map +1 -0
- package/dist/debug.cjs +35 -0
- package/dist/debug.cjs.map +1 -0
- package/dist/debug.d.ts +209 -0
- package/dist/debug.esm.js +2 -0
- package/dist/debug.esm.js.map +1 -0
- package/dist/index.d.ts +1 -13
- package/dist/mutts.umd.js +1 -1
- package/dist/mutts.umd.js.map +1 -1
- package/dist/mutts.umd.min.js +1 -1
- package/dist/mutts.umd.min.js.map +1 -1
- package/dist/node.cjs +65 -63
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +2 -1
- package/dist/node.esm.js +5 -11
- package/dist/node.esm.js.map +1 -1
- package/dist/{async → src/async}/browser.d.ts.map +1 -1
- package/dist/{async → src/async}/index.d.ts +2 -1
- package/dist/src/async/index.d.ts.map +1 -0
- package/dist/{async → src/async}/node.d.ts.map +1 -1
- package/dist/src/decorator.d.ts.map +1 -0
- package/dist/src/destroyable.d.ts.map +1 -0
- package/dist/src/entry-browser.d.ts.map +1 -0
- package/dist/src/entry-node.d.ts.map +1 -0
- package/dist/src/eventful.d.ts +20 -0
- package/dist/src/eventful.d.ts.map +1 -0
- package/dist/src/flavored.d.ts +33 -0
- package/dist/src/flavored.d.ts.map +1 -0
- package/dist/src/index.d.ts +14 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/indexable.d.ts.map +1 -0
- package/dist/{introspection.d.ts → src/introspection.d.ts} +1 -1
- package/dist/src/introspection.d.ts.map +1 -0
- package/dist/src/iterableWeak.d.ts.map +1 -0
- package/dist/src/mixins.d.ts.map +1 -0
- package/dist/src/promiseChain.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/array.d.ts +9 -10
- package/dist/src/reactive/array.d.ts.map +1 -0
- package/dist/src/reactive/buffer.d.ts +120 -0
- package/dist/src/reactive/buffer.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/change.d.ts +2 -2
- package/dist/src/reactive/change.d.ts.map +1 -0
- package/dist/src/reactive/deep-touch.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/deep-watch-state.d.ts +3 -3
- package/dist/src/reactive/deep-watch-state.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/deep-watch.d.ts +2 -1
- package/dist/src/reactive/deep-watch.d.ts.map +1 -0
- package/dist/src/reactive/describe.d.ts +12 -0
- package/dist/src/reactive/describe.d.ts.map +1 -0
- package/dist/src/reactive/effect-context.d.ts +34 -0
- package/dist/src/reactive/effect-context.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/effects.d.ts +31 -18
- package/dist/src/reactive/effects.d.ts.map +1 -0
- package/dist/src/reactive/index.d.ts +19 -0
- package/dist/src/reactive/index.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/map.d.ts +0 -2
- package/dist/src/reactive/map.d.ts.map +1 -0
- package/dist/src/reactive/memoize.d.ts +28 -0
- package/dist/src/reactive/memoize.d.ts.map +1 -0
- package/dist/src/reactive/non-reactive-state.d.ts.map +1 -0
- package/dist/src/reactive/non-reactive.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/project.d.ts +1 -2
- package/dist/src/reactive/project.d.ts.map +1 -0
- package/dist/src/reactive/proxy-state.d.ts.map +1 -0
- package/dist/src/reactive/proxy.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/record.d.ts +2 -3
- package/dist/src/reactive/record.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/register.d.ts +61 -0
- package/dist/src/reactive/register.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/registry.d.ts +6 -5
- package/dist/src/reactive/registry.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/set.d.ts +0 -2
- package/dist/src/reactive/set.d.ts.map +1 -0
- package/dist/src/reactive/tracking.d.ts.map +1 -0
- package/dist/{reactive → src/reactive}/types.d.ts +69 -21
- package/dist/src/reactive/types.d.ts.map +1 -0
- package/dist/{reactive/interface.d.ts → src/reactive/watch.d.ts} +7 -23
- package/dist/src/reactive/watch.d.ts.map +1 -0
- package/dist/{std-decorators.d.ts → src/std-decorators.d.ts} +1 -6
- package/dist/src/std-decorators.d.ts.map +1 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/{zone.d.ts → src/zone.d.ts} +2 -2
- package/dist/src/zone.d.ts.map +1 -0
- package/dist/types-DaHFfhlN.d.ts +414 -0
- package/docs/ai/api-reference.md +1 -1
- package/docs/ai/manual.md +443 -17
- package/docs/events.md +57 -2
- package/docs/flavored.md +210 -0
- package/docs/reactive/advanced.md +2 -3
- package/docs/reactive/attend.md +143 -0
- package/docs/reactive/collections.md +55 -0
- package/docs/reactive/core.md +120 -4
- package/docs/reactive/debugging.md +8 -10
- package/docs/reactive/describe.md +85 -0
- package/docs/reactive/error-handling.md +121 -0
- package/docs/reactive/project.md +1 -1
- package/docs/reactive/scan.md +215 -0
- package/docs/reactive.md +2 -0
- package/docs/std-decorators.md +102 -51
- package/docs/zone.md +3 -7
- package/package.json +6 -1
- package/src/async/browser.ts +110 -106
- package/src/async/index.ts +15 -11
- package/src/async/node.ts +5 -17
- package/src/eventful.ts +82 -49
- package/src/flavored.ts +106 -0
- package/src/index.d.ts +12 -12
- package/src/index.ts +2 -2
- package/src/introspection.ts +1 -1
- package/src/reactive/array.ts +29 -36
- package/src/reactive/buffer.ts +187 -27
- package/src/reactive/change.ts +16 -23
- package/src/reactive/deep-touch.ts +19 -14
- package/src/reactive/deep-watch-state.ts +3 -3
- package/src/reactive/deep-watch.ts +7 -4
- package/src/reactive/describe.ts +39 -0
- package/src/reactive/effect-context.ts +69 -4
- package/src/reactive/effects.ts +445 -393
- package/src/reactive/index.ts +12 -15
- package/src/reactive/map.ts +9 -25
- package/src/reactive/memoize.ts +26 -3
- package/src/reactive/project.md +107 -0
- package/src/reactive/project.ts +48 -71
- package/src/reactive/proxy.ts +21 -3
- package/src/reactive/record.ts +30 -45
- package/src/reactive/register.ts +138 -19
- package/src/reactive/registry.ts +22 -9
- package/src/reactive/set.ts +8 -21
- package/src/reactive/tracking.ts +9 -12
- package/src/reactive/types.ts +104 -24
- package/src/reactive/{interface.ts → watch.ts} +29 -59
- package/src/std-decorators.ts +56 -17
- package/src/utils.ts +2 -3
- package/src/zone.ts +28 -24
- package/dist/async/index.d.ts.map +0 -1
- package/dist/chunks/async-browser-CA0jPWIi.cjs.map +0 -1
- package/dist/chunks/async-core-UqHzvJ-S.cjs.map +0 -1
- package/dist/chunks/async-node-BYHuGTni.cjs.map +0 -1
- package/dist/chunks/index-DhaOVusv.esm.js +0 -6411
- package/dist/chunks/index-DhaOVusv.esm.js.map +0 -1
- package/dist/decorator.d.ts.map +0 -1
- package/dist/destroyable.d.ts.map +0 -1
- package/dist/entry-browser.d.ts.map +0 -1
- package/dist/entry-node.d.ts.map +0 -1
- package/dist/eventful.d.ts +0 -18
- package/dist/eventful.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/indexable.d.ts.map +0 -1
- package/dist/introspection.d.ts.map +0 -1
- package/dist/iterableWeak.d.ts.map +0 -1
- package/dist/mixins.d.ts.map +0 -1
- package/dist/promiseChain.d.ts.map +0 -1
- package/dist/reactive/array.d.ts.map +0 -1
- package/dist/reactive/buffer.d.ts +0 -44
- package/dist/reactive/buffer.d.ts.map +0 -1
- package/dist/reactive/change.d.ts.map +0 -1
- package/dist/reactive/debug.d.ts.map +0 -1
- package/dist/reactive/deep-touch.d.ts.map +0 -1
- package/dist/reactive/deep-watch-state.d.ts.map +0 -1
- package/dist/reactive/deep-watch.d.ts.map +0 -1
- package/dist/reactive/effect-context.d.ts +0 -7
- package/dist/reactive/effect-context.d.ts.map +0 -1
- package/dist/reactive/effects.d.ts.map +0 -1
- package/dist/reactive/index.d.ts +0 -20
- package/dist/reactive/index.d.ts.map +0 -1
- package/dist/reactive/interface.d.ts.map +0 -1
- package/dist/reactive/map.d.ts.map +0 -1
- package/dist/reactive/memoize.d.ts +0 -5
- package/dist/reactive/memoize.d.ts.map +0 -1
- package/dist/reactive/non-reactive-state.d.ts.map +0 -1
- package/dist/reactive/non-reactive.d.ts.map +0 -1
- package/dist/reactive/project.d.ts.map +0 -1
- package/dist/reactive/proxy-state.d.ts.map +0 -1
- package/dist/reactive/proxy.d.ts.map +0 -1
- package/dist/reactive/record.d.ts.map +0 -1
- package/dist/reactive/register.d.ts.map +0 -1
- package/dist/reactive/registry.d.ts.map +0 -1
- package/dist/reactive/set.d.ts.map +0 -1
- package/dist/reactive/tracking.d.ts.map +0 -1
- package/dist/reactive/types.d.ts.map +0 -1
- package/dist/std-decorators.d.ts.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/zone.d.ts.map +0 -1
- package/src/reactive/debug.ts +0 -517
- /package/dist/{async → src/async}/browser.d.ts +0 -0
- /package/dist/{async → src/async}/node.d.ts +0 -0
- /package/dist/{decorator.d.ts → src/decorator.d.ts} +0 -0
- /package/dist/{destroyable.d.ts → src/destroyable.d.ts} +0 -0
- /package/dist/{entry-browser.d.ts → src/entry-browser.d.ts} +0 -0
- /package/dist/{entry-node.d.ts → src/entry-node.d.ts} +0 -0
- /package/dist/{indexable.d.ts → src/indexable.d.ts} +0 -0
- /package/dist/{iterableWeak.d.ts → src/iterableWeak.d.ts} +0 -0
- /package/dist/{mixins.d.ts → src/mixins.d.ts} +0 -0
- /package/dist/{promiseChain.d.ts → src/promiseChain.d.ts} +0 -0
- /package/dist/{reactive → src/reactive}/deep-touch.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/non-reactive-state.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/non-reactive.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/proxy-state.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/proxy.d.ts +0 -0
- /package/dist/{reactive → src/reactive}/tracking.d.ts +0 -0
- /package/dist/{utils.d.ts → src/utils.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type EffectTrigger, type Evolution, type State } from './types';
|
|
2
2
|
export declare function addState(obj: any, evolution: Evolution): void;
|
|
3
3
|
/**
|
|
4
4
|
* Gets the current state of a reactive object for evolution tracking
|
|
@@ -6,7 +6,7 @@ export declare function addState(obj: any, evolution: Evolution): void;
|
|
|
6
6
|
* @returns The current state object
|
|
7
7
|
*/
|
|
8
8
|
export declare function getState(obj: any): State;
|
|
9
|
-
export declare function collectEffects(obj: any, evolution: Evolution, effects: Set<
|
|
9
|
+
export declare function collectEffects(obj: any, evolution: Evolution, effects: Set<EffectTrigger>, objectWatchers: Map<any, Set<EffectTrigger>>, ...keyChains: Iterable<any>[]): void;
|
|
10
10
|
/**
|
|
11
11
|
* Triggers effects for a single property change
|
|
12
12
|
* @param obj - The object that changed
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../../../src/reactive/change.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAc,KAAK,KAAK,EAAE,MAAM,SAAS,CAAA;AAI9F,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,QAMtD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,SAQhC;AAED,wBAAgB,cAAc,CAC7B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,EAC3B,cAAc,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,EAC5C,GAAG,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAsB7B;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,QAEjE;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,QAiB5E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,QA6BtE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-touch.d.ts","sourceRoot":"","sources":["../../../src/reactive/deep-touch.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoD,KAAK,SAAS,EAAuB,MAAM,SAAS,CAAA;AAoB/G,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAKxE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CACnC,SAAS,EAAE,GAAG,EACd,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,EACb,WAAW,EAAE,OAAO,QAoBpB;AAED,KAAK,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AACpD,KAAK,mBAAmB,GAAG;IAC1B,MAAM,EAAE,GAAG,CAAA;IACX,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,GAAG,CAAA;IACT,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAA;CAC3C,CAAA;AA0BD,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,EACb,OAAO,GAAE,YAA4B,EACrC,aAAa,GAAE,mBAAmB,EAAO,EACzC,MAAM,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACzC,mBAAmB,EAAE,CAYvB;AA+FD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,mBAAmB,EAAE,QA2DzE"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EffectTrigger, Evolution } from './types';
|
|
2
2
|
export declare const objectParents: WeakMap<object, Set<{
|
|
3
3
|
parent: object;
|
|
4
4
|
prop: PropertyKey;
|
|
5
5
|
}>>;
|
|
6
6
|
export declare const objectsWithDeepWatchers: WeakSet<object>;
|
|
7
|
-
export declare const deepWatchers: WeakMap<object, Set<
|
|
8
|
-
export declare const effectToDeepWatchedObjects: WeakMap<
|
|
7
|
+
export declare const deepWatchers: WeakMap<object, Set<EffectTrigger>>;
|
|
8
|
+
export declare const effectToDeepWatchedObjects: WeakMap<EffectTrigger, Set<object>>;
|
|
9
9
|
/**
|
|
10
10
|
* Add a back-reference from child to parent
|
|
11
11
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-watch-state.d.ts","sourceRoot":"","sources":["../../../src/reactive/deep-watch-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGvD,eAAO,MAAM,aAAa;YAAqC,MAAM;UAAQ,WAAW;GAAM,CAAA;AAG9F,eAAO,MAAM,uBAAuB,iBAAwB,CAAA;AAG5D,eAAO,MAAM,YAAY,qCAA4C,CAAA;AAGrE,eAAO,MAAM,0BAA0B,qCAA4C,CAAA;AAEnF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAOxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAa3E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,QAYzE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type EffectCleanup } from './types';
|
|
1
2
|
export { addBackReference, bubbleUpChange, deepWatchers, effectToDeepWatchedObjects, needsBackReferences, objectParents, objectsWithDeepWatchers, removeBackReference, } from './deep-watch-state';
|
|
2
3
|
/**
|
|
3
4
|
* Deep watch an object and all its nested properties
|
|
@@ -15,5 +16,5 @@ export { addBackReference, bubbleUpChange, deepWatchers, effectToDeepWatchedObje
|
|
|
15
16
|
*/
|
|
16
17
|
export declare function deepWatch<T extends object>(target: T, callback: (value: T) => void, { immediate }?: {
|
|
17
18
|
immediate?: boolean;
|
|
18
|
-
}):
|
|
19
|
+
}): EffectCleanup | undefined;
|
|
19
20
|
//# sourceMappingURL=deep-watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-watch.d.ts","sourceRoot":"","sources":["../../../src/reactive/deep-watch.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,aAAa,EAA+B,MAAM,SAAS,CAAA;AAMzE,OAAO,EACN,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,GACnB,MAAM,oBAAoB,CAAA;AAE3B;;;;;;GAMG;AACH;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EACzC,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAC5B,EAAE,SAAiB,EAAE;;CAAK,GACxB,aAAa,GAAG,SAAS,CA8H3B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reactively defines properties on a target object based on a descriptors record.
|
|
3
|
+
*
|
|
4
|
+
* It tracks the keys of the descriptors record and defines/updates/removes
|
|
5
|
+
* properties on the target object as they change.
|
|
6
|
+
*
|
|
7
|
+
* @param descriptors - A reactive record of property descriptors.
|
|
8
|
+
* @param target - The object to define properties on (defaults to a new object).
|
|
9
|
+
* @returns The target object with reactive property definitions.
|
|
10
|
+
*/
|
|
11
|
+
export declare function describe<T extends object>(descriptors: Record<PropertyKey, PropertyDescriptor>, target?: T): T;
|
|
12
|
+
//# sourceMappingURL=describe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../../src/reactive/describe.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EACxC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,EACpD,MAAM,GAAE,CAA4B,GAClC,CAAC,CAoBH"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ZoneAggregator, ZoneHistory } from '../zone';
|
|
2
|
+
import { cleanup, type EffectAccess, type EffectTrigger, type ScopedCallback } from './types';
|
|
3
|
+
export declare const effectHistory: ZoneHistory<EffectTrigger>;
|
|
4
|
+
/**
|
|
5
|
+
* Aggregator for zones that need to be tracked along effects.
|
|
6
|
+
* ie. in each effect, the active zone of the given zoning will be the one active at effect's definition
|
|
7
|
+
*/
|
|
8
|
+
export declare const effectAggregator: ZoneAggregator;
|
|
9
|
+
export declare function isRunning(effect: EffectTrigger): boolean;
|
|
10
|
+
export declare function getActiveEffect(): EffectTrigger;
|
|
11
|
+
/**
|
|
12
|
+
* ADD a cleanup function to an object using the cleanup symbol.
|
|
13
|
+
* The cleanup function will be called when the object needs to be disposed.
|
|
14
|
+
*
|
|
15
|
+
* Note: most of the time, you don't need to use this function directly.
|
|
16
|
+
* The main use if for the cleanup function to be stored with the object, as GC calls the cleanup function when the *function* is garbage collected.
|
|
17
|
+
*
|
|
18
|
+
* @param obj - The object to attach the cleanup function to
|
|
19
|
+
* @param cleanupFn - The cleanup function to attach
|
|
20
|
+
* @returns The object with the cleanup function attached
|
|
21
|
+
*/
|
|
22
|
+
export declare function cleanedBy<T extends object>(obj: T, cleanupFn: ScopedCallback): T & {
|
|
23
|
+
[cleanup]: ScopedCallback;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Creates a derived value that automatically recomputes when dependencies change
|
|
27
|
+
* @param compute - Function that computes the derived value
|
|
28
|
+
* @returns Object with value and cleanup function
|
|
29
|
+
*/
|
|
30
|
+
export declare function derived<T>(compute: (dep: EffectAccess) => T): {
|
|
31
|
+
value: T;
|
|
32
|
+
[cleanup]: ScopedCallback;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=effect-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-context.d.ts","sourceRoot":"","sources":["../../../src/reactive/effect-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGhE,OAAO,EACN,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,aAAa,4BAAyD,CAAA;AAInF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gBAAqE,CAAA;AAElG,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAGxD;AAED,wBAAgB,eAAe,kBAE9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,GAiBtE,CAAC,GAAG;IAAE,CAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,CACvC;AAID;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,CAAC,GAAG;IAC9D,KAAK,EAAE,CAAC,CAAA;IACR,CAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB,CAUA"}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type
|
|
1
|
+
import { type StackFrame } from '../../debug/lineage';
|
|
2
|
+
import { type CatchFunction, type EffectAccess, type EffectCleanup, type EffectCloser, type EffectOptions, type EffectTrigger, type Evolution } from './types';
|
|
3
|
+
type EffectTracking = (obj: any, evolution: Evolution, prop: any, effect: EffectTrigger) => void;
|
|
3
4
|
export interface ActivationRecord {
|
|
4
|
-
effect:
|
|
5
|
+
effect: EffectTrigger;
|
|
5
6
|
obj: any;
|
|
6
7
|
evolution: Evolution;
|
|
7
8
|
prop: any;
|
|
8
9
|
batchId: number;
|
|
9
10
|
}
|
|
10
11
|
export declare const activationLog: Omit<ActivationRecord, 'batchId'>[];
|
|
12
|
+
/**
|
|
13
|
+
* Returns the activation log containing recent effect activations for debugging.
|
|
14
|
+
* The log is a circular buffer of the last 100 activations.
|
|
15
|
+
*
|
|
16
|
+
* @returns Array of activation records
|
|
17
|
+
*/
|
|
11
18
|
export declare function getActivationLog(): Omit<ActivationRecord, "batchId">[];
|
|
12
|
-
export declare function recordActivation(effect:
|
|
19
|
+
export declare function recordActivation(effect: EffectTrigger, obj: any, evolution: Evolution, prop: any): void;
|
|
13
20
|
/**
|
|
14
21
|
* Registers a debug callback that is called when the current effect is triggered by a dependency change
|
|
15
22
|
*
|
|
@@ -20,7 +27,7 @@ export declare function recordActivation(effect: ScopedCallback, obj: any, evolu
|
|
|
20
27
|
* - The specific property that changed
|
|
21
28
|
*
|
|
22
29
|
* **Note:** The tracker callback is automatically removed after being called once. If you need
|
|
23
|
-
* to track multiple triggers, call `
|
|
30
|
+
* to track multiple triggers, call `onEffectTrigger` again within the effect.
|
|
24
31
|
*
|
|
25
32
|
* @param onTouch - Callback function that receives (obj, evolution, prop) when the effect is triggered
|
|
26
33
|
* @throws {Error} If called outside of an effect context
|
|
@@ -31,7 +38,7 @@ export declare function recordActivation(effect: ScopedCallback, obj: any, evolu
|
|
|
31
38
|
*
|
|
32
39
|
* effect(() => {
|
|
33
40
|
* // Register a tracker to see what triggers this effect
|
|
34
|
-
*
|
|
41
|
+
* onEffectTrigger((obj, evolution, prop) => {
|
|
35
42
|
* console.log(`Effect triggered by:`, {
|
|
36
43
|
* object: obj,
|
|
37
44
|
* change: evolution.type,
|
|
@@ -44,19 +51,18 @@ export declare function recordActivation(effect: ScopedCallback, obj: any, evolu
|
|
|
44
51
|
* })
|
|
45
52
|
*
|
|
46
53
|
* state.count = 5
|
|
47
|
-
* // Logs: Effect triggered by: { object: state, change: 'set', property: 'count' }
|
|
48
54
|
* ```
|
|
49
55
|
*/
|
|
50
|
-
export declare function
|
|
51
|
-
declare
|
|
52
|
-
export declare
|
|
53
|
-
export declare const effectCreationStacks: WeakMap<Function,
|
|
54
|
-
export declare function hasBatched(effect:
|
|
56
|
+
export declare function onEffectTrigger(onTouch: EffectTracking, effect?: EffectTrigger): void;
|
|
57
|
+
export declare function raiseEffectTrackers(effect: EffectTrigger, obj: any, evolution: Evolution, prop: any): void;
|
|
58
|
+
export declare function onEffectThrow(onThrow: CatchFunction, effect?: EffectTrigger): void;
|
|
59
|
+
export declare const effectCreationStacks: WeakMap<Function, StackFrame[]>;
|
|
60
|
+
export declare function hasBatched(effect: EffectTrigger): boolean;
|
|
55
61
|
/**
|
|
56
62
|
* Adds a cleanup function to be called when the current batch of effects completes
|
|
57
63
|
* @param cleanup - The cleanup function to add
|
|
58
64
|
*/
|
|
59
|
-
export declare function addBatchCleanup(cleanup:
|
|
65
|
+
export declare function addBatchCleanup(cleanup: EffectCleanup): void;
|
|
60
66
|
/**
|
|
61
67
|
* Semantic alias for `addBatchCleanup` - defers work to the end of the current reactive batch.
|
|
62
68
|
*
|
|
@@ -78,7 +84,15 @@ export declare function addBatchCleanup(cleanup: ScopedCallback): void;
|
|
|
78
84
|
* ```
|
|
79
85
|
*/
|
|
80
86
|
export declare const defer: typeof addBatchCleanup;
|
|
81
|
-
export declare function batch(effect:
|
|
87
|
+
export declare function batch(effect: EffectTrigger | EffectTrigger[], immediate?: 'immediate'): any;
|
|
88
|
+
/**
|
|
89
|
+
* Resets the reactive system to a consistent state.
|
|
90
|
+
* Call this after an unrecoverable error has set the system to "broken".
|
|
91
|
+
* This clears all batch state, effect dependency graphs, and watcher registrations.
|
|
92
|
+
* All existing effects become orphaned and must be recreated.
|
|
93
|
+
*/
|
|
94
|
+
export declare function reset(): void;
|
|
95
|
+
export { reset as resetBatchQueueForTest };
|
|
82
96
|
/**
|
|
83
97
|
* Decorator that makes methods atomic - batches all effects triggered within the method
|
|
84
98
|
*/
|
|
@@ -93,9 +107,9 @@ export declare const atomic: import("../decorator").LegacyPropertyDecorator<any>
|
|
|
93
107
|
* @param options - Options for effect execution
|
|
94
108
|
* @returns A cleanup function to stop the effect
|
|
95
109
|
*/
|
|
96
|
-
export declare
|
|
97
|
-
|
|
98
|
-
|
|
110
|
+
export declare const effect: ((fn: (access: EffectAccess) => EffectCloser | undefined | void | Promise<any>, effectOptions?: EffectOptions) => EffectCleanup) & {
|
|
111
|
+
readonly opaque: any;
|
|
112
|
+
named(name: string): any;
|
|
99
113
|
};
|
|
100
114
|
/**
|
|
101
115
|
* Executes a function without tracking dependencies but maintains parent cleanup relationship
|
|
@@ -109,7 +123,6 @@ export declare function untracked<T>(fn: () => T): T;
|
|
|
109
123
|
* @param fn - The function to execute
|
|
110
124
|
*/
|
|
111
125
|
export declare function root<T>(fn: () => T): T;
|
|
112
|
-
export { effectTrackers };
|
|
113
126
|
/**
|
|
114
127
|
* Creates a bidirectional binding between a reactive value and a non-reactive external value
|
|
115
128
|
* Prevents infinite loops by automatically suppressing circular notifications
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../src/reactive/effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { attend, lift, type ScanResult, scan } from './buffer';
|
|
2
|
+
export { getState, touched, touched1 } from './change';
|
|
3
|
+
export { deepWatch } from './deep-watch';
|
|
4
|
+
export { cleanedBy, derived, effectAggregator, getActiveEffect } from './effect-context';
|
|
5
|
+
export { addBatchCleanup, atomic, biDi, defer, effect, getActivationLog, onEffectThrow, onEffectTrigger, reset, root, untracked, } from './effects';
|
|
6
|
+
export { type Memoizable, memoize } from './memoize';
|
|
7
|
+
export { immutables, isNonReactive, registerNativeReactivity } from './non-reactive';
|
|
8
|
+
export { getActiveProjection, project } from './project';
|
|
9
|
+
export { isReactive, ReactiveBase, reactive, unwrap } from './proxy';
|
|
10
|
+
export { organize, organized } from './record';
|
|
11
|
+
export { Register, register } from './register';
|
|
12
|
+
export { cleanup, type EffectAccess as DependencyAccess, type EffectCleanup, type EffectOptions, type EffectTrigger, type Evolution, options as reactiveOptions, ReactiveError, ReactiveErrorCode, type ScopedCallback, } from './types';
|
|
13
|
+
export { unreactive, watch } from './watch';
|
|
14
|
+
export { describe } from './describe';
|
|
15
|
+
/**
|
|
16
|
+
* Object containing internal reactive system state for debugging and profiling
|
|
17
|
+
*/
|
|
18
|
+
export declare const profileInfo: any;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactive/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACxF,OAAO,EACN,eAAe,EACf,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,KAAK,EACL,IAAI,EACJ,SAAS,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACpF,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EACN,OAAO,EACP,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,OAAO,IAAI,eAAe,EAC1B,aAAa,EACb,iBAAiB,EACjB,KAAK,cAAc,GACnB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAsBrC;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,GAUzB,CAAA"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Only tracks individual key operations, no size tracking (WeakMap limitation)
|
|
4
4
|
*/
|
|
5
5
|
export declare abstract class ReactiveWeakMap<K extends object, V> extends WeakMap<K, V> {
|
|
6
|
-
get [Symbol.toStringTag](): string;
|
|
7
6
|
delete(key: K): boolean;
|
|
8
7
|
get(key: K): V | undefined;
|
|
9
8
|
has(key: K): boolean;
|
|
@@ -14,7 +13,6 @@ export declare abstract class ReactiveWeakMap<K extends object, V> extends WeakM
|
|
|
14
13
|
* Tracks size changes, individual key operations, and collection-wide operations
|
|
15
14
|
*/
|
|
16
15
|
export declare abstract class ReactiveMap<K, V> extends Map<K, V> {
|
|
17
|
-
get [Symbol.toStringTag](): string;
|
|
18
16
|
get size(): number;
|
|
19
17
|
clear(): void;
|
|
20
18
|
entries(): Generator<[K, V]>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../src/reactive/map.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,8BAAsB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAE/E,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IASvB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAK1B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAKpB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;CAY3B;AAED;;;GAGG;AACH,8BAAsB,WAAW,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAExD,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,KAAK,IAAI,IAAI;IAYb,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAK5B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAKpF,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC;IAKtB,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC;IAKtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAcxC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAavB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAK1B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAKpB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;CAe3B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type Memoizable = object | any[] | symbol | ((...args: any[]) => any);
|
|
2
|
+
declare function memoizeFunction<Result, Args extends Memoizable[]>(fn: (...args: Args) => Result): (...args: Args) => Result;
|
|
3
|
+
/**
|
|
4
|
+
* Decorator and function wrapper for memoizing computed values based on reactive dependencies.
|
|
5
|
+
*
|
|
6
|
+
* When used as a decorator on getters or methods, it caches the result and automatically
|
|
7
|
+
* invalidates the cache when reactive dependencies change.
|
|
8
|
+
*
|
|
9
|
+
* When used as a function wrapper, it memoizes based on object arguments (WeakMap-based cache).
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* class User {
|
|
14
|
+
* @memoize
|
|
15
|
+
* get fullName() {
|
|
16
|
+
* return `${this.firstName} ${this.lastName}`
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* // Or as a function wrapper
|
|
21
|
+
* const expensive = memoize((obj: SomeObject) => {
|
|
22
|
+
* return heavyComputation(obj)
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare const memoize: import("../decorator").LegacyPropertyDecorator<any> & import("../decorator").ModernMethodDecorator<any> & import("../decorator").ModernGetterDecorator<any> & import("../decorator").ModernAccessorDecorator<any> & typeof memoizeFunction;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=memoize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../../../src/reactive/memoize.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAA;AAqB5E,iBAAS,eAAe,CAAC,MAAM,EAAE,IAAI,SAAS,UAAU,EAAE,EACzD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,GAC3B,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CA6E3B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,OAAO,4OAoDlB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-reactive-state.d.ts","sourceRoot":"","sources":["../../../src/reactive/non-reactive-state.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,iBAAwB,CAAA;AACvD,eAAO,MAAM,UAAU,eAAoB,GAAG,KAAK,OAAO,CAAG,CAAA;AAC7D,eAAO,MAAM,MAAM,eAAmB,CAAA;AAEtC,iBAAS,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAa5D;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAG3F;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAM/C;AAED,wBAAgB,wBAAwB,CACvC,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAC1C,aAAa,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,QAI1C;AAQD,OAAO,EAAE,eAAe,IAAI,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-reactive.d.ts","sourceRoot":"","sources":["../../../src/reactive/non-reactive.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,MAAM,EACN,UAAU,EACV,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,MAAM,sBAAsB,CAAA;AAG7B;;GAEG;AACH,wBAAiB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAM5E;AAED;;GAEG;AACH,wBAAiB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAOhG;AAED,OAAO,EACN,MAAM,EACN,UAAU,EACV,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,GACxB,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { cleanup } from './interface';
|
|
2
1
|
import { Register } from './register';
|
|
3
|
-
import { type ProjectionContext, type ScopedCallback } from './types';
|
|
2
|
+
import { cleanup, type ProjectionContext, type ScopedCallback } from './types';
|
|
4
3
|
/**
|
|
5
4
|
* Maps projection effects (item effects) to their projection context
|
|
6
5
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/reactive/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-state.d.ts","sourceRoot":"","sources":["../../../src/reactive/proxy-state.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,yBAAgC,CAAA;AAC1D,eAAO,MAAM,aAAa,yBAAgC,CAAA;AAE1D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAGnE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAE3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAE7D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAMnC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAE5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/reactive/proxy.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,UAAU,uBAAgB,CAAA;AA2KvC;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;SAWvB,CAAA;AACF,iBAAS,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAsB1C;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,6KA4BnB,CAAA;AAEF;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { cleanup } from './
|
|
2
|
-
import { type ScopedCallback } from './types';
|
|
1
|
+
import { cleanup, type EffectCloser, type ScopedCallback } from './types';
|
|
3
2
|
/**
|
|
4
3
|
* Provides type-safe access to a source object's property within the organized callback.
|
|
5
4
|
* @template Source - The type of the source object
|
|
@@ -37,7 +36,7 @@ access: OrganizedAccess<Source, Key>,
|
|
|
37
36
|
/**
|
|
38
37
|
* The target object where organized data will be stored
|
|
39
38
|
*/
|
|
40
|
-
target: Target) =>
|
|
39
|
+
target: Target) => EffectCloser | undefined;
|
|
41
40
|
/**
|
|
42
41
|
* The result type of the organized function, combining the target object with cleanup capability.
|
|
43
42
|
* @template Target - The type of the target object
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../src/reactive/record.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,MAAM,SAAS,CAAA;AAEhB;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,MAAM,MAAM,IAAI;IAChG,sCAAsC;IACtC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IAEjB;;;OAGG;IACH,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;IAElB;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAA;IAEhC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;CAClB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,MAAM,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,SAAS,MAAM,IAAI,CAC/F,GAAG,SAAS,MAAM,MAAM;AAExB;;GAEG;AACH,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC;AAEpC;;GAEG;AACH,MAAM,EAAE,MAAM,KACV,YAAY,GAAG,SAAS,CAAA;AAE7B;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,MAAM,IAAI,MAAM,GAAG;IAC7D;;;OAGG;IACH,CAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,SAAS,CACxB,MAAM,SAAS,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAEhD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,UAAU,GAAE,MAAqB,GAC/B,eAAe,CAAC,MAAM,CAAC,CA6BzB;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE;IAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAA;CAAE,iBAU9C"}
|
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
import { ArrayReadForward, forwardArray, getAt, setAt } from '../indexable';
|
|
2
2
|
type KeyFunction<T, K extends PropertyKey> = (item: T) => K;
|
|
3
|
+
/**
|
|
4
|
+
* Events emitted by the Register for CRUD operations
|
|
5
|
+
*/
|
|
6
|
+
export interface RegisterEvents<T, K extends PropertyKey> {
|
|
7
|
+
/**
|
|
8
|
+
* Emitted when a new item is added to the register
|
|
9
|
+
*/
|
|
10
|
+
add: (item: T, key: K, index: number) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Emitted when an item is removed from the register
|
|
13
|
+
*/
|
|
14
|
+
delete: (item: T, key: K, index: number) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Emitted when an item's value is updated (same key, new value)
|
|
17
|
+
*/
|
|
18
|
+
update: (oldItem: T, newItem: T, key: K, index: number) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Emitted when an item's key changes (rekey operation)
|
|
21
|
+
*/
|
|
22
|
+
rekey: (item: T, oldKey: K, newKey: K, index: number) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Index signature for EventsBase compatibility
|
|
25
|
+
*/
|
|
26
|
+
[key: string]: (...args: any[]) => void;
|
|
27
|
+
}
|
|
3
28
|
interface RegisterInstance<T> extends ArrayReadForward<T> {
|
|
4
29
|
[index: number]: T;
|
|
5
30
|
}
|
|
@@ -10,6 +35,20 @@ declare const RegisterClass_base: new () => ArrayReadForward<any> & {
|
|
|
10
35
|
declare class RegisterClass<T, K extends PropertyKey = PropertyKey> extends RegisterClass_base implements RegisterInstance<T> {
|
|
11
36
|
#private;
|
|
12
37
|
protected get [forwardArray](): readonly T[];
|
|
38
|
+
/**
|
|
39
|
+
* Register event listeners for CRUD operations
|
|
40
|
+
*/
|
|
41
|
+
on(events: Partial<RegisterEvents<T, K>>): void;
|
|
42
|
+
on<EventType extends keyof RegisterEvents<T, K>>(event: EventType, cb: RegisterEvents<T, K>[EventType]): () => void;
|
|
43
|
+
/**
|
|
44
|
+
* Remove event listeners
|
|
45
|
+
*/
|
|
46
|
+
off(events: Partial<RegisterEvents<T, K>>): void;
|
|
47
|
+
off<EventType extends keyof RegisterEvents<T, K>>(event: EventType, cb?: RegisterEvents<T, K>[EventType]): void;
|
|
48
|
+
/**
|
|
49
|
+
* Register a global hook that receives all events
|
|
50
|
+
*/
|
|
51
|
+
hook(cb: <EventType extends keyof RegisterEvents<T, K>>(event: EventType, ...args: Parameters<RegisterEvents<T, K>[EventType]>) => void): () => void;
|
|
13
52
|
constructor(keyFn: KeyFunction<T, K>, initial?: Iterable<T>);
|
|
14
53
|
private ensureKey;
|
|
15
54
|
private assertValidKey;
|
|
@@ -59,6 +98,28 @@ declare class RegisterClass<T, K extends PropertyKey = PropertyKey> extends Regi
|
|
|
59
98
|
}
|
|
60
99
|
export type Register<T, K extends PropertyKey = PropertyKey> = RegisterClass<T, K> & T[];
|
|
61
100
|
export declare const Register: new <T, K extends PropertyKey = PropertyKey>(keyFn: KeyFunction<T, K>, initial?: Iterable<T>) => Register<T, K>;
|
|
101
|
+
/**
|
|
102
|
+
* Creates a reactive Register - an ordered, array-like collection with stable key-based identity.
|
|
103
|
+
*
|
|
104
|
+
* Register combines array semantics (indexable access, ordering, iteration) with Map-like
|
|
105
|
+
* key-based lookups. Items with the same key share the same value instance, making it ideal
|
|
106
|
+
* for UI lists keyed by IDs or when you need to preserve identity across reorders.
|
|
107
|
+
*
|
|
108
|
+
* @param keyFn - Function that extracts the key from each item
|
|
109
|
+
* @param initial - Optional initial items to populate the register
|
|
110
|
+
* @returns A reactive Register instance
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const users = register(
|
|
115
|
+
* (user: User) => user.id,
|
|
116
|
+
* [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]
|
|
117
|
+
* )
|
|
118
|
+
*
|
|
119
|
+
* users.push({ id: 3, name: 'Charlie' })
|
|
120
|
+
* const bob = users.get(2) // Get by key
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
62
123
|
export declare function register<T, K extends PropertyKey = PropertyKey>(keyFn: KeyFunction<T, K>, initial?: Iterable<T>): Register<T, K>;
|
|
63
124
|
export {};
|
|
64
125
|
//# sourceMappingURL=register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/reactive/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
5
|
-
export declare
|
|
1
|
+
import { type EffectNode, type EffectTrigger } from './types';
|
|
2
|
+
export declare let effectToReactiveObjects: WeakMap<import("./types").ScopedCallback, Set<object>>;
|
|
3
|
+
export declare let watchers: WeakMap<object, Map<any, Set<import("./types").ScopedCallback>>>;
|
|
4
|
+
export declare let effectNodes: WeakMap<import("./types").ScopedCallback, EffectNode>;
|
|
5
|
+
export declare function getEffectNode(effect: EffectTrigger): EffectNode;
|
|
6
|
+
export declare function resetRegistry(): void;
|
|
6
7
|
/**
|
|
7
8
|
* Marks a function with its root function for effect tracking
|
|
8
9
|
* Enforces strict unicity: A root function can only identify ONE function.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/reactive/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,UAAU,EAAE,KAAK,aAAa,EAAgB,MAAM,SAAS,CAAA;AAG/F,eAAO,IAAI,uBAAuB,wDAA4C,CAAA;AAG9E,eAAO,IAAI,QAAQ,kEAAsD,CAAA;AAGzE,eAAO,IAAI,WAAW,uDAA2C,CAAA;AAEjE,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAO/D;AAKD,wBAAgB,aAAa,SAK5B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,CAwBpE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAGhE"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Only tracks individual value operations, no size tracking (WeakSet limitation)
|
|
4
4
|
*/
|
|
5
5
|
export declare abstract class ReactiveWeakSet<T extends object> extends WeakSet<T> {
|
|
6
|
-
get [Symbol.toStringTag](): string;
|
|
7
6
|
add(value: T): this;
|
|
8
7
|
delete(value: T): boolean;
|
|
9
8
|
has(value: T): boolean;
|
|
@@ -13,7 +12,6 @@ export declare abstract class ReactiveWeakSet<T extends object> extends WeakSet<
|
|
|
13
12
|
* Tracks size changes, individual value operations, and collection-wide operations
|
|
14
13
|
*/
|
|
15
14
|
export declare abstract class ReactiveSet<T> extends Set<T> {
|
|
16
|
-
get [Symbol.toStringTag](): string;
|
|
17
15
|
get size(): number;
|
|
18
16
|
add(value: T): this;
|
|
19
17
|
clear(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/reactive/set.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,8BAAsB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACzE,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAWnB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAOzB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;CAItB;AAED;;;GAGG;AACH,8BAAsB,WAAW,CAAC,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,CAAC;IAClD,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAanB,KAAK,IAAI,IAAI;IAUb,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAWzB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAKtB,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAK5B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAKpF,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC;IAKpB,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC;IAKtB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;CAWnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../../../src/reactive/tracking.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,GAAc,QA8BvD"}
|