mutts 1.0.7 → 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 +72 -17
- package/dist/browser.cjs +3111 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.ts +1391 -1
- package/dist/browser.esm.js +264 -35
- package/dist/browser.esm.js.map +1 -1
- package/dist/chunks/async-browser-lvzLOCgk.cjs +297 -0
- package/dist/chunks/async-browser-lvzLOCgk.cjs.map +1 -0
- package/dist/chunks/async-core-CRLKP3l-.cjs +29 -0
- package/dist/chunks/async-core-CRLKP3l-.cjs.map +1 -0
- package/dist/chunks/async-node-C3DeIb0y.cjs +96 -0
- 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/debug/debug.d.ts +122 -0
- 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/devtools/devtool/devtools.d.ts +1 -0
- package/dist/devtools/devtool/devtools.d.ts.map +1 -0
- package/dist/devtools/devtool/panel.d.ts +2 -0
- package/dist/devtools/devtool/panel.d.ts.map +1 -0
- package/dist/index.d.ts +1 -0
- 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 +107 -0
- package/dist/node.cjs.map +1 -0
- package/dist/node.d.ts +2 -2
- package/dist/node.esm.js +86 -33
- package/dist/node.esm.js.map +1 -1
- package/dist/src/async/browser.d.ts +2 -0
- package/dist/src/async/browser.d.ts.map +1 -0
- package/dist/src/async/index.d.ts +19 -0
- package/dist/src/async/index.d.ts.map +1 -0
- package/dist/src/async/node.d.ts +2 -0
- package/dist/src/async/node.d.ts.map +1 -0
- package/dist/src/decorator.d.ts +106 -0
- package/dist/src/decorator.d.ts.map +1 -0
- package/dist/src/destroyable.d.ts +87 -0
- package/dist/src/destroyable.d.ts.map +1 -0
- package/dist/src/entry-browser.d.ts +3 -0
- package/dist/src/entry-browser.d.ts.map +1 -0
- package/dist/src/entry-node.d.ts +3 -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 +243 -0
- package/dist/src/indexable.d.ts.map +1 -0
- package/dist/src/introspection.d.ts +27 -0
- package/dist/src/introspection.d.ts.map +1 -0
- package/dist/src/iterableWeak.d.ts +53 -0
- package/dist/src/iterableWeak.d.ts.map +1 -0
- package/dist/src/mixins.d.ts +25 -0
- package/dist/src/mixins.d.ts.map +1 -0
- package/dist/src/promiseChain.d.ts +20 -0
- package/dist/src/promiseChain.d.ts.map +1 -0
- package/dist/src/reactive/array.d.ts +48 -0
- 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/src/reactive/change.d.ts +29 -0
- package/dist/src/reactive/change.d.ts.map +1 -0
- package/dist/src/reactive/deep-touch.d.ts +28 -0
- package/dist/src/reactive/deep-touch.d.ts.map +1 -0
- package/dist/src/reactive/deep-watch-state.d.ts +25 -0
- package/dist/src/reactive/deep-watch-state.d.ts.map +1 -0
- package/dist/src/reactive/deep-watch.d.ts +20 -0
- 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/src/reactive/effects.d.ts +164 -0
- 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/src/reactive/map.d.ts +28 -0
- 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 +9 -0
- package/dist/src/reactive/non-reactive-state.d.ts.map +1 -0
- package/dist/src/reactive/non-reactive.d.ts +11 -0
- package/dist/src/reactive/non-reactive.d.ts.map +1 -0
- package/dist/src/reactive/project.d.ts +40 -0
- package/dist/src/reactive/project.d.ts.map +1 -0
- package/dist/src/reactive/proxy-state.d.ts +8 -0
- package/dist/src/reactive/proxy-state.d.ts.map +1 -0
- package/dist/src/reactive/proxy.d.ts +23 -0
- package/dist/src/reactive/proxy.d.ts.map +1 -0
- package/dist/src/reactive/record.d.ts +115 -0
- package/dist/src/reactive/record.d.ts.map +1 -0
- package/dist/src/reactive/register.d.ts +125 -0
- package/dist/src/reactive/register.d.ts.map +1 -0
- package/dist/src/reactive/registry.d.ts +21 -0
- package/dist/src/reactive/registry.d.ts.map +1 -0
- package/dist/src/reactive/set.d.ts +26 -0
- package/dist/src/reactive/set.d.ts.map +1 -0
- package/dist/src/reactive/tracking.d.ts +7 -0
- package/dist/src/reactive/tracking.d.ts.map +1 -0
- package/dist/src/reactive/types.d.ts +424 -0
- package/dist/src/reactive/types.d.ts.map +1 -0
- package/dist/src/reactive/watch.d.ts +48 -0
- package/dist/src/reactive/watch.d.ts.map +1 -0
- package/dist/src/std-decorators.d.ts +45 -0
- package/dist/src/std-decorators.d.ts.map +1 -0
- package/dist/src/utils.d.ts +49 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/zone.d.ts +40 -0
- 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 +171 -52
- package/docs/zone.md +9 -6
- package/package.json +44 -27
- package/src/async/browser.ts +277 -41
- package/src/async/index.ts +23 -4
- package/src/async/node.ts +78 -32
- package/src/entry-browser.ts +5 -0
- package/src/entry-node.ts +5 -0
- package/src/eventful.ts +82 -49
- package/src/flavored.ts +106 -0
- package/src/index.d.ts +12 -9
- package/src/index.ts +2 -1
- package/src/introspection.ts +1 -1
- package/src/reactive/array.ts +160 -80
- 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 +71 -6
- package/src/reactive/effects.ts +445 -393
- package/src/reactive/index.ts +12 -14
- package/src/reactive/map.ts +8 -24
- 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 +7 -20
- 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 +3 -4
- package/src/zone.ts +43 -28
- package/dist/browser.js +0 -161
- package/dist/browser.js.map +0 -1
- package/dist/chunks/index-BFYK02LG.js +0 -6378
- package/dist/chunks/index-BFYK02LG.js.map +0 -1
- package/dist/chunks/index-CNR6QRUl.esm.js +0 -6291
- package/dist/chunks/index-CNR6QRUl.esm.js.map +0 -1
- package/dist/node.js +0 -136
- package/dist/node.js.map +0 -1
- package/src/reactive/debug.ts +0 -517
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.cjs","sources":["../src/destroyable.ts","../src/eventful.ts","../src/indexable.ts","../src/promiseChain.ts","../src/reactive/memoize.ts","../src/reactive/buffer.ts","../src/reactive/deep-watch.ts","../src/reactive/non-reactive.ts","../src/reactive/watch.ts","../src/reactive/register.ts","../src/reactive/project.ts","../src/reactive/record.ts","../src/reactive/describe.ts","../src/reactive/array.ts","../src/reactive/map.ts","../src/reactive/set.ts","../src/reactive/index.ts","../src/std-decorators.ts","../src/index.ts"],"sourcesContent":["import { decorator } from './decorator'\n\n// Integrated with `using` statement via Symbol.dispose\nconst fr = new FinalizationRegistry<() => void>((f) => f())\n/**\n * Symbol for marking destructor methods\n */\nexport const destructor = Symbol('destructor')\n/**\n * Symbol for accessing allocated values in destroyable objects\n */\nexport const allocatedValues = Symbol('allocated')\n/**\n * Error thrown when attempting to access a destroyed object\n */\nexport class DestructionError extends Error {\n\tstatic throw<_T = void>(msg: string) {\n\t\treturn () => {\n\t\t\tthrow new DestructionError(msg)\n\t\t}\n\t}\n\tconstructor(msg: string) {\n\t\tsuper(`Object is destroyed. ${msg}`)\n\t\tthis.name = 'DestroyedAccessError'\n\t}\n}\nconst destroyedHandler = {\n\t[Symbol.toStringTag]: 'MutTs Destroyable',\n\tget: DestructionError.throw('Cannot access destroyed object'),\n\tset: DestructionError.throw('Cannot access destroyed object'),\n} as const\n\nabstract class AbstractDestroyable<Allocated> {\n\tabstract [destructor](allocated: Allocated): void\n\t[Symbol.dispose](): void {\n\t\tthis[destructor](this as unknown as Allocated)\n\t}\n}\n\ninterface Destructor<Allocated> {\n\tdestructor(allocated: Allocated): void\n}\n\n/**\n * Creates a destroyable class with a base class and destructor object\n * @param base - The base class to extend\n * @param destructorObj - Object containing the destructor method\n * @returns A destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<\n\tT extends new (\n\t\t...args: any[]\n\t) => any,\n\tAllocated extends Partial<InstanceType<T>>,\n>(\n\tbase: T,\n\tdestructorObj: Destructor<Allocated>\n): (new (\n\t...args: ConstructorParameters<T>\n) => InstanceType<T> & { [allocatedValues]: Allocated }) & {\n\tdestroy(obj: InstanceType<T>): boolean\n\tisDestroyable(obj: InstanceType<T>): boolean\n}\n\n/**\n * Creates a destroyable class with only a destructor object (no base class)\n * @param destructorObj - Object containing the destructor method\n * @returns A destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<Allocated extends Record<PropertyKey, any> = Record<PropertyKey, any>>(\n\tdestructorObj: Destructor<Allocated>\n): (new () => { [allocatedValues]: Allocated }) & {\n\tdestroy(obj: any): boolean\n\tisDestroyable(obj: any): boolean\n}\n\n/**\n * Creates a destroyable class with a base class (requires [destructor] method)\n * @param base - The base class to extend\n * @returns A destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<\n\tT extends new (\n\t\t...args: any[]\n\t) => any,\n\tAllocated extends Record<PropertyKey, any> = Record<PropertyKey, any>,\n>(\n\tbase: T\n): (new (\n\t...args: ConstructorParameters<T>\n) => AbstractDestroyable<Allocated> & InstanceType<T> & { [allocatedValues]: Allocated }) & {\n\tdestroy(obj: InstanceType<T>): boolean\n\tisDestroyable(obj: InstanceType<T>): boolean\n}\n\n/**\n * Creates an abstract destroyable base class\n * @returns An abstract destroyable class with static destroy and isDestroyable methods\n */\nexport function Destroyable<\n\tAllocated extends Record<PropertyKey, any> = Record<PropertyKey, any>,\n>(): abstract new () => (AbstractDestroyable<Allocated> & {\n\t[allocatedValues]: Allocated\n}) & {\n\tdestroy(obj: any): boolean\n\tisDestroyable(obj: any): boolean\n}\n\nexport function Destroyable<\n\tT extends new (\n\t\t...args: any[]\n\t) => any,\n\tAllocated extends Record<PropertyKey, any> = Record<PropertyKey, any>,\n>(base?: T | Destructor<Allocated>, destructorObj?: Destructor<Allocated>) {\n\tif (base && typeof base !== 'function') {\n\t\tdestructorObj = base as Destructor<Allocated>\n\t\tbase = undefined\n\t}\n\tif (!base) {\n\t\tbase = class {} as T\n\t}\n\n\treturn class Destroyable extends (base as T) {\n\t\tstatic readonly destructors = new WeakMap<any, () => void>()\n\t\tstatic destroy(obj: Destroyable) {\n\t\t\tconst destructor = Destroyable.destructors.get(obj)\n\t\t\tif (!destructor) return false\n\t\t\tfr.unregister(obj[allocatedValues])\n\t\t\tDestroyable.destructors.delete(obj)\n\t\t\tObject.setPrototypeOf(obj, new Proxy({}, destroyedHandler))\n\t\t\t// Clear all own properties\n\t\t\tfor (const key of Object.getOwnPropertyNames(obj)) {\n\t\t\t\tdelete (obj as any)[key]\n\t\t\t}\n\t\t\tdestructor()\n\t\t\treturn true\n\t\t}\n\t\tstatic isDestroyable(obj: Destroyable) {\n\t\t\treturn Destroyable.destructors.has(obj)\n\t\t}\n\n\t\t[forwardProperties]!: PropertyKey[]\n\t\treadonly [allocatedValues]: Allocated\n\t\tconstructor(...args: any[]) {\n\t\t\tsuper(...args)\n\t\t\tconst allocated = {} as Allocated\n\t\t\tthis[allocatedValues] = allocated\n\t\t\t// @ts-expect-error `this` is an AbstractDestroyable\n\t\t\tconst myDestructor = destructorObj?.destructor ?? this[destructor]\n\t\t\tif (!myDestructor) {\n\t\t\t\tthrow new DestructionError('Destructor is not defined')\n\t\t\t}\n\t\t\tfunction destruction() {\n\t\t\t\tmyDestructor(allocated)\n\t\t\t}\n\t\t\tDestroyable.destructors.set(this, destruction)\n\t\t\tfr.register(this, destruction, allocated)\n\t\t}\n\t}\n}\n\nconst forwardProperties = Symbol('forwardProperties')\n/**\n * Decorator that marks properties to be stored in the allocated object and passed to the destructor\n * Use with accessor properties or explicit get/set pairs\n */\nexport const allocated = decorator({\n\tsetter(original, _target, propertyKey) {\n\t\treturn function (value) {\n\t\t\tthis[allocatedValues][propertyKey] = value\n\t\t\treturn original.call(this, value)\n\t\t}\n\t},\n})\n\n/**\n * Registers a callback to be called when an object is garbage collected\n * @param cb - The callback function to execute on garbage collection\n * @returns The object whose reference can be collected\n */\nexport function callOnGC(cb: () => void) {\n\tlet called = false\n\tconst forward = () => {\n\t\tif (called) return\n\t\tcalled = true\n\t\tcb()\n\t}\n\tfr.register(forward, cb, cb)\n\treturn forward\n}\n\n/**\n * Context Manager Protocol for `using` statement integration\n * Provides automatic resource cleanup when used with the `using` statement\n */\nexport interface ContextManager<T = any> {\n\t[Symbol.dispose](): void\n\tvalue?: T\n}\n","/**\n * Base type for event maps - all event handlers must be functions\n */\nexport type EventsBase = Record<string, (...args: any[]) => void>\n\nconst events = Symbol('events')\nconst hooks = Symbol('hooks')\n\nconst eventBehavior = {\n\ton<EventType extends keyof EventsBase>(\n\t\teventOrEvents: EventType | Partial<EventsBase>,\n\t\tcb?: EventsBase[EventType]\n\t): () => void {\n\t\tif (typeof eventOrEvents === 'object') {\n\t\t\tfor (const e of Object.keys(eventOrEvents) as (keyof EventsBase)[]) {\n\t\t\t\tthis.on(e, eventOrEvents[e]!)\n\t\t\t}\n\t\t} else if (cb !== undefined) {\n\t\t\tconst callbacks = this[events].get(eventOrEvents) ?? new Set<EventsBase[EventType]>()\n\t\t\tif (!callbacks.has(cb)) callbacks.add(cb)\n\t\t\tthis[events].set(eventOrEvents, callbacks)\n\t\t}\n\t\treturn () => this.off(eventOrEvents, cb)\n\t},\n\toff<EventType extends keyof EventsBase>(\n\t\teventOrEvents: EventType | Partial<EventsBase>,\n\t\tcb?: EventsBase[EventType]\n\t): void {\n\t\tif (typeof eventOrEvents === 'object') {\n\t\t\tfor (const e of Object.keys(eventOrEvents) as (keyof EventsBase)[]) {\n\t\t\t\tthis.off(e, eventOrEvents[e])\n\t\t\t}\n\t\t} else if (cb !== null && cb !== undefined) {\n\t\t\tconst callbacks = this[events].get(eventOrEvents)\n\t\t\tif (callbacks) {\n\t\t\t\tcallbacks.delete(cb)\n\t\t\t\tif (!callbacks.size) this[events].delete(eventOrEvents)\n\t\t\t}\n\t\t} else {\n\t\t\t// Remove all listeners for this event\n\t\t\tthis[events].delete(eventOrEvents)\n\t\t}\n\t},\n\temit<EventType extends keyof EventsBase>(\n\t\tevent: EventType,\n\t\t...args: Parameters<EventsBase[EventType]>\n\t) {\n\t\tconst callbacks = this[events].get(event)\n\t\tif (callbacks) for (const cb of callbacks) cb.apply(this, args)\n\t\tfor (const cb of this[hooks]) cb.call(this, event, ...args)\n\t},\n}\n\nfunction perEvent(\n\teventful: Eventful<any>,\n\tfct: (event: string, ...args: any[]) => void,\n\tuse?: 'use'\n) {\n\tconst cache = new Map<string, (...args: any[]) => any>()\n\treturn new Proxy(fct, {\n\t\tget(target, prop: PropertyKey) {\n\t\t\tif (typeof prop !== 'string') return target[prop]\n\t\t\tif (use && !eventful[events].has(prop) && !eventful[hooks].size) return () => {}\n\n\t\t\t// Return cached function or create and cache\n\t\t\tlet cached = cache.get(prop)\n\t\t\tif (!cached) {\n\t\t\t\tcached = (...args: any[]) => fct.apply(eventful, [prop, ...args])\n\t\t\t\tcache.set(prop, cached)\n\t\t\t}\n\t\t\treturn cached\n\t\t},\n\t})\n}\n\n/**\n * A type-safe event system that provides a clean API for event handling\n * @template Events - The event map defining event names and their handler signatures\n */\nexport class Eventful<Events extends EventsBase> {\n\tprivate readonly [events] = new Map<keyof Events, Set<(...args: any[]) => void>>()\n\tprivate readonly [hooks] = new Set<(...args: any[]) => void>()\n\n\tpublic hook(\n\t\tcb: <EventType extends keyof Events>(\n\t\t\tevent: EventType,\n\t\t\t...args: Parameters<Events[EventType]>\n\t\t) => void\n\t): () => void {\n\t\tthis[hooks].add(cb)\n\t\treturn () => {\n\t\t\tthis[hooks].delete(cb)\n\t\t}\n\t}\n\n\tpublic on = perEvent(this, eventBehavior.on) as ((events: Partial<Events>) => void) &\n\t\t(<EventType extends keyof Events>(event: EventType, cb: Events[EventType]) => () => void) & {\n\t\t\t[event in keyof Events]: (cb: Events[event]) => () => void\n\t\t}\n\tpublic off = perEvent(this, eventBehavior.off) as ((events: Partial<Events>) => void) &\n\t\t(<EventType extends keyof Events>(event: EventType, cb?: Events[EventType]) => void) & {\n\t\t\t[event in keyof Events]: (cb?: Events[event]) => void\n\t\t}\n\n\tpublic emit = perEvent(this, eventBehavior.emit, 'use') as (<EventType extends keyof Events>(\n\t\tevent: EventType,\n\t\t...args: Parameters<Events[EventType]>\n\t) => void) &\n\t\tEvents\n}\n","/**\n * Symbol for defining custom getter logic for numeric index access\n */\nexport const getAt = Symbol('getAt')\n/**\n * Symbol for defining custom setter logic for numeric index access\n */\nexport const setAt = Symbol('setAt')\n\ninterface IndexingAt<Items = any> {\n\t[getAt](index: number): Items\n}\n\ninterface Accessor<T, Items> {\n\tget(this: T, index: number): Items\n\tset?(this: T, index: number, value: Items): void\n\tgetLength?(this: T): number\n\tsetLength?(this: T, value: number): void\n}\n\nabstract class AbstractGetAt<Items = any> {\n\tabstract [getAt](index: number): Items\n}\n\n/**\n * Creates an indexable class with a base class and accessor object\n * @param base - The base class to extend\n * @param accessor - Object containing get/set methods for numeric index access\n * @returns A class that supports numeric index access\n */\nexport function Indexable<Items, Base extends abstract new (...args: any[]) => any>(\n\tbase: Base,\n\taccessor: Accessor<InstanceType<Base>, Items>\n): new (\n\t...args: ConstructorParameters<Base>\n) => InstanceType<Base> & { [x: number]: Items }\n\n/**\n * Creates an indexable class with only an accessor object (no base class)\n * @param accessor - Object containing get/set methods for numeric index access\n * @returns A class that supports numeric index access\n */\nexport function Indexable<Items>(accessor: Accessor<any, Items>): new () => { [x: number]: Items }\n\n/**\n * Creates an indexable class with a base class that has [getAt] method\n * @param base - The base class that implements [getAt] method\n * @returns A class that supports numeric index access using the base class's [getAt] method\n */\nexport function Indexable<Base extends new (...args: any[]) => IndexingAt>(\n\tbase: Base\n): new (\n\t...args: ConstructorParameters<Base>\n) => InstanceType<Base> & { [x: number]: AtReturnType<InstanceType<Base>> }\n\n/**\n * Creates an abstract indexable base class\n * @returns An abstract class that supports numeric index access\n */\nexport function Indexable<Items>(): abstract new (\n\t...args: any[]\n) => AbstractGetAt & { [x: number]: Items }\n\nexport function Indexable<Items, Base extends abstract new (...args: any[]) => any>(\n\tbase?: Base | Accessor<Base, Items>,\n\taccessor?: Accessor<Base, Items>\n) {\n\tif (base && typeof base !== 'function') {\n\t\taccessor = base as Accessor<Base, Items>\n\t\tbase = undefined\n\t}\n\tif (!base) {\n\t\t//@ts-expect-error\n\t\tbase = class {} as Base\n\t}\n\tif (!accessor) {\n\t\taccessor = {\n\t\t\tget(this: any, index: number) {\n\t\t\t\tif (typeof this[getAt] !== 'function') {\n\t\t\t\t\tthrow new Error('Indexable class must have an [getAt] method')\n\t\t\t\t}\n\t\t\t\treturn this[getAt](index)\n\t\t\t},\n\t\t\tset(this: any, index: number, value: Items) {\n\t\t\t\tif (typeof this[setAt] !== 'function') {\n\t\t\t\t\tthrow new Error('Indexable class has read-only numeric index access')\n\t\t\t\t}\n\t\t\t\tthis[setAt](index, value)\n\t\t\t},\n\t\t}\n\t}\n\n\tabstract class Indexable extends (base as Base) {\n\t\t[x: number]: Items\n\t}\n\n\tObject.setPrototypeOf(\n\t\tIndexable.prototype,\n\t\tnew Proxy((base as Base).prototype, {\n\t\t\t//@ts-expect-error\n\t\t\t[Symbol.toStringTag]: 'MutTs Indexable',\n\t\t\tget(target, prop, receiver) {\n\t\t\t\tif (prop in target) {\n\t\t\t\t\tconst getter = Object.getOwnPropertyDescriptor(target, prop)?.get\n\t\t\t\t\treturn getter ? getter.call(receiver) : target[prop]\n\t\t\t\t}\n\t\t\t\tif (typeof prop === 'string') {\n\t\t\t\t\tif (prop === 'length' && accessor.getLength) return accessor.getLength.call(receiver)\n\t\t\t\t\tconst numProp = Number(prop)\n\t\t\t\t\tif (!Number.isNaN(numProp)) {\n\t\t\t\t\t\treturn accessor.get!.call(receiver, numProp) as Items\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn undefined\n\t\t\t},\n\t\t\tset(target, prop, value, receiver) {\n\t\t\t\tif (prop in target) {\n\t\t\t\t\tconst setter = Object.getOwnPropertyDescriptor(target, prop)?.set\n\t\t\t\t\tif (setter) setter.call(receiver, value)\n\t\t\t\t\telse target[prop] = value\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (typeof prop === 'string') {\n\t\t\t\t\tif (prop === 'length' && accessor.setLength) {\n\t\t\t\t\t\taccessor.setLength.call(receiver, value)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t\tconst numProp = Number(prop)\n\t\t\t\t\tif (!Number.isNaN(numProp)) {\n\t\t\t\t\t\tif (!accessor.set) throw new Error('Indexable class has read-only numeric index access')\n\t\t\t\t\t\taccessor.set!.call(receiver, numProp, value)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tObject.defineProperty(receiver, prop, {\n\t\t\t\t\tvalue,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t},\n\t\t\thas(target, prop) {\n\t\t\t\tif (prop in target) return true\n\t\t\t\tif (typeof prop === 'string') {\n\t\t\t\t\tif (prop === 'length' && accessor.getLength) return true\n\t\t\t\t\tconst numProp = Number(prop)\n\t\t\t\t\tif (!Number.isNaN(numProp)) return true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t},\n\t\t\townKeys(target) {\n\t\t\t\tconst keys = Reflect.ownKeys(target)\n\t\t\t\tif (accessor.getLength) {\n\t\t\t\t\tkeys.push('length')\n\t\t\t\t\tconst len = accessor.getLength.call(this as any)\n\t\t\t\t\tfor (let i = 0; i < len; i++) keys.push(String(i))\n\t\t\t\t}\n\t\t\t\treturn keys\n\t\t\t},\n\t\t\tgetOwnPropertyDescriptor(target, prop) {\n\t\t\t\tif (prop in target) return Object.getOwnPropertyDescriptor(target, prop)\n\t\t\t\tif (typeof prop === 'string') {\n\t\t\t\t\tif (prop === 'length' && accessor.getLength) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tenumerable: false,\n\t\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\t\tget: () => accessor.getLength!.call(this as any),\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst numProp = Number(prop)\n\t\t\t\t\tif (!Number.isNaN(numProp)) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\t\tget: () => accessor.get!.call(this as any, numProp),\n\t\t\t\t\t\t\tset: accessor.set\n\t\t\t\t\t\t\t\t? (v: any) => accessor.set!.call(this as any, numProp, v)\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn undefined\n\t\t\t},\n\t\t})\n\t)\n\treturn Indexable\n}\n\ntype AtReturnType<T> = T extends { [getAt](index: number): infer R } ? R : never\n\n/**\n * Symbol for accessing the forwarded array in ArrayReadForward\n */\nexport const forwardArray = Symbol('forwardArray')\n\n/**\n * A read-only array forwarder that implements all reading/iterating methods of Array\n * but does not implement modification methods.\n *\n * The constructor takes a callback that returns an array, and all methods forward\n * their behavior to the result of that callback.\n */\nexport class ArrayReadForward<T> {\n\tprotected get [forwardArray](): readonly T[] {\n\t\tthrow new Error('ArrayReadForward is not implemented')\n\t}\n\n\t/**\n\t * Get the length of the array\n\t */\n\tget length(): number {\n\t\treturn this[forwardArray].length\n\t}\n\n\t/**\n\t * Get an element at a specific index\n\t */\n\t[index: number]: T | undefined\n\n\t/**\n\t * Iterator protocol support\n\t */\n\t[Symbol.iterator](): Iterator<T> {\n\t\treturn this[forwardArray][Symbol.iterator]()\n\t}\n\n\t// Reading/Iterating methods\n\n\t/**\n\t * Creates a new array with the results of calling a provided function on every element\n\t */\n\tmap<U>(callbackfn: (value: T, index: number, array: readonly T[]) => U, thisArg?: any): U[] {\n\t\treturn this[forwardArray].map(callbackfn, thisArg)\n\t}\n\n\t/**\n\t * Creates a new array with all elements that pass the test implemented by the provided function\n\t */\n\tfilter<S extends T>(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => value is S,\n\t\tthisArg?: any\n\t): S[]\n\tfilter(predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any): T[]\n\tfilter(predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any): T[] {\n\t\treturn this[forwardArray].filter(predicate, thisArg)\n\t}\n\n\t/**\n\t * Executes a reducer function on each element of the array, resulting in a single output value\n\t */\n\treduce(\n\t\tcallbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: readonly T[]) => T\n\t): T\n\treduce(\n\t\tcallbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: readonly T[]) => T,\n\t\tinitialValue: T\n\t): T\n\treduce<U>(\n\t\tcallbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: readonly T[]) => U,\n\t\tinitialValue: U\n\t): U\n\treduce(\n\t\tcallbackfn: (\n\t\t\tpreviousValue: any,\n\t\t\tcurrentValue: T,\n\t\t\tcurrentIndex: number,\n\t\t\tarray: readonly T[]\n\t\t) => any,\n\t\tinitialValue?: any\n\t): any {\n\t\treturn initialValue !== undefined\n\t\t\t? this[forwardArray].reduce(callbackfn, initialValue)\n\t\t\t: this[forwardArray].reduce(callbackfn)\n\t}\n\n\t/**\n\t * Executes a reducer function on each element of the array (right-to-left), resulting in a single output value\n\t */\n\treduceRight(\n\t\tcallbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: readonly T[]) => T\n\t): T\n\treduceRight(\n\t\tcallbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: readonly T[]) => T,\n\t\tinitialValue: T\n\t): T\n\treduceRight<U>(\n\t\tcallbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: readonly T[]) => U,\n\t\tinitialValue: U\n\t): U\n\treduceRight(\n\t\tcallbackfn: (\n\t\t\tpreviousValue: any,\n\t\t\tcurrentValue: T,\n\t\t\tcurrentIndex: number,\n\t\t\tarray: readonly T[]\n\t\t) => any,\n\t\tinitialValue?: any\n\t): any {\n\t\treturn initialValue !== undefined\n\t\t\t? this[forwardArray].reduceRight(callbackfn, initialValue)\n\t\t\t: this[forwardArray].reduceRight(callbackfn)\n\t}\n\n\t/**\n\t * Executes a provided function once for each array element\n\t */\n\tforEach(callbackfn: (value: T, index: number, array: readonly T[]) => void, thisArg?: any): void {\n\t\tthis[forwardArray].forEach(callbackfn, thisArg)\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array that satisfies the provided testing function\n\t */\n\tfind<S extends T>(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => value is S,\n\t\tthisArg?: any\n\t): S | undefined\n\tfind(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => unknown,\n\t\tthisArg?: any\n\t): T | undefined\n\tfind(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => unknown,\n\t\tthisArg?: any\n\t): T | undefined {\n\t\treturn this[forwardArray].find(predicate, thisArg)\n\t}\n\n\t/**\n\t * Returns the index of the first element in the array that satisfies the provided testing function\n\t */\n\tfindIndex(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => unknown,\n\t\tthisArg?: any\n\t): number {\n\t\treturn this[forwardArray].findIndex(predicate, thisArg)\n\t}\n\n\t/**\n\t * Returns the value of the last element in the array that satisfies the provided testing function\n\t */\n\tfindLast<S extends T>(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => value is S,\n\t\tthisArg?: any\n\t): S | undefined\n\tfindLast(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => unknown,\n\t\tthisArg?: any\n\t): T | undefined\n\tfindLast(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => unknown,\n\t\tthisArg?: any\n\t): T | undefined {\n\t\treturn this[forwardArray].findLast(predicate, thisArg)\n\t}\n\n\t/**\n\t * Returns the index of the last element in the array that satisfies the provided testing function\n\t */\n\tfindLastIndex(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => unknown,\n\t\tthisArg?: any\n\t): number {\n\t\treturn this[forwardArray].findLastIndex(predicate, thisArg)\n\t}\n\n\t/**\n\t * Determines whether an array includes a certain value among its entries\n\t */\n\tincludes(searchElement: T, fromIndex?: number): boolean {\n\t\treturn this[forwardArray].includes(searchElement, fromIndex)\n\t}\n\n\t/**\n\t * Returns the first index at which a given element can be found in the array\n\t */\n\tindexOf(searchElement: T, fromIndex?: number): number {\n\t\treturn this[forwardArray].indexOf(searchElement, fromIndex)\n\t}\n\n\t/**\n\t * Returns the last index at which a given element can be found in the array\n\t */\n\tlastIndexOf(searchElement: T, fromIndex?: number): number {\n\t\treturn this[forwardArray].lastIndexOf(searchElement, fromIndex)\n\t}\n\n\t/**\n\t * Returns a shallow copy of a portion of an array into a new array object\n\t */\n\tslice(start?: number, end?: number): T[] {\n\t\treturn this[forwardArray].slice(start, end)\n\t}\n\n\t/**\n\t * Returns a new array comprised of this array joined with other array(s) and/or value(s)\n\t */\n\tconcat(...items: ConcatArray<T>[]): T[]\n\tconcat(...items: (T | ConcatArray<T>)[]): T[]\n\tconcat(...items: (T | ConcatArray<T>)[]): T[] {\n\t\treturn this[forwardArray].concat(...items)\n\t}\n\n\t/**\n\t * Tests whether all elements in the array pass the test implemented by the provided function\n\t */\n\tevery(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => unknown,\n\t\tthisArg?: any\n\t): boolean {\n\t\treturn this[forwardArray].every(predicate, thisArg)\n\t}\n\n\t/**\n\t * Tests whether at least one element in the array passes the test implemented by the provided function\n\t */\n\tsome(\n\t\tpredicate: (value: T, index: number, array: readonly T[]) => unknown,\n\t\tthisArg?: any\n\t): boolean {\n\t\treturn this[forwardArray].some(predicate, thisArg)\n\t}\n\n\t/**\n\t * Joins all elements of an array into a string\n\t */\n\tjoin(separator?: string): string {\n\t\treturn this[forwardArray].join(separator)\n\t}\n\n\t/**\n\t * Returns a new array iterator that contains the keys for each index in the array\n\t */\n\tkeys(): IterableIterator<number> {\n\t\treturn this[forwardArray].keys()\n\t}\n\n\t/**\n\t * Returns a new array iterator that contains the values for each index in the array\n\t */\n\tvalues(): IterableIterator<T> {\n\t\treturn this[forwardArray].values()\n\t}\n\n\t/**\n\t * Returns a new array iterator that contains the key/value pairs for each index in the array\n\t */\n\tentries(): IterableIterator<[number, T]> {\n\t\treturn this[forwardArray].entries()\n\t}\n\n\t/**\n\t * Returns a string representation of the array\n\t */\n\ttoString(): string {\n\t\treturn this[forwardArray].toString()\n\t}\n\n\t/**\n\t * Returns a localized string representing the array\n\t */\n\ttoLocaleString(\n\t\tlocales?: string | string[],\n\t\toptions?: Intl.NumberFormatOptions | Intl.DateTimeFormatOptions\n\t): string {\n\t\treturn this[forwardArray].toLocaleString(locales as string | string[], options)\n\t}\n\n\t/**\n\t * Returns the element at the specified index, or undefined if the index is out of bounds\n\t */\n\tat(index: number): T | undefined {\n\t\treturn this[forwardArray].at(index)\n\t}\n\n\t/**\n\t * Returns a new array with all sub-array elements concatenated into it recursively up to the specified depth\n\t */\n\tflat(depth?: number): T[] {\n\t\treturn this[forwardArray].flat(depth) as T[]\n\t}\n\n\t/**\n\t * Returns a new array formed by applying a given callback function to each element of the array,\n\t * and then flattening the result by one level\n\t */\n\tflatMap<U, This = undefined>(\n\t\tcallback: (this: This, value: T, index: number, array: readonly T[]) => U | ReadonlyArray<U>,\n\t\tthisArg?: This\n\t): U[] {\n\t\treturn this[forwardArray].flatMap(callback as any, thisArg)\n\t}\n\n\t/**\n\t * Returns a new array with elements in reversed order (ES2023)\n\t */\n\ttoReversed(): T[] {\n\t\treturn this[forwardArray].toReversed?.() ?? [...this[forwardArray]].reverse()\n\t}\n\n\t/**\n\t * Returns a new array with elements sorted (ES2023)\n\t */\n\ttoSorted(compareFn?: ((a: T, b: T) => number) | undefined): T[] {\n\t\treturn this[forwardArray].toSorted?.(compareFn) ?? [...this[forwardArray]].sort(compareFn)\n\t}\n\n\t/**\n\t * Returns a new array with some elements removed and/or replaced at a given index (ES2023)\n\t */\n\ttoSpliced(start: number, deleteCount?: number, ...items: T[]): T[] {\n\t\tif (deleteCount === undefined) return this[forwardArray].toSpliced(start)\n\t\treturn this[forwardArray].toSpliced(start, deleteCount, ...items)\n\t}\n\n\t/**\n\t * Returns a new array with the element at the given index replaced with the given value (ES2023)\n\t */\n\twith(index: number, value: T): T[] {\n\t\treturn this[forwardArray].with(index, value)\n\t}\n\tget [Symbol.unscopables]() {\n\t\treturn this[forwardArray][Symbol.unscopables]\n\t}\n}\n","type Resolved<T> =\n\tT extends Promise<infer U>\n\t\t? Resolved<U>\n\t\t: T extends (...args: infer Args) => infer R\n\t\t\t? (...args: Args) => Resolved<R>\n\t\t\t: T extends object\n\t\t\t\t? {\n\t\t\t\t\t\t[k in keyof T]: k extends 'then' | 'catch' | 'finally' ? T[k] : Resolved<T[k]>\n\t\t\t\t\t}\n\t\t\t\t: T\ntype PromiseAnd<T> = Resolved<T> & Promise<Resolved<T>>\n/**\n * Type that transforms promises into chainable objects\n * Allows calling methods directly on promise results without awaiting them first\n */\nexport type PromiseChain<T> = T extends (...args: infer Args) => infer R\n\t? PromiseAnd<(...args: Args) => PromiseChain<Resolved<R>>>\n\t: T extends object\n\t\t? PromiseAnd<{\n\t\t\t\t[k in keyof T]: k extends 'then' | 'catch' | 'finally' ? T[k] : PromiseChain<Resolved<T[k]>>\n\t\t\t}>\n\t\t: Promise<Resolved<T>>\n\nconst forward =\n\t(name: string, target: any) =>\n\t(...args: any[]) => {\n\t\treturn target[name](...args)\n\t}\n\nconst alreadyChained = new WeakMap<any, PromiseChain<any>>()\nconst originals = new WeakMap<Promise<any>, any>()\n\nfunction cache(target: any, rv: PromiseChain<any>) {\n\toriginals.set(rv, target)\n\talreadyChained.set(target, rv)\n}\n\ntype ChainedFunction<T> = ((...args: any[]) => PromiseChain<T>) & {\n\tthen: Promise<T>['then']\n\tcatch: Promise<T>['catch']\n\tfinally: Promise<T>['finally']\n}\n\nconst promiseProxyHandler: ProxyHandler<ChainedFunction<any>> = {\n\t//@ts-expect-error\n\t[Symbol.toStringTag]: 'MutTs PromiseChain function',\n\tget(target, prop) {\n\t\tif (prop === Symbol.toStringTag) return 'PromiseProxy'\n\t\tif (typeof prop === 'string' && ['then', 'catch', 'finally'].includes(prop))\n\t\t\treturn target[prop as keyof typeof target]\n\t\treturn chainPromise(target.then((r) => r[prop as keyof typeof r]))\n\t},\n}\nconst promiseForward = (target: any) => ({\n\t// biome-ignore lint/suspicious/noThenProperty: This one is the whole point\n\tthen: forward('then', target),\n\tcatch: forward('catch', target),\n\tfinally: forward('finally', target),\n})\nconst objectProxyHandler: ProxyHandler<any> = {\n\t//@ts-expect-error\n\t[Symbol.toStringTag]: 'MutTs PromiseChain object',\n\tget(target, prop, receiver) {\n\t\tconst getter = Object.getOwnPropertyDescriptor(target, prop)?.get\n\t\tconst rv = getter ? getter.call(receiver) : target[prop]\n\t\t// Allows fct.call or fct.apply to bypass the chain system\n\t\tif (typeof target === 'function') return rv\n\t\treturn chainPromise(rv)\n\t},\n\tapply(target, thisArg, args) {\n\t\treturn chainPromise(target.apply(thisArg, args))\n\t},\n}\nfunction chainObject<T extends object | Function>(given: T): PromiseChain<T> {\n\tconst rv = new Proxy(given, objectProxyHandler) as PromiseChain<T>\n\tcache(given, rv)\n\treturn rv\n}\n\nfunction chainable(x: any): x is object | Function {\n\treturn x && ['function', 'object'].includes(typeof x)\n}\n/**\n * Transforms a promise or value into a chainable object\n * Allows calling methods directly on promise results without awaiting them first\n * @param given - The promise or value to make chainable\n * @returns A chainable version of the input\n */\nexport function chainPromise<T>(given: Promise<T> | T): PromiseChain<T> {\n\tif (!chainable(given)) return given as PromiseChain<T>\n\tif (alreadyChained.has(given)) return alreadyChained.get(given) as PromiseChain<T>\n\tif (!(given instanceof Promise)) return chainObject(given)\n\t// @ts-expect-error It's ok as we check if it's an object above\n\tgiven = given.then((r) => (chainable(r) ? chainObject(r) : r))\n\tconst target = Object.assign(function (this: any, ...args: any[]) {\n\t\treturn chainPromise(\n\t\t\tgiven.then((r) => {\n\t\t\t\treturn this?.then\n\t\t\t\t\t? this.then((t: any) => (r as any).apply(t, args))\n\t\t\t\t\t: (r as any).apply(this, args)\n\t\t\t})\n\t\t)\n\t}, promiseForward(given)) as ChainedFunction<T>\n\tconst chained = new Proxy(\n\t\ttarget,\n\t\tpromiseProxyHandler as ProxyHandler<ChainedFunction<T>>\n\t) as PromiseChain<T>\n\tcache(given, chained as PromiseChain<any>)\n\treturn chained\n}\n","import { decorator } from '../decorator'\nimport { deepCompare, renamed } from '../utils'\nimport { touched1 } from './change'\nimport { effect, root, untracked } from './effects'\nimport { getRoot, markWithRoot } from './registry'\nimport { dependant } from './tracking'\nimport { optionCall, options, rootFunction } from './types'\n\nexport type Memoizable = object | any[] | symbol | ((...args: any[]) => any)\n\ntype MemoCacheTree<Result> = {\n\tresult?: Result\n\tcleanup?: () => void\n\tbranches?: WeakMap<Memoizable, MemoCacheTree<Result>>\n}\n\nconst memoizedRegistry = new WeakMap<any, Function>()\nconst wrapperRegistry = new WeakMap<Function, Function>()\n\nfunction getBranch<Result>(tree: MemoCacheTree<Result>, key: Memoizable): MemoCacheTree<Result> {\n\ttree.branches ??= new WeakMap()\n\tlet branch = tree.branches.get(key)\n\tif (!branch) {\n\t\tbranch = {}\n\t\ttree.branches.set(key, branch)\n\t}\n\treturn branch\n}\n\nfunction memoizeFunction<Result, Args extends Memoizable[]>(\n\tfn: (...args: Args) => Result\n): (...args: Args) => Result {\n\tconst fnRoot = getRoot(fn)\n\tconst existing = memoizedRegistry.get(fnRoot)\n\tif (existing) return existing as (...args: Args) => Result\n\n\tconst cacheRoot: MemoCacheTree<Result> = {}\n\tconst memoized = markWithRoot((...args: Args): Result => {\n\t\tconst localArgs = args //: Args = maxArgs !== undefined ? (args.slice(0, maxArgs) as Args) : args\n\t\tif (localArgs.some((arg) => !(arg && ['object', 'symbol', 'function'].includes(typeof arg))))\n\t\t\tthrow new Error('memoize expects non-null object arguments')\n\n\t\tlet node: MemoCacheTree<Result> = cacheRoot\n\t\t// Note: decorators add `this` as first argument\n\t\tfor (const arg of localArgs) {\n\t\t\tnode = getBranch(node, arg)\n\t\t}\n\n\t\tdependant(node, 'memoize')\n\t\tif ('result' in node) {\n\t\t\tif (options.onMemoizationDiscrepancy) {\n\t\t\t\tconst wasVerification = options.isVerificationRun\n\t\t\t\toptions.isVerificationRun = true\n\t\t\t\ttry {\n\t\t\t\t\tconst fresh = untracked(() => fn(...localArgs))\n\t\t\t\t\tif (!deepCompare(node.result, fresh)) {\n\t\t\t\t\t\toptionCall('onMemoizationDiscrepancy', node.result, fresh, fn, localArgs, 'calculation')\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\toptions.isVerificationRun = wasVerification\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn node.result!\n\t\t}\n\n\t\t// Create memoize internal effect to track dependencies and invalidate cache\n\t\t// Use untracked to prevent the effect creation from being affected by parent effects\n\t\tnode.cleanup = root(() =>\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\t// Execute the function and track its dependencies\n\t\t\t\t\t// The function execution will automatically track dependencies on reactive objects\n\t\t\t\t\tnode.result = fn(...localArgs)\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\t// When dependencies change, clear the cache and notify consumers\n\t\t\t\t\t\tdelete node.result\n\t\t\t\t\t\ttouched1(node, { type: 'invalidate', prop: localArgs }, 'memoize')\n\t\t\t\t\t\t// Lazy memoization: stop the effect so it doesn't re-run immediately.\n\t\t\t\t\t\t// It will be re-created on next access.\n\t\t\t\t\t\tif (node.cleanup) {\n\t\t\t\t\t\t\tnode.cleanup()\n\t\t\t\t\t\t\tnode.cleanup = undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ opaque: true }\n\t\t\t)\n\t\t)\n\n\t\tif (options.onMemoizationDiscrepancy) {\n\t\t\tconst wasVerification = options.isVerificationRun\n\t\t\toptions.isVerificationRun = true\n\t\t\ttry {\n\t\t\t\tconst fresh = untracked(() => fn(...localArgs))\n\t\t\t\tif (!deepCompare(node.result, fresh)) {\n\t\t\t\t\toptionCall('onMemoizationDiscrepancy', node.result, fresh, fn, localArgs, 'comparison')\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\toptions.isVerificationRun = wasVerification\n\t\t\t}\n\t\t}\n\n\t\treturn node.result!\n\t}, fn)\n\n\tmemoizedRegistry.set(fnRoot, memoized)\n\tmemoizedRegistry.set(memoized, memoized)\n\treturn memoized as (...args: Args) => Result\n}\n\n/**\n * Decorator and function wrapper for memoizing computed values based on reactive dependencies.\n *\n * When used as a decorator on getters or methods, it caches the result and automatically\n * invalidates the cache when reactive dependencies change.\n *\n * When used as a function wrapper, it memoizes based on object arguments (WeakMap-based cache).\n *\n * @example\n * ```typescript\n * class User {\n * @memoize\n * get fullName() {\n * return `${this.firstName} ${this.lastName}`\n * }\n * }\n *\n * // Or as a function wrapper\n * const expensive = memoize((obj: SomeObject) => {\n * return heavyComputation(obj)\n * })\n * ```\n */\nexport const memoize = decorator({\n\tgetter(original, target, propertyKey) {\n\t\treturn function (this: any) {\n\t\t\tlet wrapper = wrapperRegistry.get(original)\n\t\t\tif (!wrapper) {\n\t\t\t\twrapper = markWithRoot(\n\t\t\t\t\trenamed(\n\t\t\t\t\t\t(that: object) => {\n\t\t\t\t\t\t\treturn original.call(that)\n\t\t\t\t\t\t},\n\t\t\t\t\t\t`${String(target?.constructor?.name ?? target?.name ?? 'Object')}.${String(propertyKey)}`\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: original,\n\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t\t...((original as any)[rootFunction]\n\t\t\t\t\t\t\t? { [rootFunction]: (original as any)[rootFunction] }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\twrapperRegistry.set(original, wrapper)\n\t\t\t}\n\t\t\tconst memoized = memoizeFunction(wrapper as any)\n\t\t\treturn memoized(this)\n\t\t}\n\t},\n\tmethod(original, target, name) {\n\t\treturn function (this: any, ...args: object[]) {\n\t\t\tlet wrapper = wrapperRegistry.get(original)\n\t\t\tif (!wrapper) {\n\t\t\t\twrapper = markWithRoot(\n\t\t\t\t\trenamed(\n\t\t\t\t\t\t(that: object, ...args: object[]) => {\n\t\t\t\t\t\t\treturn original.call(that, ...args)\n\t\t\t\t\t\t},\n\t\t\t\t\t\t`${String(target?.constructor?.name ?? target?.name ?? 'Object')}.${String(name)}`\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tmethod: original,\n\t\t\t\t\t\tpropertyKey: name,\n\t\t\t\t\t\t...((original as any)[rootFunction]\n\t\t\t\t\t\t\t? { [rootFunction]: (original as any)[rootFunction] }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\twrapperRegistry.set(original, wrapper)\n\t\t\t}\n\t\t\tconst memoized = memoizeFunction(wrapper as any) as (...args: object[]) => unknown\n\t\t\treturn memoized(this, ...args)\n\t\t}\n\t},\n\tdefault: memoizeFunction,\n})\n","import { FoolProof } from '../utils'\nimport { cleanedBy } from '.'\nimport { effect, untracked } from './effects'\nimport { memoize } from './memoize'\nimport { reactive } from './proxy'\nimport type { cleanup, EffectAccess, EffectCleanup, EffectCloser, ScopedCallback } from './types'\n\n/**\n * Reactively attends to each entry of a collection or each key yielded by an\n * enumeration callback. For each key, an inner effect runs the callback. When a\n * key disappears, its inner effect is disposed. The callback may return a cleanup\n * (like a regular effect closer).\n *\n * Accepts arrays, records, Maps, Sets, or a raw `() => Iterable<Key>` callback.\n *\n * @example\n * ```typescript\n * // Record shorthand\n * attend(record, (key) => { console.log(key, record[key]) })\n *\n * // Array shorthand\n * attend(array, (index) => { console.log(index, array[index]) })\n *\n * // Raw enumeration callback\n * attend(() => Object.keys(record), (key) => { ... })\n * ```\n */\nexport function attend<T>(\n\tsource: readonly T[],\n\tcallback: (index: number) => EffectCloser | void\n): ScopedCallback\nexport function attend<K, V>(\n\tsource: Map<K, V>,\n\tcallback: (key: K) => EffectCloser | void\n): ScopedCallback\nexport function attend<T>(\n\tsource: Set<T>,\n\tcallback: (value: T) => EffectCloser | void\n): ScopedCallback\nexport function attend<S extends Record<PropertyKey, any>>(\n\tsource: S,\n\tcallback: (key: keyof S & string) => EffectCloser | void\n): ScopedCallback\nexport function attend<Key>(\n\tenumerate: () => Iterable<Key>,\n\tcallback: (key: Key) => EffectCloser | void\n): ScopedCallback\nexport function attend(\n\tsource: any,\n\tcallback: (key: any) => EffectCloser | void\n): ScopedCallback {\n\tconst enumerate: () => Iterable<any> =\n\t\ttypeof source === 'function'\n\t\t\t? source\n\t\t\t: Array.isArray(source)\n\t\t\t\t? () => Array.from({ length: source.length }, (_, i) => i)\n\t\t\t\t: source instanceof Map\n\t\t\t\t\t? () => source.keys()\n\t\t\t\t\t: source instanceof Set\n\t\t\t\t\t\t? () => source.values()\n\t\t\t\t\t\t: () => Object.keys(source)\n\n\tconst keyEffects = new Map<any, ScopedCallback>()\n\n\tconst outer = effect(({ ascend }) => {\n\t\tconst keys = new Set<any>()\n\t\tfor (const key of enumerate()) keys.add(key)\n\n\t\tfor (const key of keys) {\n\t\t\tif (keyEffects.has(key)) continue\n\t\t\tkeyEffects.set(key, ascend(() => effect(() => callback(key))))\n\t\t}\n\n\t\tfor (const key of Array.from(keyEffects.keys())) {\n\t\t\tif (!keys.has(key)) {\n\t\t\t\tkeyEffects.get(key)!()\n\t\t\t\tkeyEffects.delete(key)\n\t\t\t}\n\t\t}\n\t})\n\n\treturn () => {\n\t\touter()\n\t\tfor (const stop of keyEffects.values()) stop()\n\t\tkeyEffects.clear()\n\t}\n}\n\n/**\n * Result of a reactive scan, which is a reactive array of accumulated values\n * with an attached cleanup function.\n */\nexport type ScanResult<Output> = readonly Output[] & { [cleanup]: ScopedCallback }\n\n/**\n * Perform a reactive scan over an array of items.\n *\n * This implementation is highly optimized for performance and fine-grained reactivity:\n * - **Incremental Updates**: Changes to an item only trigger re-computation from that\n * point onwards in the result chain.\n * - **Move Optimization**: If items are moved within the array, their accumulated\n * values are reused as long as their predecessor remains the same.\n * - **Duplicate Support**: Correctly handles multiple occurrences of the same object\n * instance using an internal occurrence tracking mechanism.\n * - **Memory Efficient**: Uses `WeakMap` for caching intermediates, which are\n * automatically cleared when source items are garbage collected.\n *\n * @example\n * ```typescript\n * const source = reactive([{ val: 1 }, { val: 2 }, { val: 3 }])\n * const sum = scan(source, (acc, item) => acc + item.val, 0)\n *\n * expect([...sum]).toEqual([1, 3, 6])\n *\n * // Modifying an item only re-computes subsequent sums\n * source[1].val = 10\n * expect([...sum]).toEqual([1, 11, 14])\n * ```\n *\n * @param source The source array of objects (will be made reactive)\n * @param callback The accumulator function called with (accumulator, currentItem)\n * @param initialValue The starting value for the accumulation\n * @returns A reactive array of accumulated values, with a [cleanup] property to stop the tracking\n */\nexport function scan<Input extends object, Output>(\n\tsource: readonly Input[],\n\tcallback: (acc: Output, val: Input) => Output,\n\tinitialValue: Output\n): ScanResult<Output> {\n\tconst observedSource = reactive(source)\n\tconst result = reactive([] as Output[])\n\n\t// Track effects for each index to dispose them when the array shrinks\n\tconst indexEffects = new Map<number, EffectCleanup>()\n\t// Mapping from index to its current intermediate object\n\tconst indexToIntermediate = reactive([] as Intermediate[])\n\tconst intermediaries = new WeakMap<Input, Intermediate[]>()\n\n\tclass Intermediate {\n\t\tpublic prev: Intermediate | undefined\n\t\tconstructor(\n\t\t\tpublic val: Input,\n\t\t\tprev: Intermediate | undefined\n\t\t) {\n\t\t\tthis.prev = prev\n\t\t}\n\n\t\t@memoize\n\t\tget acc(): Output {\n\t\t\tconst prevAcc = this.prev ? this.prev.acc : initialValue\n\t\t\treturn callback(prevAcc, this.val)\n\t\t}\n\t}\n\n\tfunction disposeIndex(index: number) {\n\t\tconst stop = indexEffects.get(index)\n\t\tif (stop) {\n\t\t\tstop()\n\t\t\tindexEffects.delete(index)\n\t\t\tuntracked(() => {\n\t\t\t\tReflect.deleteProperty(indexToIntermediate as any, index)\n\t\t\t\tReflect.deleteProperty(result as any, index)\n\t\t\t})\n\t\t}\n\t}\n\n\tconst mainEffect = effect(function scanMainEffect({ ascend }) {\n\t\tconst length = observedSource.length\n\t\tconst occurrenceCount = new Map<Input, number>()\n\t\tlet prev: Intermediate | undefined\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst val = FoolProof.get(observedSource as any, i, observedSource) as Input\n\n\t\t\tif (\n\t\t\t\t!(val && (typeof val === 'object' || typeof val === 'function' || typeof val === 'symbol'))\n\t\t\t) {\n\t\t\t\tthrow new Error('scan: items must be objects (WeakKey) for intermediate caching')\n\t\t\t}\n\n\t\t\tconst count = occurrenceCount.get(val) ?? 0\n\t\t\toccurrenceCount.set(val, count + 1)\n\n\t\t\tlet list = intermediaries.get(val)\n\t\t\tif (!list) {\n\t\t\t\tlist = []\n\t\t\t\tintermediaries.set(val, list)\n\t\t\t}\n\n\t\t\tlet intermediate = list[count]\n\t\t\tif (!intermediate) {\n\t\t\t\tintermediate = reactive(new Intermediate(val, prev))\n\t\t\t\tlist[count] = intermediate\n\t\t\t} else {\n\t\t\t\t// Update the link.\n\t\t\t\tif (untracked(() => intermediate.prev) !== prev) {\n\t\t\t\t\tintermediate.prev = prev\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update the reactive mapping for this index\n\t\t\tif (indexToIntermediate[i] !== intermediate) {\n\t\t\t\tindexToIntermediate[i] = intermediate\n\t\t\t}\n\n\t\t\t// If we don't have an effect for this index yet, create one\n\t\t\tif (!indexEffects.has(i)) {\n\t\t\t\tascend(() => {\n\t\t\t\t\tconst index = i\n\t\t\t\t\tconst stop = effect(function scanIndexSyncEffect() {\n\t\t\t\t\t\tconst inter = indexToIntermediate[index]\n\t\t\t\t\t\tif (inter) {\n\t\t\t\t\t\t\tconst accValue = inter.acc\n\t\t\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\t\t\tresult[index] = accValue\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tindexEffects.set(index, stop)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tprev = intermediate\n\t\t}\n\n\t\t// Cleanup trailing indices\n\t\tfor (const index of Array.from(indexEffects.keys())) {\n\t\t\tif (index >= length) disposeIndex(index)\n\t\t}\n\n\t\t// Ensure result length matches source length\n\t\tuntracked(() => {\n\t\t\tif (result.length !== length) {\n\t\t\t\tFoolProof.set(result as any, 'length', length, result)\n\t\t\t}\n\t\t})\n\t})\n\n\treturn cleanedBy(result, (() => {\n\t\tmainEffect()\n\t\tfor (const stop of indexEffects.values()) stop()\n\t\tindexEffects.clear()\n\t}) as EffectCleanup) as ScanResult<Output>\n}\n\n/**\n * Lifts a callback that returns an array into a reactive array that automatically\n * synchronizes with the source array returned by the callback.\n *\n * The returned reactive array will update whenever the callback's dependencies change,\n * efficiently syncing only the elements that differ from the previous result.\n *\n * @example\n * ```typescript\n * const items = reactive([1, 2, 3])\n * const doubled = lift(() => items.map(x => x * 2))\n *\n * console.log([...doubled]) // [2, 4, 6]\n *\n * items.push(4)\n * console.log([...doubled]) // [2, 4, 6, 8]\n * ```\n *\n * @param cb Callback function that returns an array\n * @returns A reactive array synchronized with the callback's result, with a [cleanup] property to stop tracking\n */\nexport function lift<Output extends any[]>(\n\tcb: (access: EffectAccess) => Output\n): Output & { [cleanup]: ScopedCallback }\n\n/**\n * Lifts a callback that returns an object into a reactive object that automatically\n * synchronizes with the source object returned by the callback.\n *\n * The returned reactive object will update whenever the callback's dependencies change,\n * efficiently syncing only the properties that differ from the previous result using\n * Object.assign(). Properties that no longer exist in the source are automatically removed.\n *\n * @example\n * ```typescript\n * const user = reactive({ name: 'John', age: 30 })\n * const profile = lift(() => ({\n * displayName: user.name.toUpperCase(),\n * isAdult: user.age >= 18,\n * description: `${user.name} is ${user.age} years old`\n * }))\n *\n * console.log(profile.displayName) // JOHN\n * console.log(profile.isAdult) // true\n *\n * user.name = 'Jane'\n * console.log(profile.displayName) // JANE\n * console.log(profile.description) // Jane is 30 years old\n * ```\n *\n * @param cb Callback function that returns an object\n * @returns A reactive object synchronized with the callback's result, with a [cleanup] property to stop tracking\n */\nexport function lift<Output extends object>(\n\tcb: (access: EffectAccess) => Output\n): Output & { [cleanup]: ScopedCallback }\nexport function lift<Output extends any[] | object>(\n\tcb: (access: EffectAccess) => Output\n): Output & { [cleanup]: ScopedCallback } {\n\tlet result: Output\n\tconst liftCleanup = effect((access) => {\n\t\tconst source = cb(access)\n\t\tif (!source || typeof source !== 'object')\n\t\t\tthrow new Error('lift callback must return an array or object')\n\t\tif (!result) {\n\t\t\tif (Array.isArray(source)) {\n\t\t\t\tresult = reactive([]) as Output\n\t\t\t} else {\n\t\t\t\tresult = reactive({}) as Output\n\t\t\t}\n\t\t}\n\t\tif (Array.isArray(source) && Array.isArray(result)) {\n\t\t\tif (result.length !== source.length) result.length = source.length\n\t\t\tfor (let i = 0; i < source.length; i++) if (result[i] !== source[i]) result[i] = source[i]\n\t\t} else if (!Array.isArray(source) && !Array.isArray(result)) {\n\t\t\tObject.assign(result, source)\n\t\t\tfor (const key of Object.keys(result)) if (!(key in source)) delete result[key]\n\t\t} else {\n\t\t\tthrow new Error('lift callback must return the same type as the previous result')\n\t\t}\n\t})\n\treturn cleanedBy(result as Output, liftCleanup)\n}\n","import {\n\tdeepWatchers,\n\teffectToDeepWatchedObjects,\n\tobjectsWithDeepWatchers,\n} from './deep-watch-state'\nimport { effect } from './effects'\nimport { isNonReactive } from './non-reactive-state'\nimport { reactive, unwrap } from './proxy'\nimport { markWithRoot } from './registry'\nimport { type EffectCleanup, type EffectTrigger, options } from './types'\n\nfunction isObject(value: any): value is object {\n\treturn typeof value === 'object' && value !== null\n}\n\nexport {\n\taddBackReference,\n\tbubbleUpChange,\n\tdeepWatchers,\n\teffectToDeepWatchedObjects,\n\tneedsBackReferences,\n\tobjectParents,\n\tobjectsWithDeepWatchers,\n\tremoveBackReference,\n} from './deep-watch-state'\n\n/**\n * Deep watch an object and all its nested properties\n * @param target - The object to watch deeply\n * @param callback - The callback to call when any nested property changes\n * @param options - Options for the deep watch\n * @returns A cleanup function to stop watching\n */\n/**\n * Sets up deep watching for an object, tracking all nested property changes\n * @param target - The object to watch\n * @param callback - The callback to call when changes occur\n * @param options - Options for deep watching\n * @returns A cleanup function to stop deep watching\n */\nexport function deepWatch<T extends object>(\n\ttarget: T,\n\tcallback: (value: T) => void,\n\t{ immediate = false } = {}\n): EffectCleanup | undefined {\n\tif (target === null || target === undefined) return undefined\n\tif (typeof target !== 'object') throw new Error('Target of deep watching must be an object')\n\t// Create a wrapper callback that matches EffectTrigger signature\n\tconst wrappedCallback: EffectTrigger = markWithRoot(\n\t\t(() => callback(target)) as EffectTrigger,\n\t\tcallback\n\t)\n\n\t// Use the existing effect system to register dependencies\n\treturn effect(() => {\n\t\t// Mark the target object as having deep watchers\n\t\tobjectsWithDeepWatchers.add(target)\n\n\t\t// Track which objects this effect is watching for cleanup\n\t\tlet effectObjects = effectToDeepWatchedObjects.get(wrappedCallback)\n\t\tif (!effectObjects) {\n\t\t\teffectObjects = new Set()\n\t\t\teffectToDeepWatchedObjects.set(wrappedCallback, effectObjects)\n\t\t}\n\t\teffectObjects!.add(target)\n\n\t\t// Traverse the object graph and register dependencies\n\t\t// This will re-run every time the effect runs, ensuring we catch all changes\n\t\tconst visited = new WeakSet()\n\t\tfunction traverseAndTrack(obj: any, depth = 0) {\n\t\t\t// Prevent infinite recursion and excessive depth\n\t\t\tif (!obj || visited.has(obj) || !isObject(obj) || depth > options.maxDeepWatchDepth) return\n\t\t\t// Do not traverse into unreactive objects\n\t\t\tif (isNonReactive(obj)) return\n\t\t\tvisited.add(obj)\n\n\t\t\t// Mark this object as having deep watchers\n\t\t\tobjectsWithDeepWatchers.add(obj)\n\t\t\teffectObjects!.add(obj)\n\n\t\t\t// Traverse all properties to register dependencies\n\t\t\t// unwrap to avoid kicking dependency\n\t\t\tfor (const key in unwrap(obj)) {\n\t\t\t\tif (Object.hasOwn(obj, key)) {\n\t\t\t\t\t// Access the property to register dependency\n\t\t\t\t\tconst value = (obj as any)[key]\n\t\t\t\t\t// Make the value reactive if it's an object\n\t\t\t\t\tconst reactiveValue =\n\t\t\t\t\t\ttypeof value === 'object' && value !== null ? reactive(value) : value\n\t\t\t\t\ttraverseAndTrack(reactiveValue, depth + 1)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Also handle array indices and length\n\t\t\t// biome-ignore lint/suspicious/useIsArray: Check for both native arrays and reactive arrays\n\t\t\tif (Array.isArray(obj) || obj instanceof Array) {\n\t\t\t\t// Access array length to register dependency on length changes\n\t\t\t\tconst length = obj.length\n\n\t\t\t\t// Access all current array elements to register dependencies\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\t// Access the array element to register dependency\n\t\t\t\t\tconst value = obj[i]\n\t\t\t\t\t// Make the value reactive if it's an object\n\t\t\t\t\tconst reactiveValue =\n\t\t\t\t\t\ttypeof value === 'object' && value !== null ? reactive(value) : value\n\t\t\t\t\ttraverseAndTrack(reactiveValue, depth + 1)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Handle Set values (deep watch values only, not keys since Sets don't have separate keys)\n\t\t\telse if (obj instanceof Set) {\n\t\t\t\t// Access all Set values to register dependencies\n\t\t\t\tfor (const value of obj) {\n\t\t\t\t\t// Make the value reactive if it's an object\n\t\t\t\t\tconst reactiveValue =\n\t\t\t\t\t\ttypeof value === 'object' && value !== null ? reactive(value) : value\n\t\t\t\t\ttraverseAndTrack(reactiveValue, depth + 1)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Handle Map values (deep watch values only, not keys)\n\t\t\telse if (obj instanceof Map) {\n\t\t\t\t// Access all Map values to register dependencies\n\t\t\t\tfor (const [_key, value] of obj) {\n\t\t\t\t\t// Make the value reactive if it's an object\n\t\t\t\t\tconst reactiveValue =\n\t\t\t\t\t\ttypeof value === 'object' && value !== null ? reactive(value) : value\n\t\t\t\t\ttraverseAndTrack(reactiveValue, depth + 1)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Note: WeakSet and WeakMap cannot be iterated, so we can't deep watch their contents\n\t\t\t// They will only trigger when the collection itself is replaced\n\t\t}\n\n\t\t// Traverse the target object to register all dependencies\n\t\t// This will register dependencies on all current properties and array elements\n\t\ttraverseAndTrack(target)\n\n\t\t// Only call the callback if immediate is true or if it's not the first run\n\t\tif (immediate) callback(target)\n\t\timmediate = true\n\n\t\t// Return a cleanup function that properly removes deep watcher tracking\n\t\treturn () => {\n\t\t\t// Get the objects this effect was watching\n\t\t\tconst effectObjects = effectToDeepWatchedObjects.get(wrappedCallback)\n\t\t\tif (effectObjects) {\n\t\t\t\t// Remove deep watcher tracking from all objects this effect was watching\n\t\t\t\tfor (const obj of effectObjects) {\n\t\t\t\t\t// Check if this object still has other deep watchers\n\t\t\t\t\tconst watchers = deepWatchers.get(obj)\n\t\t\t\t\tif (watchers) {\n\t\t\t\t\t\t// Remove this effect's callback from the watchers\n\t\t\t\t\t\twatchers.delete(wrappedCallback)\n\n\t\t\t\t\t\t// If no more watchers, remove the object from deep watchers tracking\n\t\t\t\t\t\tif (watchers.size === 0) {\n\t\t\t\t\t\t\tdeepWatchers.delete(obj)\n\t\t\t\t\t\t\tobjectsWithDeepWatchers.delete(obj)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No watchers found, remove from deep watchers tracking\n\t\t\t\t\t\tobjectsWithDeepWatchers.delete(obj)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Clean up the tracking data\n\t\t\t\teffectToDeepWatchedObjects.delete(wrappedCallback)\n\t\t\t}\n\t\t}\n\t})\n}\n","import {\n\tabsent,\n\timmutables,\n\tisNonReactive,\n\tnonReactive,\n\tnonReactiveClass,\n\tnonReactiveObjects,\n\tregisterNativeReactivity,\n} from './non-reactive-state'\nimport { reactive } from './proxy'\n\n/**\n * Converts an iterator to a generator that yields reactive values\n */\nexport function* makeReactiveIterator<T>(iterator: Iterator<T>): Generator<T> {\n\tlet result = iterator.next()\n\twhile (!result.done) {\n\t\tyield reactive(result.value)\n\t\tresult = iterator.next()\n\t}\n}\n\n/**\n * Converts an iterator of key-value pairs to a generator that yields reactive key-value pairs\n */\nexport function* makeReactiveEntriesIterator<K, V>(iterator: Iterator<[K, V]>): Generator<[K, V]> {\n\tlet result = iterator.next()\n\twhile (!result.done) {\n\t\tconst [key, value] = result.value\n\t\tyield [reactive(key), reactive(value)]\n\t\tresult = iterator.next()\n\t}\n}\n\nexport {\n\tabsent,\n\timmutables,\n\tisNonReactive,\n\tnonReactive,\n\tnonReactiveClass,\n\tnonReactiveObjects,\n\tregisterNativeReactivity,\n}\n","import { decorator, type GenericClassDecorator } from '../decorator'\nimport { deepWatch } from './deep-watch'\nimport { effect } from './effects'\nimport { isNonReactive, nonReactiveClass, nonReactiveObjects } from './non-reactive-state'\nimport { unwrap } from './proxy-state'\nimport { markWithRoot } from './registry'\nimport { dependant } from './tracking'\nimport {\n\ttype EffectAccess,\n\ttype EffectCleanup,\n\tnonReactiveMark,\n\tstopped,\n\tunreactiveProperties,\n} from './types'\n\n//#region watch\n\nconst unsetYet = Symbol('unset-yet')\n/**\n * Options for the watch function\n */\nexport interface WatchOptions {\n\t/** Whether to call the callback immediately */\n\timmediate?: boolean\n\t/** Whether to watch nested properties */\n\tdeep?: boolean\n}\n\n/**\n * Watches a reactive value and calls a callback when it changes\n * @param value - Function that returns the value to watch\n * @param changed - Callback to call when the value changes\n * @param options - Watch options\n * @returns Cleanup function to stop watching\n */\nexport function watch<T>(\n\tvalue: (dep: EffectAccess) => T,\n\tchanged: (value: T, oldValue?: T) => void,\n\toptions?: Omit<WatchOptions, 'deep'> & { deep?: false }\n): EffectCleanup\n/**\n * Watches a reactive value with deep watching enabled\n * @param value - Function that returns the value to watch\n * @param changed - Callback to call when the value changes\n * @param options - Watch options with deep watching enabled\n * @returns Cleanup function to stop watching\n */\nexport function watch<T extends object | any[]>(\n\tvalue: (dep: EffectAccess) => T,\n\tchanged: (value: T, oldValue?: T) => void,\n\toptions?: Omit<WatchOptions, 'deep'> & { deep: true }\n): EffectCleanup\n/**\n * Watches a reactive object directly\n * @param value - The reactive object to watch\n * @param changed - Callback to call when the object changes\n * @param options - Watch options\n * @returns Cleanup function to stop watching\n */\nexport function watch<T extends object | any[]>(\n\tvalue: T,\n\tchanged: (value: T) => void,\n\toptions?: WatchOptions\n): EffectCleanup\n\nexport function watch(\n\tvalue: any, //object | ((dep: DependencyAccess) => object),\n\tchanged: (value?: object, oldValue?: object) => void,\n\toptions: any = {}\n) {\n\treturn typeof value === 'function'\n\t\t? watchCallBack(value, changed, options)\n\t\t: typeof value === 'object' && value !== null\n\t\t\t? watchObject(value, changed, options)\n\t\t\t: (() => {\n\t\t\t\t\tthrow new Error('watch: value must be a function or an object')\n\t\t\t\t})()\n}\n\nfunction watchObject(\n\tvalue: object,\n\tchanged: (value: object) => void,\n\t{ immediate = false, deep = false } = {}\n): EffectCleanup {\n\tif (deep) return deepWatch(value, changed, { immediate })!\n\treturn effect(function watchObjectEffect() {\n\t\tdependant(value)\n\t\tif (immediate) changed(value)\n\t\timmediate = true\n\t})\n}\n\nfunction watchCallBack<T>(\n\tvalue: (dep: EffectAccess) => T,\n\tchanged: (value: T, oldValue?: T) => void,\n\t{ immediate = false, deep = false } = {}\n): EffectCleanup {\n\tlet oldValue: T | typeof unsetYet = unsetYet\n\tlet deepCleanup: EffectCleanup | undefined\n\tconst cbCleanup = effect(\n\t\tmarkWithRoot(function watchCallBackEffect(access) {\n\t\t\tconst newValue = value(access)\n\t\t\tif (oldValue !== newValue)\n\t\t\t\tif (oldValue === unsetYet) {\n\t\t\t\t\tif (immediate) changed(newValue)\n\t\t\t\t} else changed(newValue, oldValue)\n\t\t\toldValue = newValue\n\t\t\tif (deep) {\n\t\t\t\tif (deepCleanup) deepCleanup()\n\t\t\t\tdeepCleanup = deepWatch(newValue as object, (value) => changed(value as T, value as T))\n\t\t\t}\n\t\t}, value)\n\t)\n\treturn Object.defineProperties(\n\t\t() => {\n\t\t\tcbCleanup()\n\t\t\tif (deepCleanup) deepCleanup()\n\t\t},\n\t\t{\n\t\t\t[stopped]: { get: () => cbCleanup[stopped] },\n\t\t}\n\t) as EffectCleanup\n}\n\n//#endregion\n\n//#region nonReactive\n\n/**\n * Mark an object as non-reactive. This object and all its properties will never be made reactive.\n * @param obj - The object to mark as non-reactive\n */\nfunction shallowNonReactive<T>(obj: T): T {\n\tobj = unwrap(obj)\n\tif (isNonReactive(obj)) return obj\n\ttry {\n\t\tObject.defineProperty(obj as object, nonReactiveMark, {\n\t\t\tvalue: true,\n\t\t\twritable: false,\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t})\n\t} catch {}\n\tif (!(nonReactiveMark in (obj as object))) nonReactiveObjects.add(obj as object)\n\t// Finally, not deep\n\t//for (const key in obj) deepNonReactive(obj[key])\n\treturn obj\n}\nfunction unreactiveApplication<T extends object>(...args: (keyof T)[]): GenericClassDecorator<T>\nfunction unreactiveApplication<T extends object>(obj: T): T\nfunction unreactiveApplication<T extends object>(\n\targ1: T | keyof T,\n\t...args: (keyof T)[]\n): GenericClassDecorator<T> | T {\n\treturn typeof arg1 === 'object'\n\t\t? shallowNonReactive(arg1)\n\t\t: (((original) => {\n\t\t\t\t// Copy the parent's unreactive properties if they exist\n\t\t\t\toriginal.prototype[unreactiveProperties] = new Set<PropertyKey>(\n\t\t\t\t\toriginal.prototype[unreactiveProperties] || []\n\t\t\t\t)\n\t\t\t\t// Add all arguments (including the first one)\n\t\t\t\toriginal.prototype[unreactiveProperties].add(arg1)\n\t\t\t\tfor (const arg of args) original.prototype[unreactiveProperties].add(arg)\n\t\t\t\treturn original // Return the class\n\t\t\t}) as GenericClassDecorator<T>)\n}\n/**\n * Decorator that marks classes or properties as non-reactive\n * Prevents objects from being made reactive\n */\nexport const unreactive = decorator({\n\tclass(original) {\n\t\t// Called without arguments, mark entire class as non-reactive\n\t\tnonReactiveClass(original)\n\t},\n\tdefault: unreactiveApplication,\n})\n\n//#endregion\n","import { Eventful } from '../eventful'\nimport { ArrayReadForward, forwardArray, getAt, Indexable, setAt } from '../indexable'\nimport type { FunctionWrapper } from '../zone'\nimport { effect } from './effects'\nimport { reactive } from './proxy'\nimport type { EffectCleanup } from './types'\nimport { unreactive } from './watch'\n\ntype KeyFunction<T, K extends PropertyKey> = (item: T) => K\n\n/**\n * Events emitted by the Register for CRUD operations\n */\nexport interface RegisterEvents<T, K extends PropertyKey> {\n\t/**\n\t * Emitted when a new item is added to the register\n\t */\n\tadd: (item: T, key: K, index: number) => void\n\t/**\n\t * Emitted when an item is removed from the register\n\t */\n\tdelete: (item: T, key: K, index: number) => void\n\t/**\n\t * Emitted when an item's value is updated (same key, new value)\n\t */\n\tupdate: (oldItem: T, newItem: T, key: K, index: number) => void\n\t/**\n\t * Emitted when an item's key changes (rekey operation)\n\t */\n\trekey: (item: T, oldKey: K, newKey: K, index: number) => void\n\t/**\n\t * Index signature for EventsBase compatibility\n\t */\n\t[key: string]: (...args: any[]) => void\n}\n\n// Helper to work around TypeScript limitation: base class expressions cannot reference class type parameters\nfunction getRegisterBase<T>() {\n\tclass RegisterBase extends Indexable(ArrayReadForward, {\n\t\tget(this: any, index: number) {\n\t\t\treturn this[getAt](index)\n\t\t},\n\t\tset(this: any, index: number, value: T) {\n\t\t\tthis[setAt](index, value)\n\t\t},\n\t\tgetLength(this: any) {\n\t\t\treturn this.length\n\t\t},\n\t\tsetLength(this: any, value: number) {\n\t\t\tthis.length = value\n\t\t},\n\t}) {\n\t\ttoArray(): T[] {\n\t\t\treturn Array.from(this)\n\t\t}\n\t}\n\treturn RegisterBase as new () => ArrayReadForward<T> & {\n\t\t[x: number]: T\n\t\ttoArray(): T[]\n\t}\n}\ninterface RegisterInstance<T> extends ArrayReadForward<T> {\n\t[index: number]: T\n}\n@unreactive\nclass RegisterClass<T, K extends PropertyKey = PropertyKey>\n\textends getRegisterBase<any>()\n\timplements RegisterInstance<T>\n{\n\tprotected get [forwardArray](): readonly T[] {\n\t\treturn this.toArray()\n\t}\n\treadonly #keyFn: KeyFunction<T, K>\n\treadonly #keys: K[]\n\treadonly #values: Map<K, T>\n\treadonly #usage = new Map<K, number>()\n\treadonly #valueInfo = new Map<T, { key: K; stop?: EffectCleanup }>()\n\treadonly #keyEffects = new Set<EffectCleanup>()\n\treadonly #ascend: FunctionWrapper\n\treadonly #events = new Eventful<RegisterEvents<T, K>>()\n\n\t/**\n\t * Register event listeners for CRUD operations\n\t */\n\ton(events: Partial<RegisterEvents<T, K>>): void\n\ton<EventType extends keyof RegisterEvents<T, K>>(\n\t\tevent: EventType,\n\t\tcb: RegisterEvents<T, K>[EventType]\n\t): () => void\n\ton<EventType extends keyof RegisterEvents<T, K>>(\n\t\teventOrEvents: EventType | Partial<RegisterEvents<T, K>>,\n\t\tcb?: RegisterEvents<T, K>[EventType]\n\t): () => void {\n\t\t// @ts-expect-error Delegate to Eventful\n\t\treturn this.#events.on(eventOrEvents, cb)\n\t}\n\n\t/**\n\t * Remove event listeners\n\t */\n\toff(events: Partial<RegisterEvents<T, K>>): void\n\toff<EventType extends keyof RegisterEvents<T, K>>(\n\t\tevent: EventType,\n\t\tcb?: RegisterEvents<T, K>[EventType]\n\t): void\n\toff<EventType extends keyof RegisterEvents<T, K>>(\n\t\teventOrEvents: EventType | Partial<RegisterEvents<T, K>>,\n\t\tcb?: RegisterEvents<T, K>[EventType]\n\t): void {\n\t\t// @ts-expect-error Delegate to Eventful\n\t\tthis.#events.off(eventOrEvents, cb)\n\t}\n\n\t/**\n\t * Register a global hook that receives all events\n\t */\n\thook(\n\t\tcb: <EventType extends keyof RegisterEvents<T, K>>(\n\t\t\tevent: EventType,\n\t\t\t...args: Parameters<RegisterEvents<T, K>[EventType]>\n\t\t) => void\n\t): () => void {\n\t\treturn this.#events.hook(cb)\n\t}\n\n\tconstructor(keyFn: KeyFunction<T, K>, initial?: Iterable<T>) {\n\t\tsuper()\n\t\t/* Moved below initialization */\n\t\tlet ascendGet: FunctionWrapper | undefined\n\t\teffect(({ ascend }) => {\n\t\t\tascendGet = ascend\n\t\t})\n\t\tthis.#ascend = ascendGet!\n\t\tif (typeof keyFn !== 'function') throw new Error('Register requires a key function')\n\t\tthis.#keyFn = keyFn\n\t\tthis.#keys = reactive([] as K[])\n\t\tthis.#values = reactive(new Map<K, T>())\n\t\tif (initial) this.push(...initial)\n\t}\n\n\tprivate ensureKey(value: T): K {\n\t\tlet info = this.#valueInfo.get(value)\n\t\tif (info) return info.key\n\t\tinfo = { key: undefined as unknown as K }\n\t\tthis.#valueInfo.set(value, info)\n\t\tthis.#ascend(() => {\n\t\t\tconst stop = effect(({ reaction }) => {\n\t\t\t\tconst nextKey = this.#keyFn(value)\n\t\t\t\tthis.assertValidKey(nextKey)\n\t\t\t\tconst previousKey = info!.key\n\t\t\t\tif (reaction && previousKey !== undefined && !Object.is(nextKey, previousKey))\n\t\t\t\t\tthis.#rekeyValue(value, previousKey, nextKey)\n\t\t\t\tinfo!.key = nextKey\n\t\t\t})\n\t\t\tinfo!.stop = stop\n\t\t\tthis.#keyEffects.add(stop as EffectCleanup)\n\t\t})\n\t\tif (info.key === undefined) throw new Error('Register key function must return a property key')\n\t\treturn info.key\n\t}\n\n\tprivate assertValidKey(key: unknown): asserts key is K {\n\t\tconst type = typeof key\n\t\tif (type !== 'string' && type !== 'number' && type !== 'symbol')\n\t\t\tthrow new Error('Register key function must return a property key')\n\t}\n\n\tprivate setKeyValue(key: K, value: T, index?: number) {\n\t\tconst existing = this.#values.get(key)\n\t\tif (existing !== undefined && existing !== value) {\n\t\t\tthis.cleanupValue(existing)\n\t\t\tthis.#values.set(key, value)\n\t\t\tif (index !== undefined) {\n\t\t\t\tthis.#events.emit('update', existing, value, key, index)\n\t\t\t}\n\t\t} else {\n\t\t\tthis.#values.set(key, value)\n\t\t}\n\t}\n\n\tprivate cleanupValue(value: T) {\n\t\tconst info = this.#valueInfo.get(value)\n\t\tif (!info) return\n\t\tconst stop = info.stop\n\t\tif (stop) {\n\t\t\tinfo.stop = undefined\n\t\t\tthis.#keyEffects.delete(stop)\n\t\t\tstop()\n\t\t}\n\t\tthis.#valueInfo.delete(value)\n\t}\n\n\tprivate disposeKeyEffects() {\n\t\tfor (const value of Array.from(this.#valueInfo.keys())) this.cleanupValue(value)\n\t\tthis.#keyEffects.clear()\n\t}\n\n\t#rekeyValue(value: T, oldKey: K, newKey: K) {\n\t\tif (Object.is(oldKey, newKey)) return\n\t\tconst existingValue = this.#values.get(newKey)\n\t\tif (existingValue !== undefined && existingValue !== value)\n\t\t\tthrow new Error(`Register key collision for key ${String(newKey)}`)\n\t\tconst count = this.#usage.get(oldKey)\n\t\tif (!count) return\n\t\tconst existingCount = this.#usage.get(newKey) ?? 0\n\t\tthis.setKeyValue(newKey, value)\n\t\tlet index = -1\n\t\tfor (let i = 0; i < this.#keys.length; i++)\n\t\t\tif (Object.is(this.#keys[i], oldKey)) {\n\t\t\t\tthis.#keys[i] = newKey\n\t\t\t\tif (index === -1) index = i\n\t\t\t}\n\t\tthis.#usage.set(newKey, existingCount + count)\n\t\tthis.#usage.delete(oldKey)\n\t\tthis.#values.delete(oldKey)\n\t\tconst updatedInfo = this.#valueInfo.get(value)\n\t\tif (updatedInfo) updatedInfo.key = newKey\n\t\tif (index !== -1) {\n\t\t\tthis.#events.emit('rekey', value, oldKey, newKey, index)\n\t\t}\n\t}\n\n\tprivate incrementUsage(key: K) {\n\t\tconst count = this.#usage.get(key) ?? 0\n\t\tthis.#usage.set(key, count + 1)\n\t}\n\n\tprivate decrementUsage(key: K, index?: number) {\n\t\tconst count = this.#usage.get(key)\n\t\tif (!count) return\n\t\tif (count <= 1) {\n\t\t\tconst value = this.#values.get(key)\n\t\t\tthis.#usage.delete(key)\n\t\t\tthis.#values.delete(key)\n\t\t\tif (value !== undefined) {\n\t\t\t\tthis.cleanupValue(value)\n\t\t\t\tconst idx = index ?? this.#keys.indexOf(key)\n\t\t\t\tthis.#events.emit('delete', value, key, idx)\n\t\t\t}\n\t\t} else {\n\t\t\tthis.#usage.set(key, count - 1)\n\t\t}\n\t}\n\n\tprivate normalizeIndex(index: number, allowEnd = false): number {\n\t\tconst length = this.length\n\t\tlet resolved = index\n\t\tif (resolved < 0) resolved = Math.max(length + resolved, 0)\n\t\tif (resolved > length) {\n\t\t\tif (allowEnd) resolved = length\n\t\t\telse throw new RangeError('Index out of bounds')\n\t\t}\n\t\tif (!allowEnd && resolved === length) throw new RangeError('Index out of bounds')\n\t\treturn resolved\n\t}\n\n\tprivate assignAt(index: number, key: K, value: T) {\n\t\tconst oldKey = this.#keys[index]\n\t\tif (oldKey !== undefined && Object.is(oldKey, key)) {\n\t\t\tconst oldValue = this.#values.get(key)\n\t\t\tthis.setKeyValue(key, value)\n\t\t\tif (oldValue !== undefined && oldValue !== value) {\n\t\t\t\tthis.#events.emit('update', oldValue, value, key, index)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t\tif (oldKey !== undefined) this.decrementUsage(oldKey as K)\n\t\tthis.#keys[index] = key\n\t\tthis.incrementUsage(key)\n\t\tthis.setKeyValue(key, value)\n\t\tthis.#events.emit('add', value, key, index)\n\t}\n\n\tprivate insertKeyValue(index: number, key: K, value: T) {\n\t\tthis.#keys.splice(index, 0, key)\n\t\tthis.incrementUsage(key)\n\t\tthis.setKeyValue(key, value)\n\t\tthis.#events.emit('add', value, key, index)\n\t}\n\n\tprivate rebuildFrom(values: T[]) {\n\t\tthis.disposeKeyEffects()\n\t\tthis.#keys.splice(0, this.#keys.length)\n\t\tthis.#usage.clear()\n\t\tthis.#values.clear()\n\t\tfor (const value of values) {\n\t\t\tconst key = this.ensureKey(value)\n\t\t\tthis.#keys.push(key)\n\t\t\tthis.incrementUsage(key)\n\t\t\tthis.#values.set(key, value)\n\t\t}\n\t}\n\n\tget length(): number {\n\t\treturn this.#keys.length\n\t}\n\n\t[getAt](index: number): T | undefined {\n\t\tconst key = this.#keys[index]\n\t\treturn key === undefined ? undefined : this.#values.get(key)\n\t}\n\n\t[setAt](index: number, value: T): void {\n\t\tconst key = this.ensureKey(value)\n\t\tif (index === this.length) {\n\t\t\tthis.insertKeyValue(index, key, value)\n\t\t\treturn\n\t\t}\n\t\tconst normalized = this.normalizeIndex(index)\n\t\tthis.assignAt(normalized, key, value)\n\t}\n\n\tpush(...items: T[]): number {\n\t\tfor (const item of items) {\n\t\t\tconst key = this.ensureKey(item)\n\t\t\tthis.insertKeyValue(this.length, key, item)\n\t\t}\n\t\treturn this.length\n\t}\n\n\tpop(): T | undefined {\n\t\tif (!this.length) return undefined\n\t\treturn this.removeAt(this.length - 1)\n\t}\n\n\tshift(): T | undefined {\n\t\tif (!this.length) return undefined\n\t\treturn this.removeAt(0)\n\t}\n\n\tunshift(...items: T[]): number {\n\t\tlet index = 0\n\t\tfor (const item of items) {\n\t\t\tconst key = this.ensureKey(item)\n\t\t\tthis.insertKeyValue(index++, key, item)\n\t\t}\n\t\treturn this.length\n\t}\n\n\tsplice(start: number, deleteCount?: number, ...items: T[]): T[] {\n\t\tconst normalizedStart = this.normalizeIndex(start, true)\n\t\tconst maxDeletions = this.length - normalizedStart\n\t\tconst actualDelete = Math.min(\n\t\t\tdeleteCount === undefined ? maxDeletions : Math.max(deleteCount, 0),\n\t\t\tmaxDeletions\n\t\t)\n\t\tconst keysToInsert: K[] = []\n\t\tfor (const item of items) keysToInsert.push(this.ensureKey(item))\n\t\tconst removedKeys = this.#keys.splice(normalizedStart, actualDelete, ...keysToInsert)\n\t\tconst removedValues: T[] = []\n\t\tfor (let i = 0; i < removedKeys.length; i++) {\n\t\t\tconst key = removedKeys[i]\n\t\t\tif (key === undefined) continue\n\t\t\tconst value = this.#values.get(key as K)\n\t\t\tthis.decrementUsage(key as K, normalizedStart + i)\n\t\t\tremovedValues.push(value as T)\n\t\t}\n\t\tfor (let i = 0; i < keysToInsert.length; i++) {\n\t\t\tconst key = keysToInsert[i]\n\t\t\tconst value = items[i]\n\t\t\tthis.incrementUsage(key)\n\t\t\tthis.setKeyValue(key, value)\n\t\t}\n\t\treturn removedValues\n\t}\n\n\tclear(): void {\n\t\tthis.#keys.length = 0\n\t\tthis.#usage.clear()\n\t\tthis.#values.clear()\n\t\tthis.disposeKeyEffects()\n\t}\n\n\tget(key: K): T | undefined {\n\t\treturn this.#values.get(key)\n\t}\n\tset(key: K, value: T): void {\n\t\tif (this.#values.has(key)) this.setKeyValue(key, value)\n\t}\n\n\tremove(key: K) {\n\t\tlet index: number = this.indexOfKey(key)\n\t\twhile (index !== -1) {\n\t\t\tthis.removeAt(index)\n\t\t\tindex = this.indexOfKey(key)\n\t\t}\n\t}\n\n\tpublic removeAt(index: number): T | undefined {\n\t\tconst [key] = this.#keys.splice(index, 1)\n\t\tif (key === undefined) return undefined\n\t\tconst value = this.#values.get(key as K)\n\t\tthis.decrementUsage(key as K, index)\n\t\treturn value\n\t}\n\n\t/**\n\t * Keep only the items for which the predicate returns true.\n\t * Items for which the predicate returns false are removed.\n\t *\n\t * The predicate is evaluated once per distinct key; duplicate keys\n\t * will follow the same keep/remove decision.\n\t */\n\tpublic keep(predicate: (value: T) => boolean): void {\n\t\tconst decisions = new Map<K, boolean>()\n\t\tfor (const [index, key] of this.#keys.entries()) {\n\t\t\tif (decisions.has(key)) {\n\t\t\t\tif (!decisions.get(key)) this.removeAt(index)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tconst value = this.#values.get(key)\n\t\t\tconst shouldKeep = predicate(value as T)\n\t\t\tdecisions.set(key, shouldKeep)\n\t\t\tif (!shouldKeep) this.removeAt(index)\n\t\t}\n\t}\n\n\thasKey(key: K): boolean {\n\t\treturn this.#usage.has(key)\n\t}\n\n\tindexOfKey(key: K): number {\n\t\treturn this.#keys.indexOf(key)\n\t}\n\n\tmapKeys(): IterableIterator<K> {\n\t\treturn this.#values.keys()\n\t}\n\n\tupdate(...values: T[]): void {\n\t\tfor (const value of values) {\n\t\t\tconst key = this.ensureKey(value)\n\t\t\tif (this.#values.has(key)) {\n\t\t\t\tconst index = this.#keys.indexOf(key)\n\t\t\t\tthis.setKeyValue(key, value, index)\n\t\t\t}\n\t\t}\n\t}\n\n\tupsert(insert: (value: T) => void, ...values: T[]): void {\n\t\tfor (const value of values) {\n\t\t\tconst key = this.ensureKey(value)\n\t\t\tif (this.#values.has(key)) this.setKeyValue(key, value)\n\t\t\telse insert(value)\n\t\t}\n\t}\n\n\tentries(): IterableIterator<[number, T]> {\n\t\tconst self = this\n\t\tfunction* iterator(): IterableIterator<[number, T]> {\n\t\t\tfor (let i = 0; i < self.#keys.length; i++) {\n\t\t\t\tconst val = self.#values.get(self.#keys[i])\n\t\t\t\tif (val !== undefined) yield [i, val]\n\t\t\t}\n\t\t}\n\t\treturn iterator()\n\t}\n\n\t[Symbol.iterator](): IterableIterator<T> {\n\t\tconst self = this\n\t\tfunction* iterator(): IterableIterator<T> {\n\t\t\tfor (const key of self.#keys) {\n\t\t\t\tconst value = self.#values.get(key)\n\t\t\t\tif (value !== undefined) yield value\n\t\t\t}\n\t\t}\n\t\treturn iterator()\n\t}\n\n\ttoString(): string {\n\t\treturn `[Register length=${this.length}]`\n\t}\n\n\tat(index: number): T | undefined {\n\t\tconst resolved = index < 0 ? this.length + index : index\n\t\tif (resolved < 0 || resolved >= this.length) return undefined\n\t\treturn this[getAt](resolved)\n\t}\n\treverse(): this {\n\t\tthis.#keys.reverse()\n\t\treturn this\n\t}\n\tsort(compareFn?: ((a: T, b: T) => number) | undefined): this {\n\t\tconst fwdCompareFn = compareFn\n\t\t\t? (a: K, b: K) => compareFn(this.#values.get(a) as T, this.#values.get(b) as T)\n\t\t\t: undefined\n\t\tthis.#keys.sort(fwdCompareFn)\n\t\treturn this\n\t}\n\tfill(value: T, start = 0, end = this.length): this {\n\t\tconst values = this.toArray()\n\t\tvalues.fill(value, start, end)\n\t\tthis.rebuildFrom(values)\n\t\treturn this\n\t}\n\n\tcopyWithin(target: number, start: number, end?: number): this {\n\t\tconst values = this.toArray()\n\t\tvalues.copyWithin(target, start, end)\n\t\tthis.rebuildFrom(values)\n\t\treturn this\n\t}\n}\n\nexport type Register<T, K extends PropertyKey = PropertyKey> = RegisterClass<T, K> & T[]\nexport const Register = RegisterClass as new <T, K extends PropertyKey = PropertyKey>(\n\tkeyFn: KeyFunction<T, K>,\n\tinitial?: Iterable<T>\n) => Register<T, K>\n\n/**\n * Creates a reactive Register - an ordered, array-like collection with stable key-based identity.\n *\n * Register combines array semantics (indexable access, ordering, iteration) with Map-like\n * key-based lookups. Items with the same key share the same value instance, making it ideal\n * for UI lists keyed by IDs or when you need to preserve identity across reorders.\n *\n * @param keyFn - Function that extracts the key from each item\n * @param initial - Optional initial items to populate the register\n * @returns A reactive Register instance\n *\n * @example\n * ```typescript\n * const users = register(\n * (user: User) => user.id,\n * [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]\n * )\n *\n * users.push({ id: 3, name: 'Charlie' })\n * const bob = users.get(2) // Get by key\n * ```\n */\nexport function register<T, K extends PropertyKey = PropertyKey>(\n\tkeyFn: KeyFunction<T, K>,\n\tinitial?: Iterable<T>\n): Register<T, K> {\n\treturn new RegisterClass(keyFn, initial) as Register<T, K>\n}\n","import { setEffectName } from '../../debug/debug'\nimport { FoolProof, named } from '../utils'\nimport { cleanedBy, getActiveEffect } from './effect-context'\nimport { effect, untracked } from './effects'\nimport { reactive } from './proxy'\nimport { Register } from './register'\nimport {\n\tcleanup,\n\ttype EffectTrigger,\n\ttype ProjectionContext,\n\tprojectionInfo,\n\ttype ScopedCallback,\n} from './types'\n/**\n * Maps projection effects (item effects) to their projection context\n */\nexport const effectProjectionMetadata = new WeakMap<EffectTrigger, ProjectionContext>()\n\n/**\n * Returns the projection context of the currently running effect, if any.\n */\nexport function getActiveProjection(): ProjectionContext | undefined {\n\tconst active = getActiveEffect()\n\treturn active ? effectProjectionMetadata.get(active) : undefined\n}\nfunction setActiveProjection(projection: ProjectionContext | undefined) {\n\tconst active = getActiveEffect()\n\tif (active) effectProjectionMetadata.set(active, projection)\n}\n\ntype ProjectOldValue<Target> = Target extends readonly (infer Item)[]\n\t? Item\n\t: Target extends Map<any, infer Item>\n\t\t? Item\n\t\t: Target extends Record<PropertyKey, infer Item>\n\t\t\t? Item\n\t\t\t: unknown\n\nexport type ProjectAccess<SourceValue, Key, SourceType, Target> = {\n\treadonly key: Key\n\tget(): SourceValue\n\tset(value: SourceValue): boolean\n\treadonly source: SourceType\n\treadonly old?: ProjectOldValue<Target>\n\tvalue: SourceValue\n}\n\nexport type ProjectCallback<SourceValue, Key, Target extends object, SourceType, Result> = (\n\taccess: ProjectAccess<SourceValue, Key, SourceType, Target>,\n\ttarget: Target\n) => Result\n\nexport type ProjectResult<Target extends object> = Target & { [cleanup]: ScopedCallback }\n\nfunction defineAccessValue<Access extends { get(): unknown; set(value: unknown): boolean }>(\n\taccess: Access\n) {\n\tObject.defineProperty(access, 'value', {\n\t\tget: access.get,\n\t\tset: access.set,\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t})\n}\n\nfunction makeCleanup<Result extends object>(\n\ttarget: Result,\n\teffectMap: Map<unknown, ScopedCallback>,\n\tonDispose: () => void,\n\tmetadata?: any\n): ProjectResult<Result> {\n\tif (metadata) {\n\t\tObject.defineProperty(target, projectionInfo, {\n\t\t\tvalue: metadata,\n\t\t\twritable: false,\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t})\n\t}\n\treturn cleanedBy(target, () => {\n\t\tonDispose()\n\t\tfor (const stop of effectMap.values()) stop?.()\n\t\teffectMap.clear()\n\t}) as ProjectResult<Result>\n}\n\nfunction projectArray<SourceValue, ResultValue>(\n\tsource: readonly SourceValue[],\n\tapply: ProjectCallback<SourceValue, number, ResultValue[], readonly SourceValue[], ResultValue>\n): ProjectResult<ResultValue[]> {\n\tsource = reactive(source)\n\tconst target = reactive([] as ResultValue[])\n\tconst indexEffects = new Map<number, ScopedCallback>()\n\n\tfunction normalizeTargetLength(length: number) {\n\t\tFoolProof.set(target as unknown as object, 'length', length, target)\n\t}\n\n\tfunction disposeIndex(index: number) {\n\t\tconst stopEffect = indexEffects.get(index)\n\t\tif (stopEffect) {\n\t\t\tindexEffects.delete(index)\n\t\t\tstopEffect()\n\t\t\tReflect.deleteProperty(target as unknown as object, index)\n\t\t}\n\t}\n\n\tconst parent = getActiveProjection()\n\tconst depth = parent ? parent.depth + 1 : 0\n\n\tconst cleanupLength = effect(named(`project:${source[Symbol.toStringTag]}.length`, ({ ascend }) => {\n\t\tconst length = source.length\n\t\tnormalizeTargetLength(length)\n\t\tconst existing = Array.from(indexEffects.keys())\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tif (indexEffects.has(i)) continue\n\t\t\tascend(function projectArrayIndexAscend() {\n\t\t\t\tconst index = i\n\t\t\t\tconst stop = effect(named(`project:${source[Symbol.toStringTag]}[${index}]`, ({ reaction }) => {\n\t\t\t\t\tif (!reaction) setActiveProjection({ source, key: index, target, depth, parent })\n\t\t\t\t\tconst previous = untracked(() => target[index])\n\t\t\t\t\tconst accessBase = {\n\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tget: () => FoolProof.get(source as any, index, source),\n\t\t\t\t\t\tset: (value: SourceValue) => FoolProof.set(source as any, index, value, source),\n\t\t\t\t\t\told: previous,\n\t\t\t\t\t} as ProjectAccess<SourceValue, number, readonly SourceValue[], ResultValue[]>\n\t\t\t\t\tdefineAccessValue(accessBase)\n\t\t\t\t\ttarget[index] = apply(accessBase, target)\n\t\t\t\t}))\n\t\t\t\tsetEffectName(stop, `project[${depth}]:${index}`)\n\t\t\t\tindexEffects.set(i, stop)\n\t\t\t})\n\t\t}\n\t\tfor (const index of existing) if (index >= length) disposeIndex(index)\n\t}))\n\n\treturn makeCleanup(target, indexEffects, () => cleanupLength(), {\n\t\tsource,\n\t\ttarget,\n\t\tapply,\n\t\tdepth,\n\t\tparent,\n\t} as ProjectionContext)\n}\n\nfunction projectRegister<Key extends PropertyKey, SourceValue, ResultValue>(\n\tsource: Register<SourceValue, Key>,\n\tapply: ProjectCallback<\n\t\tSourceValue,\n\t\tKey,\n\t\tMap<Key, ResultValue>,\n\t\tRegister<SourceValue, Key>,\n\t\tResultValue\n\t>\n): ProjectResult<Map<Key, ResultValue>> {\n\tsource = reactive(source) as Register<SourceValue, Key>\n\tconst rawTarget = new Map<Key, ResultValue>()\n\tconst target = reactive(rawTarget) as Map<Key, ResultValue>\n\tconst keyEffects = new Map<Key, ScopedCallback>()\n\n\tfunction disposeKey(key: Key) {\n\t\tconst stopEffect = keyEffects.get(key)\n\t\tif (stopEffect) {\n\t\t\tstopEffect()\n\t\t\tkeyEffects.delete(key)\n\t\t\ttarget.delete(key)\n\t\t}\n\t}\n\n\tconst parent = getActiveProjection()\n\tconst depth = parent ? parent.depth + 1 : 0\n\n\tconst cleanupKeys = effect(function projectRegisterEffect({ ascend }) {\n\t\tconst keys = new Set<Key>()\n\t\tfor (const key of source.mapKeys()) keys.add(key)\n\n\t\tfor (const key of keys) {\n\t\t\tif (keyEffects.has(key)) continue\n\t\t\tascend(() => {\n\t\t\t\tconst stop = effect(function projectRegisterKeyEffect({ reaction }) {\n\t\t\t\t\tif (!reaction) setActiveProjection({ source, key, target, depth, parent })\n\t\t\t\t\tconst previous = untracked(() => target.get(key))\n\t\t\t\t\tconst accessBase = {\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tsource: source,\n\t\t\t\t\t\tget: () => source.get(key) as SourceValue,\n\t\t\t\t\t\tset: (value: SourceValue) => {\n\t\t\t\t\t\t\tsource.set(key, value)\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t},\n\t\t\t\t\t\told: previous,\n\t\t\t\t\t} as ProjectAccess<SourceValue, Key, Register<SourceValue, Key>, Map<Key, ResultValue>>\n\t\t\t\t\tdefineAccessValue(accessBase)\n\t\t\t\t\tconst produced = apply(accessBase, target)\n\t\t\t\t\ttarget.set(key, produced)\n\t\t\t\t})\n\t\t\t\tsetEffectName(stop, `project[${depth}]:${String(key)}`)\n\t\t\t\tkeyEffects.set(key, stop)\n\t\t\t})\n\t\t}\n\n\t\tfor (const key of Array.from(keyEffects.keys())) if (!keys.has(key)) disposeKey(key)\n\t})\n\n\treturn makeCleanup(target, keyEffects, () => cleanupKeys(), {\n\t\tsource: source,\n\t\ttarget,\n\t\tapply,\n\t\tdepth,\n\t\tparent,\n\t} as ProjectionContext)\n}\n\nfunction projectRecord<Source extends Record<PropertyKey, any>, ResultValue>(\n\tsource: Source,\n\tapply: ProjectCallback<\n\t\tSource[keyof Source],\n\t\tkeyof Source,\n\t\tRecord<keyof Source, ResultValue>,\n\t\tSource,\n\t\tResultValue\n\t>\n): ProjectResult<Record<keyof Source, ResultValue>> {\n\tsource = reactive(source) as Source\n\tconst target = reactive({} as Record<keyof Source, ResultValue>)\n\tconst keyEffects = new Map<PropertyKey, ScopedCallback>()\n\n\tfunction disposeKey(key: PropertyKey) {\n\t\tconst stopEffect = keyEffects.get(key)\n\t\tif (stopEffect) {\n\t\t\tstopEffect()\n\t\t\tkeyEffects.delete(key)\n\t\t\tReflect.deleteProperty(target as Record<PropertyKey, unknown>, key)\n\t\t}\n\t}\n\n\tconst parent = getActiveProjection()\n\tconst depth = parent ? parent.depth + 1 : 0\n\n\tconst cleanupKeys = effect(function projectRecordEffect({ ascend }) {\n\t\tconst keys = new Set<PropertyKey>()\n\t\tfor (const key in source) keys.add(key)\n\t\tconst observed = Reflect.ownKeys(source)\n\t\tfor (const key of observed) keys.add(key)\n\n\t\tfor (const key of keys) {\n\t\t\tif (keyEffects.has(key)) continue\n\t\t\tascend(() => {\n\t\t\t\tconst stop = effect(function projectRecordKeyEffect({ reaction }) {\n\t\t\t\t\tif (!reaction) setActiveProjection({ source, key, target, depth, parent })\n\t\t\t\t\tconst sourceKey = key as keyof Source\n\t\t\t\t\tconst previous = untracked(\n\t\t\t\t\t\t() => (target as Record<PropertyKey, ResultValue | undefined>)[key]\n\t\t\t\t\t)\n\t\t\t\t\tconst accessBase = {\n\t\t\t\t\t\tkey: sourceKey,\n\t\t\t\t\t\tsource: source,\n\t\t\t\t\t\tget: () => FoolProof.get(source, sourceKey, source),\n\t\t\t\t\t\tset: (value: Source[typeof sourceKey]) =>\n\t\t\t\t\t\t\tFoolProof.set(source, sourceKey, value, source),\n\t\t\t\t\t\told: previous,\n\t\t\t\t\t} as ProjectAccess<\n\t\t\t\t\t\tSource[typeof sourceKey],\n\t\t\t\t\t\tkeyof Source,\n\t\t\t\t\t\tSource,\n\t\t\t\t\t\tRecord<keyof Source, ResultValue>\n\t\t\t\t\t>\n\t\t\t\t\tdefineAccessValue(accessBase)\n\t\t\t\t\tconst produced = apply(accessBase, target)\n\t\t\t\t\t;(target as any)[sourceKey] = produced\n\t\t\t\t})\n\t\t\t\tsetEffectName(stop, `project[${depth}]:${String(key)}`)\n\t\t\t\tkeyEffects.set(key, stop)\n\t\t\t})\n\t\t}\n\n\t\tfor (const key of Array.from(keyEffects.keys())) if (!keys.has(key)) disposeKey(key)\n\t})\n\n\treturn makeCleanup(target, keyEffects, () => cleanupKeys(), {\n\t\tsource: source,\n\t\ttarget,\n\t\tapply,\n\t\tdepth,\n\t\tparent,\n\t} as ProjectionContext)\n}\n\nfunction projectMap<Key, Value, ResultValue>(\n\tsource: Map<Key, Value>,\n\tapply: ProjectCallback<Value, Key, Map<Key, ResultValue>, Map<Key, Value>, ResultValue>\n): ProjectResult<Map<Key, ResultValue>> {\n\tsource = reactive(source) as Map<Key, Value>\n\tconst rawTarget = new Map<Key, ResultValue>()\n\tconst target = reactive(rawTarget) as Map<Key, ResultValue>\n\tconst keyEffects = new Map<Key, ScopedCallback>()\n\n\tfunction disposeKey(key: Key) {\n\t\tconst stopEffect = keyEffects.get(key)\n\t\tif (stopEffect) {\n\t\t\tstopEffect()\n\t\t\tkeyEffects.delete(key)\n\t\t\ttarget.delete(key)\n\t\t}\n\t}\n\n\tconst parent = getActiveProjection()\n\tconst depth = parent ? parent.depth + 1 : 0\n\n\tconst cleanupKeys = effect(function projectMapEffect({ ascend }) {\n\t\tconst keys = new Set<Key>()\n\t\tfor (const key of source.keys()) keys.add(key)\n\n\t\tfor (const key of keys) {\n\t\t\tif (keyEffects.has(key)) continue\n\t\t\tascend(() => {\n\t\t\t\tconst stop = effect(function projectMapKeyEffect({ reaction }) {\n\t\t\t\t\tif (!reaction) setActiveProjection({ source, key, target, depth, parent })\n\t\t\t\t\tconst previous = untracked(() => target.get(key))\n\t\t\t\t\tconst accessBase = {\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tsource: source,\n\t\t\t\t\t\tget: () => source.get(key) as Value,\n\t\t\t\t\t\tset: (value: Value) => {\n\t\t\t\t\t\t\tsource.set(key, value)\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t},\n\t\t\t\t\t\told: previous,\n\t\t\t\t\t} as ProjectAccess<Value, Key, Map<Key, Value>, Map<Key, ResultValue>>\n\t\t\t\t\tdefineAccessValue(accessBase)\n\t\t\t\t\tconst produced = apply(accessBase, target)\n\t\t\t\t\ttarget.set(key, produced)\n\t\t\t\t})\n\t\t\t\tsetEffectName(stop, `project[${depth}]:${String(key)}`)\n\t\t\t\tkeyEffects.set(key, stop)\n\t\t\t})\n\t\t}\n\n\t\tfor (const key of Array.from(keyEffects.keys())) if (!keys.has(key)) disposeKey(key)\n\t})\n\n\treturn makeCleanup(target, keyEffects, () => cleanupKeys(), {\n\t\tsource: source,\n\t\ttarget,\n\t\tapply,\n\t\tdepth,\n\t\tparent,\n\t} as ProjectionContext)\n}\n\ntype ProjectOverload = {\n\t<SourceValue, ResultValue>(\n\t\tsource: readonly SourceValue[],\n\t\tapply: ProjectCallback<SourceValue, number, ResultValue[], readonly SourceValue[], ResultValue>\n\t): ProjectResult<ResultValue[]>\n\t<Key extends PropertyKey, SourceValue, ResultValue>(\n\t\tsource: Register<SourceValue, Key>,\n\t\tapply: ProjectCallback<\n\t\t\tSourceValue,\n\t\t\tKey,\n\t\t\tMap<Key, ResultValue>,\n\t\t\tRegister<SourceValue, Key>,\n\t\t\tResultValue\n\t\t>\n\t): ProjectResult<Map<Key, ResultValue>>\n\t<Source extends Record<PropertyKey, any>, ResultValue>(\n\t\tsource: Source,\n\t\tapply: ProjectCallback<\n\t\t\tSource[keyof Source],\n\t\t\tkeyof Source,\n\t\t\tRecord<keyof Source, ResultValue>,\n\t\t\tSource,\n\t\t\tResultValue\n\t\t>\n\t): ProjectResult<Record<keyof Source, ResultValue>>\n\t<Key, Value, ResultValue>(\n\t\tsource: Map<Key, Value>,\n\t\tapply: ProjectCallback<Value, Key, Map<Key, ResultValue>, Map<Key, Value>, ResultValue>\n\t): ProjectResult<Map<Key, ResultValue>>\n\tarray: typeof projectArray\n\tregister: typeof projectRegister\n\trecord: typeof projectRecord\n\tmap: typeof projectMap\n}\n\nfunction projectCore<SourceValue, ResultValue>(\n\tsource: readonly SourceValue[],\n\tapply: ProjectCallback<SourceValue, number, ResultValue[], readonly SourceValue[], ResultValue>\n): ProjectResult<ResultValue[]>\nfunction projectCore<Key extends PropertyKey, SourceValue, ResultValue>(\n\tsource: Register<SourceValue, Key>,\n\tapply: ProjectCallback<\n\t\tSourceValue,\n\t\tKey,\n\t\tMap<Key, ResultValue>,\n\t\tRegister<SourceValue, Key>,\n\t\tResultValue\n\t>\n): ProjectResult<Map<Key, ResultValue>>\nfunction projectCore<Source extends Record<PropertyKey, any>, ResultValue>(\n\tsource: Source,\n\tapply: ProjectCallback<\n\t\tSource[keyof Source],\n\t\tkeyof Source,\n\t\tRecord<keyof Source, ResultValue>,\n\t\tSource,\n\t\tResultValue\n\t>\n): ProjectResult<Record<keyof Source, ResultValue>>\nfunction projectCore<Key, Value, ResultValue>(\n\tsource: Map<Key, Value>,\n\tapply: ProjectCallback<Value, Key, Map<Key, ResultValue>, Map<Key, Value>, ResultValue>\n): ProjectResult<Map<Key, ResultValue>>\nfunction projectCore(source: any, apply: any): ProjectResult<any> {\n\tif (Array.isArray(source)) return projectArray(source, apply)\n\tif (source instanceof Map) return projectMap(source, apply)\n\tif (source instanceof Register) return projectRegister(source, apply)\n\tif (source && (source.constructor === Object || source.constructor === undefined))\n\t\treturn projectRecord(source, apply)\n\tthrow new Error('Unsupported source type')\n}\n\nexport const project: ProjectOverload = Object.assign(projectCore, {\n\tarray: projectArray,\n\tregister: projectRegister,\n\trecord: projectRecord,\n\tmap: projectMap,\n})\n","import { FoolProof } from '../utils'\nimport { attend } from './buffer'\nimport { touched1 } from './change'\nimport { cleanedBy } from './effect-context'\nimport { reactive } from './proxy'\nimport {\n\tcleanup,\n\ttype EffectCloser,\n\ttype ScopedCallback,\n} from './types'\n\n/**\n * Provides type-safe access to a source object's property within the organized callback.\n * @template Source - The type of the source object\n * @template Key - The type of the property key in the source object\n */\nexport type OrganizedAccess<Source extends Record<PropertyKey, any>, Key extends keyof Source> = {\n\t/** The property key being accessed */\n\treadonly key: Key\n\n\t/**\n\t * Gets the current value of the property from the source object\n\t * @returns The current value of the property\n\t */\n\tget(): Source[Key]\n\n\t/**\n\t * Updates the property value in the source object\n\t * @param value - The new value to set\n\t * @returns {boolean} True if the update was successful\n\t */\n\tset(value: Source[Key]): boolean\n\n\t/**\n\t * The current value of the property (equivalent to using get()/set() directly)\n\t */\n\tvalue: Source[Key]\n}\n\n/**\n * Callback function type for the organized function that processes each source property.\n * @template Source - The type of the source object\n * @template Target - The type of the target object\n */\nexport type OrganizedCallback<Source extends Record<PropertyKey, any>, Target extends object> = <\n\tKey extends keyof Source,\n>(\n\t/**\n\t * Accessor object for the current source property\n\t */\n\taccess: OrganizedAccess<Source, Key>,\n\n\t/**\n\t * The target object where organized data will be stored\n\t */\n\ttarget: Target\n) => EffectCloser | undefined\n\n/**\n * The result type of the organized function, combining the target object with cleanup capability.\n * @template Target - The type of the target object\n */\nexport type OrganizedResult<Target extends object> = Target & {\n\t/**\n\t * Cleanup function to dispose of all reactive bindings created by organized().\n\t * This is automatically called when the effect that created the organized binding is disposed.\n\t */\n\t[cleanup]: ScopedCallback\n}\n\n/**\n * Organizes a source object's properties into a target object using a callback function.\n * This creates a reactive mapping between source properties and a target object,\n * automatically handling property additions, updates, and removals.\n *\n * @template Source - The type of the source object\n * @template Target - The type of the target object (defaults to Record<PropertyKey, any>)\n *\n * @param {Source} source - The source object to organize\n * @param {OrganizedCallback<Source, Target>} apply - Callback function that defines how each source property is mapped to the target\n * @param {Target} [baseTarget={}] - Optional base target object to use (will be made reactive if not already)\n *\n * @returns {OrganizedResult<Target>} The target object with cleanup capability\n *\n * @example\n * // Organize user permissions into role-based access\n * const user = reactive({ isAdmin: true, canEdit: false });\n * const permissions = organized(\n * user,\n * (access, target) => {\n * if (access.key === 'isAdmin') {\n * target.hasFullAccess = access.value;\n * }\n * target[`can${access.key.charAt(0).toUpperCase() + access.key.slice(1)}`] = access.value;\n * }\n * );\n *\n * @example\n * // Transform object structure with cleanup\n * const source = reactive({ firstName: 'John', lastName: 'Doe' });\n * const formatted = organized(\n * source,\n * (access, target) => {\n * if (access.key === 'firstName' || access.key === 'lastName') {\n * target.fullName = `${source.firstName} ${source.lastName}`.trim();\n * }\n * }\n * );\n *\n * @example\n * // Using with cleanup in a component\n * effect(() => {\n * const data = fetchData();\n * const organizedData = organized(data, (access, target) => {\n * // Transform data\n * });\n *\n * // The cleanup will be called automatically when the effect is disposed\n * return () => organizedData[cleanup]();\n * });\n */\nexport function organized<\n\tSource extends Record<PropertyKey, any>,\n\tTarget extends object = Record<PropertyKey, any>,\n>(\n\tsource: Source,\n\tapply: OrganizedCallback<Source, Target>,\n\tbaseTarget: Target = {} as Target\n): OrganizedResult<Target> {\n\tconst observedSource = reactive(source) as Source\n\tconst target = reactive(baseTarget) as Target\n\n\tconst stop = attend(\n\t\t() => {\n\t\t\tconst keys: PropertyKey[] = []\n\t\t\tfor (const key in observedSource) keys.push(key)\n\t\t\treturn keys\n\t\t},\n\t\t(key) => {\n\t\t\tconst sourceKey = key as keyof Source\n\t\t\tconst accessBase = {\n\t\t\t\tkey: sourceKey,\n\t\t\t\tget: () => FoolProof.get(observedSource, sourceKey, observedSource),\n\t\t\t\tset: (value: Source[typeof sourceKey]) =>\n\t\t\t\t\tFoolProof.set(observedSource, sourceKey, value, observedSource),\n\t\t\t}\n\t\t\tObject.defineProperty(accessBase, 'value', {\n\t\t\t\tget: accessBase.get,\n\t\t\t\tset: accessBase.set,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t})\n\t\t\treturn apply(accessBase as OrganizedAccess<Source, typeof sourceKey>, target)\n\t\t}\n\t)\n\n\treturn cleanedBy(target, stop) as OrganizedResult<Target>\n}\n\n/**\n * Organizes a property on a target object\n * Shortcut for defineProperty/delete with touched signal\n * @param target - The target object\n * @param property - The property to organize\n * @param access - The access object\n * @returns The property descriptor\n */\nexport function organize<T>(\n\ttarget: object,\n\tproperty: PropertyKey,\n\taccess: { get?(): T; set?(value: T): boolean }\n) {\n\tObject.defineProperty(target, property, {\n\t\tget: access.get,\n\t\tset: access.set,\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t})\n\ttouched1(target, { type: 'set', prop: property }, property)\n\treturn () => delete (target as any)[property]\n}\n","import { attend } from './buffer'\nimport { touched1 } from './change'\nimport { cleanedBy } from './effect-context'\nimport { reactive } from './proxy'\n\n/**\n * Reactively defines properties on a target object based on a descriptors record.\n * \n * It tracks the keys of the descriptors record and defines/updates/removes \n * properties on the target object as they change.\n *\n * @param descriptors - A reactive record of property descriptors.\n * @param target - The object to define properties on (defaults to a new object).\n * @returns The target object with reactive property definitions.\n */\nexport function describe<T extends object>(\n\tdescriptors: Record<PropertyKey, PropertyDescriptor>,\n\ttarget: T = Object.create(null) as T\n): T {\n\tdescriptors = reactive(descriptors)\n\n\tconst stop = attend(\n\t\t() => Reflect.ownKeys(descriptors),\n\t\t(key) => {\n\t\t\tconst desc = (descriptors as any)[key]\n\t\t\tif (desc) {\n\t\t\t\tObject.defineProperty(target, key, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\t...desc,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t})\n\t\t\t\ttouched1(target, { type: 'set', prop: key }, key)\n\t\t\t}\n\t\t\treturn () => Reflect.deleteProperty(target, key)\n\t\t}\n\t)\n\n\treturn cleanedBy(target, stop)\n}\n","import { FoolProof } from '../utils'\nimport { touched } from './change'\nimport { makeReactiveEntriesIterator, makeReactiveIterator } from './non-reactive'\nimport { reactive } from './proxy'\nimport { unwrap } from './proxy-state'\nimport { dependant } from './tracking'\n\nfunction* index(i: number, { length = true } = {}): IterableIterator<number | 'length'> {\n\tif (length) yield 'length'\n\tyield i\n}\n\nfunction* range(\n\ta: number,\n\tb: number,\n\t{ length = false } = {}\n): IterableIterator<number | 'length'> {\n\tconst start = Math.min(a, b)\n\tconst end = Math.max(a, b)\n\tif (length) yield 'length'\n\tfor (let i = start; i <= end; i++) yield i\n}\nexport abstract class Indexer extends Array {\n\tget(i: number): any {\n\t\tdependant(this, i)\n\t\treturn reactive(this[i])\n\t}\n\t// Returns undefined intentionally: signals the proxy handler that notifications\n\t// were already dispatched via touched(), preventing double notification\n\tset(i: number, value: any) {\n\t\tconst added = i >= this.length\n\t\tthis[i] = value\n\t\ttouched(this, { type: 'set', prop: i }, index(i, { length: added }))\n\t}\n}\nconst indexLess = { get: FoolProof.get, set: FoolProof.set }\nObject.assign(FoolProof, {\n\tget(obj: any, prop: any, receiver: any) {\n\t\tif (obj instanceof Array && typeof prop === 'string') {\n\t\t\tconst index = parseInt(prop)\n\t\t\tif (!Number.isNaN(index)) return Indexer.prototype.get.call(obj, index)\n\t\t}\n\t\treturn indexLess.get(obj, prop, receiver)\n\t},\n\tset(obj: any, prop: any, value: any, receiver: any) {\n\t\tif (obj instanceof Array && typeof prop === 'string') {\n\t\t\tconst index = parseInt(prop)\n\t\t\tif (!Number.isNaN(index)) return Indexer.prototype.set.call(obj, index, value)\n\t\t}\n\t\treturn indexLess.set(obj, prop, value, receiver)\n\t},\n})\n\nexport abstract class ReactiveArray extends Array {\n\ttoJSON() {\n\t\treturn this\n\t}\n\tget length(): number {\n\t\tdependant(this, 'length')\n\t\treturn this.length\n\t}\n\tset length(value: number) {\n\t\tconst oldLength = this.length\n\t\tif (oldLength === value) return\n\t\ttry {\n\t\t\tthis.length = value\n\t\t} finally {\n\t\t\ttouched(this, { type: 'set', prop: 'length' }, range(oldLength, value, { length: true }))\n\t\t}\n\t}\n\t// Safe array access with negative indices\n\tat(index: number): any {\n\t\tconst actualIndex = index < 0 ? this.length + index : index\n\t\tdependant(this, actualIndex)\n\t\tif (index < 0) dependant(this, 'length')\n\t\tif (actualIndex < 0 || actualIndex >= this.length) return undefined\n\t\treturn reactive(this[actualIndex])\n\t}\n\n\t// Immutable versions of mutator methods\n\ttoReversed(): any[] {\n\t\tdependant(this)\n\t\treturn reactive(this.toReversed())\n\t}\n\n\ttoSorted(compareFn?: (a: any, b: any) => number): any[] {\n\t\tdependant(this)\n\t\treturn reactive(this.toSorted(compareFn))\n\t}\n\n\ttoSpliced(start: number, deleteCount?: number, ...items: any[]): any[] {\n\t\tdependant(this)\n\t\treturn deleteCount === undefined\n\t\t\t? this.toSpliced(start)\n\t\t\t: this.toSpliced(start, deleteCount, ...items)\n\t}\n\n\twith(index: number, value: any): any[] {\n\t\tdependant(this)\n\t\treturn reactive(this.with(index, value))\n\t}\n\n\t// Iterator methods with reactivity tracking\n\tentries(): any {\n\t\tdependant(this)\n\t\treturn makeReactiveEntriesIterator(this.entries())\n\t}\n\n\tkeys(): any {\n\t\tdependant(this, 'length')\n\t\treturn this.keys()\n\t}\n\n\tvalues(): any {\n\t\tdependant(this)\n\t\treturn makeReactiveIterator(this.values())\n\t}\n\n\t[Symbol.iterator](): ArrayIterator<any> {\n\t\tdependant(this)\n\t\tconst nativeIterator = this[Symbol.iterator]()\n\t\treturn {\n\t\t\tnext() {\n\t\t\t\tconst result = nativeIterator.next()\n\t\t\t\tif (result.done) {\n\t\t\t\t\treturn result\n\t\t\t\t}\n\t\t\t\treturn { value: reactive(result.value), done: false }\n\t\t\t},\n\t\t\t[Symbol.iterator]() {\n\t\t\t\treturn this\n\t\t\t},\n\t\t\t[Symbol.dispose]() {},\n\t\t} as any\n\t}\n\n\tindexOf(searchElement: any, fromIndex?: number): number {\n\t\tconst length = this.length\n\t\tlet i = fromIndex === undefined ? 0 : fromIndex\n\t\tif (i < 0) i = Math.max(length + i, 0)\n\n\t\tconst unwrappedSearch = unwrap(searchElement)\n\n\t\tfor (; i < length; i++) {\n\t\t\tdependant(this, i)\n\t\t\tconst item = this[i]\n\t\t\tif (item === searchElement || item === unwrappedSearch || unwrap(item) === unwrappedSearch) {\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\n\t\tdependant(this, 'length')\n\t\treturn -1\n\t}\n\n\tlastIndexOf(searchElement: any, fromIndex?: number): number {\n\t\tconst length = this.length\n\t\tlet i = fromIndex === undefined ? length - 1 : fromIndex\n\t\tif (i >= length) i = length - 1\n\t\tif (i < 0) i = Math.max(length + i, -1) // -1 ensures loop condition i >= 0 works correctly\n\n\t\tconst unwrappedSearch = unwrap(searchElement)\n\n\t\tfor (; i >= 0; i--) {\n\t\t\tdependant(this, i)\n\t\t\tconst item = this[i]\n\t\t\tif (item === searchElement || item === unwrappedSearch || unwrap(item) === unwrappedSearch) {\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\n\t\t// If we scanned the whole relevant part and didn't find it, we depend on length\n\t\t// (because adding elements might shift indices or add the element)\n\t\t// Actually for lastIndexOf, if we start from end, length dependency is implicit in the start index calculation?\n\t\t// But if we return -1, it means we didn't find it.\n\t\t// If we push an element, should lastIndexOf update?\n\t\t// Yes, if the new element is the one we are looking for.\n\t\tdependant(this, 'length')\n\t\treturn -1\n\t}\n\n\tincludes(searchElement: any, fromIndex?: number): boolean {\n\t\treturn this.indexOf(searchElement, fromIndex) !== -1\n\t}\n\n\tfind(predicate: (this: any, value: any, index: number, obj: any[]) => boolean, thisArg?: any): any\n\tfind(searchElement: any, fromIndex?: number): any\n\tfind(predicateOrElement: any, thisArg?: any): any {\n\t\tif (typeof predicateOrElement === 'function') {\n\t\t\tconst predicate = predicateOrElement as (\n\t\t\t\tthis: any,\n\t\t\t\tvalue: any,\n\t\t\t\tindex: number,\n\t\t\t\tobj: any[]\n\t\t\t) => boolean\n\t\t\tconst length = this.length\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tdependant(this, i)\n\t\t\t\tconst val = reactive(this[i])\n\t\t\t\tif (predicate.call(thisArg, val, i, this)) {\n\t\t\t\t\treturn val\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdependant(this, 'length')\n\t\t\treturn undefined\n\t\t}\n\t\tconst fromIndex = typeof thisArg === 'number' ? thisArg : undefined\n\t\tconst index = this.indexOf(predicateOrElement, fromIndex)\n\t\tif (index === -1) return undefined\n\t\treturn reactive(this[index])\n\t}\n\n\tfindIndex(\n\t\tpredicate: (this: any, value: any, index: number, obj: any[]) => boolean,\n\t\tthisArg?: any\n\t): number\n\tfindIndex(searchElement: any, fromIndex?: number): number\n\tfindIndex(predicateOrElement: any, thisArg?: any): number {\n\t\tif (typeof predicateOrElement === 'function') {\n\t\t\tconst predicate = predicateOrElement as (\n\t\t\t\tthis: any,\n\t\t\t\tvalue: any,\n\t\t\t\tindex: number,\n\t\t\t\tobj: any[]\n\t\t\t) => boolean\n\t\t\tconst length = this.length\n\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tdependant(this, i)\n\t\t\t\tconst val = reactive(this[i])\n\t\t\t\tif (predicate.call(thisArg, val, i, this)) {\n\t\t\t\t\treturn i\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdependant(this, 'length')\n\t\t\treturn -1\n\t\t}\n\t\tconst fromIndex = typeof thisArg === 'number' ? thisArg : undefined\n\t\treturn this.indexOf(predicateOrElement, fromIndex)\n\t}\n\n\tflat(depth?: number): any[] {\n\t\tdependant(this)\n\t\treturn reactive(depth === undefined ? this.flat() : this.flat(depth))\n\t}\n\n\tflatMap(\n\t\tcallbackfn: (this: any, value: any, index: number, array: any[]) => any[],\n\t\tthisArg?: any\n\t): any[] {\n\t\tdependant(this)\n\t\treturn reactive(\n\t\t\tthis.flatMap(\n\t\t\t\t(item, index, array) => callbackfn.call(thisArg, reactive(item), index, array),\n\t\t\t\tthisArg\n\t\t\t)\n\t\t)\n\t}\n\n\tfilter(callbackfn: (value: any, index: number, array: any[]) => boolean, thisArg?: any): any[] {\n\t\tdependant(this)\n\t\treturn reactive(\n\t\t\tthis.filter((item, index, array) => callbackfn(reactive(item), index, array), thisArg)\n\t\t)\n\t}\n\n\tmap(callbackfn: (value: any, index: number, array: any[]) => any, thisArg?: any): any[] {\n\t\tdependant(this)\n\t\treturn reactive(\n\t\t\tthis.map((item, index, array) => callbackfn(reactive(item), index, array), thisArg)\n\t\t)\n\t}\n\n\treduce(\n\t\tcallbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any,\n\t\tinitialValue?: any\n\t): any {\n\t\tdependant(this)\n\t\tconst result =\n\t\t\tinitialValue === undefined\n\t\t\t\t? this.reduce(callbackfn as any)\n\t\t\t\t: this.reduce(callbackfn as any, initialValue)\n\t\treturn reactive(result)\n\t}\n\n\treduceRight(\n\t\tcallbackfn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any,\n\t\tinitialValue?: any\n\t): any {\n\t\tdependant(this)\n\t\tconst result =\n\t\t\tinitialValue !== undefined\n\t\t\t\t? this.reduceRight(callbackfn as any, initialValue)\n\t\t\t\t: (this as any).reduceRight(callbackfn as any)\n\t\treturn reactive(result)\n\t}\n\n\tslice(start?: number, end?: number): any[] {\n\t\tfor (const i of range(start || 0, end || this.length - 1)) dependant(this, i)\n\t\treturn start === undefined\n\t\t\t? this.slice()\n\t\t\t: end === undefined\n\t\t\t\t? this.slice(start)\n\t\t\t\t: this.slice(start, end)\n\t}\n\n\tconcat(...items: any[]): any[] {\n\t\tdependant(this)\n\t\treturn reactive(this.concat(...items))\n\t}\n\n\tjoin(separator?: string): string {\n\t\tdependant(this)\n\t\treturn this.join(separator as any)\n\t}\n\n\tforEach(callbackfn: (value: any, index: number, array: any[]) => void, thisArg?: any): void {\n\t\tdependant(this)\n\t\tthis.forEach((value, index, array) => {\n\t\t\tcallbackfn.call(thisArg, reactive(value), index, array)\n\t\t})\n\t}\n\n\t// no need to make it dependant on indexes after the found one\n\tevery<S>(\n\t\tpredicate: (value: any, index: number, array: any[]) => value is S,\n\t\tthisArg?: any\n\t): this is S[]\n\tevery(callbackfn: (value: any, index: number, array: any[]) => boolean, thisArg?: any): boolean\n\tevery(callbackfn: (value: any, index: number, array: any[]) => boolean, thisArg?: any): boolean {\n\t\tconst length = this.length\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdependant(this, i)\n\t\t\tif (!callbackfn.call(thisArg, reactive(this[i]), i, this)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tdependant(this, 'length')\n\t\treturn true\n\t}\n\n\tsome(callbackfn: (value: any, index: number, array: any[]) => boolean, thisArg?: any): boolean {\n\t\tconst length = this.length\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdependant(this, i)\n\t\t\tif (callbackfn.call(thisArg, reactive(this[i]), i, this)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\tdependant(this, 'length')\n\t\treturn false\n\t}\n\t// Side-effectful\n\tpush(...items: any[]): number {\n\t\tconst oldLength = this.length\n\t\ttry {\n\t\t\treturn this.push(...items)\n\t\t} finally {\n\t\t\ttouched(\n\t\t\t\tthis,\n\t\t\t\t{ type: 'bunch', method: 'push' },\n\t\t\t\trange(oldLength, oldLength + items.length - 1, { length: true })\n\t\t\t)\n\t\t}\n\t}\n\n\tpop(): any {\n\t\tif (this.length === 0) return undefined\n\t\ttry {\n\t\t\treturn reactive(this.pop())\n\t\t} finally {\n\t\t\ttouched(this, { type: 'bunch', method: 'pop' }, index(this.length))\n\t\t}\n\t}\n\n\tshift(): any {\n\t\tif (this.length === 0) return undefined\n\t\ttry {\n\t\t\treturn reactive(this.shift())\n\t\t} finally {\n\t\t\ttouched(this, { type: 'bunch', method: 'shift' }, range(0, this.length + 1, { length: true }))\n\t\t}\n\t}\n\n\tunshift(...items: any[]): number {\n\t\ttry {\n\t\t\treturn this.unshift(...items)\n\t\t} finally {\n\t\t\ttouched(\n\t\t\t\tthis,\n\t\t\t\t{ type: 'bunch', method: 'unshift' },\n\t\t\t\trange(0, this.length - items.length, { length: true })\n\t\t\t)\n\t\t}\n\t}\n\n\tsplice(start: number, deleteCount?: number, ...items: any[]): any[] {\n\t\tconst oldLength = this.length\n\n\t\t// Normalize start index\n\t\tlet actualStart = start\n\t\tif (actualStart < 0) actualStart = Math.max(oldLength + actualStart, 0)\n\t\telse actualStart = Math.min(actualStart, oldLength)\n\n\t\t// Normalize deleteCount\n\t\tlet actualDeleteCount = deleteCount\n\t\tif (actualDeleteCount === undefined) {\n\t\t\tactualDeleteCount = oldLength - actualStart\n\t\t} else {\n\t\t\tactualDeleteCount = Math.max(0, Math.min(actualDeleteCount, oldLength - actualStart))\n\t\t}\n\n\t\ttry {\n\t\t\tif (deleteCount === undefined) return reactive(this.splice(start))\n\t\t\treturn reactive(this.splice(start, deleteCount, ...items))\n\t\t} finally {\n\t\t\ttouched(\n\t\t\t\tthis,\n\t\t\t\t{ type: 'bunch', method: 'splice' },\n\t\t\t\tactualDeleteCount === items.length\n\t\t\t\t\t? range(actualStart, actualStart + actualDeleteCount - 1)\n\t\t\t\t\t: range(actualStart, oldLength + Math.max(items.length - actualDeleteCount, 0), {\n\t\t\t\t\t\t\tlength: true,\n\t\t\t\t\t\t})\n\t\t\t)\n\t\t}\n\t}\n\n\treverse(): any[] {\n\t\ttry {\n\t\t\treturn this.reverse()\n\t\t} finally {\n\t\t\ttouched(this, { type: 'bunch', method: 'reverse' }, range(0, this.length - 1))\n\t\t}\n\t}\n\n\tsort(compareFn?: (a: any, b: any) => number): this {\n\t\tcompareFn = compareFn || ((a, b) => a.toString().localeCompare(b.toString()))\n\t\ttry {\n\t\t\treturn this.sort((a, b) => compareFn(reactive(a), reactive(b))) as any\n\t\t} finally {\n\t\t\ttouched(this, { type: 'bunch', method: 'sort' }, range(0, this.length - 1))\n\t\t}\n\t}\n\n\tfill(value: any, start?: number, end?: number): this {\n\t\tconst len = this.length\n\t\tlet k = start === undefined ? 0 : start\n\t\tif (k < 0) k = Math.max(len + k, 0)\n\t\telse k = Math.min(k, len)\n\n\t\tlet final = end === undefined ? len : end\n\t\tif (final < 0) final = Math.max(len + final, 0)\n\t\telse final = Math.min(final, len)\n\n\t\ttry {\n\t\t\tif (start === undefined) return this.fill(value) as any\n\t\t\tif (end === undefined) return this.fill(value, start) as any\n\t\t\treturn this.fill(value, start, end) as any\n\t\t} finally {\n\t\t\tif (final > k) {\n\t\t\t\ttouched(this, { type: 'bunch', method: 'fill' }, range(k, final - 1))\n\t\t\t}\n\t\t}\n\t}\n\n\tcopyWithin(target: number, start: number, end?: number): this {\n\t\ttry {\n\t\t\tif (end === undefined) return this.copyWithin(target, start) as any\n\t\t\treturn this.copyWithin(target, start, end) as any\n\t\t} finally {\n\t\t\tconst len = this.length\n\n\t\t\tlet to = target\n\t\t\tif (to < 0) to = Math.max(len + to, 0)\n\t\t\telse if (to >= len) to = len\n\n\t\t\tlet from = start\n\t\t\tif (from < 0) from = Math.max(len + from, 0)\n\t\t\telse if (from >= len) from = len\n\n\t\t\tlet final = end === undefined ? len : end\n\t\t\tif (final < 0) final = Math.max(len + final, 0)\n\t\t\telse if (final >= len) final = len\n\n\t\t\tconst count = Math.min(final - from, len - to)\n\n\t\t\tif (count > 0) {\n\t\t\t\ttouched(this, { type: 'bunch', method: 'copyWithin' }, range(to, to + count - 1))\n\t\t\t}\n\t\t}\n\t}\n}\n","import { contentRef } from '../utils'\nimport { touched, touched1 } from './change'\nimport { notifyPropertyChange } from './deep-touch'\nimport { makeReactiveEntriesIterator, makeReactiveIterator } from './non-reactive'\nimport { reactive } from './proxy'\nimport { dependant } from './tracking'\n\n/**\n * Reactive wrapper around JavaScript's WeakMap class\n * Only tracks individual key operations, no size tracking (WeakMap limitation)\n */\nexport abstract class ReactiveWeakMap<K extends object, V> extends WeakMap<K, V> {\n\t// Implement WeakMap interface methods with reactivity\n\tdelete(key: K): boolean {\n\t\tconst hadKey = this.has(key)\n\t\tconst result = this.delete(key)\n\n\t\tif (hadKey) touched1(contentRef(this), { type: 'del', prop: key }, key)\n\n\t\treturn result\n\t}\n\n\tget(key: K): V | undefined {\n\t\tdependant(contentRef(this), key)\n\t\treturn reactive(this.get(key))\n\t}\n\n\thas(key: K): boolean {\n\t\tdependant(contentRef(this), key)\n\t\treturn this.has(key)\n\t}\n\n\tset(key: K, value: V): this {\n\t\tconst hadKey = this.has(key)\n\t\tconst oldValue = this.get(key)\n\t\tconst reactiveValue = reactive(value)\n\t\tthis.set(key, reactiveValue)\n\n\t\tif (!hadKey || oldValue !== reactiveValue) {\n\t\t\tnotifyPropertyChange(contentRef(this), key, oldValue, reactiveValue, hadKey)\n\t\t}\n\n\t\treturn this\n\t}\n}\n\n/**\n * Reactive wrapper around JavaScript's Map class\n * Tracks size changes, individual key operations, and collection-wide operations\n */\nexport abstract class ReactiveMap<K, V> extends Map<K, V> {\n\t// Implement Map interface methods with reactivity\n\tget size(): number {\n\t\tdependant(this, 'size') // The ReactiveMap instance still goes through proxy\n\t\treturn this.size\n\t}\n\n\tclear(): void {\n\t\tconst hadEntries = this.size > 0\n\t\tthis.clear()\n\n\t\tif (hadEntries) {\n\t\t\tconst evolution = { type: 'bunch', method: 'clear' } as const\n\t\t\t// Clear triggers all effects since all keys are affected\n\t\t\ttouched1(this, evolution, 'size')\n\t\t\ttouched(contentRef(this), evolution)\n\t\t}\n\t}\n\n\tentries(): Generator<[K, V]> {\n\t\tdependant(contentRef(this))\n\t\treturn makeReactiveEntriesIterator(this.entries())\n\t}\n\n\tforEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void {\n\t\tdependant(contentRef(this))\n\t\tthis.forEach(callbackfn, thisArg)\n\t}\n\n\tkeys(): MapIterator<K> {\n\t\tdependant(contentRef(this))\n\t\treturn this.keys()\n\t}\n\n\tvalues(): Generator<V> {\n\t\tdependant(contentRef(this))\n\t\treturn makeReactiveIterator(this.values())\n\t}\n\n\t[Symbol.iterator](): MapIterator<[K, V]> {\n\t\tdependant(contentRef(this))\n\t\tconst it: MapIterator<[K, V]> = Map.prototype[Symbol.iterator].call(this)\n\t\tconst nativeNext = it.next.bind(it)\n\t\tit.next = () => {\n\t\t\tconst result = nativeNext()\n\t\t\tif (result.done) return result\n\t\t\tconst [key, value] = result.value\n\t\t\treturn { value: [reactive(key), reactive(value)], done: false }\n\t\t}\n\t\treturn it\n\t}\n\n\t// Implement Map methods with reactivity\n\tdelete(key: K): boolean {\n\t\tconst hadKey = this.has(key)\n\t\tconst result = this.delete(key)\n\n\t\tif (hadKey) {\n\t\t\tconst evolution = { type: 'del', prop: key } as const\n\t\t\ttouched1(contentRef(this), evolution, key)\n\t\t\ttouched1(this, evolution, 'size')\n\t\t}\n\n\t\treturn result\n\t}\n\n\tget(key: K): V | undefined {\n\t\tdependant(contentRef(this), key)\n\t\treturn reactive(this.get(key))\n\t}\n\n\thas(key: K): boolean {\n\t\tdependant(contentRef(this), key)\n\t\treturn this.has(key)\n\t}\n\n\tset(key: K, value: V): this {\n\t\tconst hadKey = this.has(key)\n\t\tconst oldValue = this.get(key)\n\t\tconst reactiveValue = reactive(value)\n\t\tthis.set(key, reactiveValue)\n\n\t\tif (!hadKey || oldValue !== reactiveValue) {\n\t\t\tnotifyPropertyChange(contentRef(this), key, oldValue, reactiveValue, hadKey)\n\t\t\t// Also notify size change for Map (WeakMap doesn't track size)\n\t\t\tconst evolution = { type: hadKey ? 'set' : 'add', prop: key } as const\n\t\t\ttouched1(this, evolution, 'size')\n\t\t}\n\n\t\treturn this\n\t}\n}\n","import { contentRef } from '../utils'\nimport { touched, touched1 } from './change'\nimport { makeReactiveEntriesIterator, makeReactiveIterator } from './non-reactive'\nimport { reactive } from './proxy'\nimport { dependant } from './tracking'\n\n/**\n * Reactive wrapper around JavaScript's WeakSet class\n * Only tracks individual value operations, no size tracking (WeakSet limitation)\n */\nexport abstract class ReactiveWeakSet<T extends object> extends WeakSet<T> {\n\tadd(value: T): this {\n\t\tconst had = this.has(value)\n\t\tthis.add(value)\n\t\tif (!had) {\n\t\t\t// touch the specific value and the collection view\n\t\t\ttouched1(contentRef(this), { type: 'add', prop: value }, value)\n\t\t\t// no size/allProps for WeakSet\n\t\t}\n\t\treturn this\n\t}\n\n\tdelete(value: T): boolean {\n\t\tconst had = this.has(value)\n\t\tconst res = this.delete(value)\n\t\tif (had) touched1(contentRef(this), { type: 'del', prop: value }, value)\n\t\treturn res\n\t}\n\n\thas(value: T): boolean {\n\t\tdependant(contentRef(this), value)\n\t\treturn this.has(value)\n\t}\n}\n\n/**\n * Reactive wrapper around JavaScript's Set class\n * Tracks size changes, individual value operations, and collection-wide operations\n */\nexport abstract class ReactiveSet<T> extends Set<T> {\n\tget size(): number {\n\t\t// size depends on the wrapper instance, like Map counterpart\n\t\tdependant(this, 'size')\n\t\treturn this.size\n\t}\n\n\tadd(value: T): this {\n\t\tconst had = this.has(value)\n\t\tconst reactiveValue = reactive(value)\n\t\tthis.add(reactiveValue)\n\t\tif (!had) {\n\t\t\tconst evolution = { type: 'add', prop: reactiveValue } as const\n\t\t\t// touch for value-specific and aggregate dependencies\n\t\t\ttouched1(contentRef(this), evolution, reactiveValue)\n\t\t\ttouched1(this, evolution, 'size')\n\t\t}\n\t\treturn this\n\t}\n\n\tclear(): void {\n\t\tconst hadEntries = this.size > 0\n\t\tthis.clear()\n\t\tif (hadEntries) {\n\t\t\tconst evolution = { type: 'bunch', method: 'clear' } as const\n\t\t\ttouched1(this, evolution, 'size')\n\t\t\ttouched(contentRef(this), evolution)\n\t\t}\n\t}\n\n\tdelete(value: T): boolean {\n\t\tconst had = this.has(value)\n\t\tconst res = this.delete(value)\n\t\tif (had) {\n\t\t\tconst evolution = { type: 'del', prop: value } as const\n\t\t\ttouched1(contentRef(this), evolution, value)\n\t\t\ttouched1(this, evolution, 'size')\n\t\t}\n\t\treturn res\n\t}\n\n\thas(value: T): boolean {\n\t\tdependant(contentRef(this), value)\n\t\treturn this.has(value)\n\t}\n\n\tentries(): Generator<[T, T]> {\n\t\tdependant(contentRef(this))\n\t\treturn makeReactiveEntriesIterator(this.entries())\n\t}\n\n\tforEach(callbackfn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void {\n\t\tdependant(contentRef(this))\n\t\tthis.forEach(callbackfn, thisArg)\n\t}\n\n\tkeys(): Generator<T> {\n\t\tdependant(contentRef(this))\n\t\treturn makeReactiveIterator(this.keys())\n\t}\n\n\tvalues(): Generator<T> {\n\t\tdependant(contentRef(this))\n\t\treturn makeReactiveIterator(this.values())\n\t}\n\n\t[Symbol.iterator](): SetIterator<T> {\n\t\tdependant(contentRef(this))\n\t\tconst it: SetIterator<T> = Set.prototype[Symbol.iterator].call(this)\n\t\tconst nativeNext = it.next.bind(it)\n\t\tit.next = () => {\n\t\t\tconst result = nativeNext()\n\t\t\tif (result.done) return result\n\t\t\treturn { value: reactive(result.value), done: false }\n\t\t}\n\t\treturn it\n\t}\n}\n","export { attend, lift, type ScanResult, scan } from './buffer'\nexport { getState, touched, touched1 } from './change'\nexport { deepWatch } from './deep-watch'\nexport { cleanedBy, derived, effectAggregator, getActiveEffect } from './effect-context'\nexport {\n\taddBatchCleanup,\n\tatomic,\n\tbiDi,\n\tdefer,\n\teffect,\n\tgetActivationLog,\n\tonEffectThrow,\n\tonEffectTrigger,\n\treset,\n\troot,\n\tuntracked,\n} from './effects'\nexport { type Memoizable, memoize } from './memoize'\nexport { immutables, isNonReactive, registerNativeReactivity } from './non-reactive'\nexport { getActiveProjection, project } from './project'\nexport { isReactive, ReactiveBase, reactive, unwrap } from './proxy'\nexport { organize, organized } from './record'\nexport { Register, register } from './register'\nexport {\n\tcleanup,\n\ttype EffectAccess as DependencyAccess,\n\ttype EffectCleanup,\n\ttype EffectOptions,\n\ttype EffectTrigger,\n\ttype Evolution,\n\toptions as reactiveOptions,\n\tReactiveError,\n\tReactiveErrorCode,\n\ttype ScopedCallback,\n} from './types'\nexport { unreactive, watch } from './watch'\nexport { describe } from './describe'\n\nimport { ReactiveArray } from './array'\nimport {\n\tdeepWatchers,\n\teffectToDeepWatchedObjects,\n\tobjectParents,\n\tobjectsWithDeepWatchers,\n} from './deep-watch'\nimport { ReactiveMap, ReactiveWeakMap } from './map'\nimport { nonReactiveObjects } from './non-reactive-state'\nimport { metaProtos, objectToProxy, proxyToObject } from './proxy'\nimport { effectToReactiveObjects, watchers } from './registry'\nimport { ReactiveSet, ReactiveWeakSet } from './set'\n\n// Register native collection types to use specialized reactive wrappers\nmetaProtos.set(Array, ReactiveArray.prototype)\nmetaProtos.set(Set, ReactiveSet.prototype)\nmetaProtos.set(WeakSet, ReactiveWeakSet.prototype)\nmetaProtos.set(Map, ReactiveMap.prototype)\nmetaProtos.set(WeakMap, ReactiveWeakMap.prototype)\n\n/**\n * Object containing internal reactive system state for debugging and profiling\n */\nexport const profileInfo: any = {\n\tobjectToProxy,\n\tproxyToObject,\n\teffectToReactiveObjects,\n\twatchers,\n\tobjectParents,\n\tobjectsWithDeepWatchers,\n\tdeepWatchers,\n\teffectToDeepWatchedObjects,\n\tnonReactiveObjects,\n}\n","import { decorator, type GenericClassDecorator } from './decorator'\nimport { flavored } from './flavored'\n\n// In order to avoid async re-entrance, we could use zone.js or something like that.\nconst syncCalculating: { object: object; prop: PropertyKey }[] = []\n/**\n * Decorator that caches the result of a getter method and only recomputes when dependencies change\n * Prevents circular dependencies and provides automatic cache invalidation\n */\nexport const cached = decorator({\n\tgetter(original, _target, propertyKey) {\n\t\treturn function (this: any) {\n\t\t\tconst alreadyCalculating = syncCalculating.findIndex(\n\t\t\t\t(c) => c.object === this && c.prop === propertyKey\n\t\t\t)\n\t\t\tif (alreadyCalculating > -1)\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Circular dependency detected: ${syncCalculating\n\t\t\t\t\t\t.slice(alreadyCalculating)\n\t\t\t\t\t\t.map((c) => `${c.object.constructor.name}.${String(c.prop)}`)\n\t\t\t\t\t\t.join(' -> ')} -> again`\n\t\t\t\t)\n\t\t\tsyncCalculating.push({ object: this, prop: propertyKey })\n\t\t\ttry {\n\t\t\t\tconst rv = original.call(this)\n\t\t\t\tcache(this, propertyKey, rv)\n\t\t\t\treturn rv\n\t\t\t} finally {\n\t\t\t\tsyncCalculating.pop()\n\t\t\t}\n\t\t}\n\t},\n})\n\n/**\n * Checks if a property is cached (has a cached value)\n * @param object - The object to check\n * @param propertyKey - The property key to check\n * @returns True if the property has a cached value\n */\nexport function isCached(object: Object, propertyKey: PropertyKey) {\n\treturn !!Object.getOwnPropertyDescriptor(object, propertyKey)\n}\n\n/**\n * Caches a value for a property on an object\n * @param object - The object to cache the value on\n * @param propertyKey - The property key to cache\n * @param value - The value to cache\n */\nexport function cache(object: Object, propertyKey: PropertyKey, value: any) {\n\tObject.defineProperty(object, propertyKey, { value })\n}\n\n/**\n * Creates a decorator that modifies property descriptors for specified properties\n * @param descriptor - The descriptor properties to apply\n * @returns A class decorator that applies the descriptor to specified properties\n */\nexport const descriptor = flavored(\n\tfunction descriptor(descriptor: {\n\t\tenumerable?: boolean\n\t\tconfigurable?: boolean // Not modifiable once the property has been defined\n\t\twritable?: boolean\n\t}) {\n\t\treturn <T>(...properties: (keyof T)[]): GenericClassDecorator<T> =>\n\t\t\t(Base) => {\n\t\t\t\treturn class extends Base {\n\t\t\t\t\tconstructor(...args: any[]) {\n\t\t\t\t\t\tsuper(...args)\n\t\t\t\t\t\tfor (const key of properties) {\n\t\t\t\t\t\t\tconst existing = Object.getOwnPropertyDescriptor(this, key)\n\t\t\t\t\t\t\tObject.defineProperty(this, key, Object.assign(existing || {}, descriptor))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t},\n\t{\n\t\t/**\n\t\t * enumerable: true\n\t\t */\n\t\tget enumerable() {\n\t\t\treturn descriptor({ enumerable: true })\n\t\t},\n\t\t/**\n\t\t * enumerable: false\n\t\t */\n\t\tget hidden() {\n\t\t\treturn descriptor({ enumerable: false })\n\t\t},\n\t\t/**\n\t\t * configurable: true\n\t\t */\n\t\tget configurable() {\n\t\t\treturn descriptor({ configurable: true })\n\t\t},\n\t\t/**\n\t\t * configurable: false\n\t\t */\n\t\tget frozen() {\n\t\t\treturn descriptor({ configurable: false })\n\t\t},\n\t\t/**\n\t\t * writable: true\n\t\t */\n\t\tget writable() {\n\t\t\treturn descriptor({ writable: true })\n\t\t},\n\t\t/**\n\t\t * writable: false\n\t\t */\n\t\tget readonly() {\n\t\t\treturn descriptor({ writable: false })\n\t\t},\n\t}\n)\n\n/**\n * Decorator that marks methods, properties, or classes as deprecated\n * Provides warning messages when deprecated items are used\n */\nexport const deprecated = Object.assign(\n\tdecorator({\n\t\tmethod(original, _target, propertyKey) {\n\t\t\treturn function (this: any, ...args: any[]) {\n\t\t\t\tdeprecated.warn(this, propertyKey)\n\t\t\t\treturn original.apply(this, args)\n\t\t\t}\n\t\t},\n\t\tgetter(original, _target, propertyKey) {\n\t\t\treturn function (this: any) {\n\t\t\t\tdeprecated.warn(this, propertyKey)\n\t\t\t\treturn original.call(this)\n\t\t\t}\n\t\t},\n\t\tsetter(original, _target, propertyKey) {\n\t\t\treturn function (this: any, value: any) {\n\t\t\t\tdeprecated.warn(this, propertyKey)\n\t\t\t\treturn original.call(this, value)\n\t\t\t}\n\t\t},\n\t\tclass(original) {\n\t\t\treturn class extends original {\n\t\t\t\tconstructor(...args: any[]) {\n\t\t\t\t\tsuper(...args)\n\t\t\t\t\tdeprecated.warn(this, 'constructor')\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdefault(message: string) {\n\t\t\treturn decorator({\n\t\t\t\tmethod(original, _target, propertyKey) {\n\t\t\t\t\treturn function (this: any, ...args: any[]) {\n\t\t\t\t\t\tdeprecated.warn(this, propertyKey, message)\n\t\t\t\t\t\treturn original.apply(this, args)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetter(original, _target, propertyKey) {\n\t\t\t\t\treturn function (this: any) {\n\t\t\t\t\t\tdeprecated.warn(this, propertyKey, message)\n\t\t\t\t\t\treturn original.call(this)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsetter(original, _target, propertyKey) {\n\t\t\t\t\treturn function (this: any, value: any) {\n\t\t\t\t\t\tdeprecated.warn(this, propertyKey, message)\n\t\t\t\t\t\treturn original.call(this, value)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclass(original) {\n\t\t\t\t\treturn class extends original {\n\t\t\t\t\t\tconstructor(...args: any[]) {\n\t\t\t\t\t\t\tsuper(...args)\n\t\t\t\t\t\t\tdeprecated.warn(this, 'constructor', message)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}),\n\t{\n\t\twarn: (target: any, propertyKey: PropertyKey, message?: string) => {\n\t\t\t// biome-ignore lint/suspicious/noConsole: To be overridden\n\t\t\tconsole.warn(\n\t\t\t\t`${target.constructor.name}.${String(propertyKey)} is deprecated${message ? `: ${message}` : ''}`\n\t\t\t)\n\t\t},\n\t}\n)\n\n/**\n * Creates a debounced method decorator that delays execution until after the delay period has passed\n * @param delay - The delay in milliseconds\n * @returns A method decorator that debounces method calls\n */\nexport function debounce(delay: number) {\n\treturn decorator({\n\t\tmethod(original, _target, _propertyKey) {\n\t\t\tlet timeoutId: ReturnType<typeof setTimeout> | null = null\n\n\t\t\treturn function (this: any, ...args: any[]) {\n\t\t\t\t// Clear existing timeout\n\t\t\t\tif (timeoutId) {\n\t\t\t\t\tclearTimeout(timeoutId)\n\t\t\t\t}\n\n\t\t\t\t// Set new timeout\n\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\toriginal.apply(this, args)\n\t\t\t\t\ttimeoutId = null\n\t\t\t\t}, delay)\n\t\t\t}\n\t\t},\n\t})\n}\n\n/**\n * Creates a throttled method decorator that limits execution to once per delay period\n * @param delay - The delay in milliseconds\n * @returns A method decorator that throttles method calls\n */\nexport function throttle(delay: number) {\n\treturn decorator({\n\t\tmethod(original, _target, _propertyKey) {\n\t\t\tlet lastCallTime = 0\n\t\t\tlet timeoutId: ReturnType<typeof setTimeout> | null = null\n\n\t\t\treturn function (this: any, ...args: any[]) {\n\t\t\t\tconst now = Date.now()\n\n\t\t\t\t// If enough time has passed since last call, execute immediately\n\t\t\t\tif (now - lastCallTime >= delay) {\n\t\t\t\t\t// Clear any pending timeout since we're executing now\n\t\t\t\t\tif (timeoutId) {\n\t\t\t\t\t\tclearTimeout(timeoutId)\n\t\t\t\t\t\ttimeoutId = null\n\t\t\t\t\t}\n\t\t\t\t\tlastCallTime = now\n\t\t\t\t\treturn original.apply(this, args)\n\t\t\t\t}\n\n\t\t\t\t// Otherwise, schedule execution for when the delay period ends\n\t\t\t\tif (!timeoutId) {\n\t\t\t\t\tconst remainingTime = delay - (now - lastCallTime)\n\t\t\t\t\tconst scheduledArgs = [...args] // Capture args at scheduling time\n\t\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\t\tlastCallTime = Date.now()\n\t\t\t\t\t\toriginal.apply(this, scheduledArgs)\n\t\t\t\t\t\ttimeoutId = null\n\t\t\t\t\t}, remainingTime)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t})\n}\n","export * from './async'\nexport * from './decorator'\nexport * from './destroyable'\nexport * from './eventful'\nexport * from './flavored'\nexport * from './indexable'\nexport * from './iterableWeak'\nexport * from './mixins'\nexport * from './promiseChain'\nexport * from './reactive'\nexport * from './std-decorators'\nexport * from './utils'\nexport * from './zone'\n\nimport pkg from '../package.json'\n\nconst { version } = pkg\n\n// Singleton verification\nconst GLOBAL_MUTTS_KEY = '__MUTTS_INSTANCE__'\nconst globalScope = (\n\ttypeof globalThis !== 'undefined'\n\t\t? globalThis\n\t\t: typeof window !== 'undefined'\n\t\t\t? window\n\t\t\t: typeof global !== 'undefined'\n\t\t\t\t? global\n\t\t\t\t: false\n) as any\nif (globalScope) {\n\t// Detect the source of this instance safely across different environments\n\tlet source = 'mutts/index'\n\tconst viteEval = eval\n\ttry {\n\t\tif (typeof __filename !== 'undefined') source = __filename\n\t\telse {\n\t\t\t// Using eval to avoid SyntaxError in CJS environments where import.meta is not allowed\n\t\t\tconst meta = viteEval('import.meta')\n\t\t\tif (meta && meta.url) source = meta.url\n\t\t}\n\t} catch (e) {\n\t\t// Fallback for environments where neither is available or accessible\n\t}\n\n\tconst currentSourceInfo = {\n\t\tversion,\n\t\tsource,\n\t\ttimestamp: Date.now(),\n\t}\n\n\tif (globalScope[GLOBAL_MUTTS_KEY]) {\n\t\tconst existing = globalScope[GLOBAL_MUTTS_KEY]\n\t\tthrow new Error(\n\t\t\t`[Mutts] Multiple instances detected!\\n` +\n\t\t\t\t`Existing instance: ${JSON.stringify(existing, null, 2)}\\n` +\n\t\t\t\t`New instance: ${JSON.stringify(currentSourceInfo, null, 2)}\\n` +\n\t\t\t\t`This usually happens when 'mutts' is both installed as a dependency and bundled, ` +\n\t\t\t\t`or when different versions are loaded. ` +\n\t\t\t\t`Please check your build configuration (aliases, externals) to ensure a single source of truth.`\n\t\t)\n\t}\n\n\tglobalScope[GLOBAL_MUTTS_KEY] = currentSourceInfo\n}\n"],"names":["decorator","cache","getRoot","markWithRoot","dependant","options","untracked","deepCompare","optionCall","root","effect","touched1","renamed","rootFunction","reactive","__runInitializers","__esDecorate","FoolProof","cleanedBy","objectsWithDeepWatchers","effectToDeepWatchedObjects","isNonReactive","unwrap","deepWatchers","stopped","nonReactiveMark","nonReactiveObjects","unreactiveProperties","nonReactiveClass","__classPrivateFieldGet","__classPrivateFieldSet","getActiveEffect","projectionInfo","named","setEffectName","touched","contentRef","notifyPropertyChange","metaProtos","objectToProxy","proxyToObject","effectToReactiveObjects","watchers","objectParents","flavored"],"mappings":"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"}
|