@signaldb/oby 2.0.0-beta.2 → 2.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +23 -1076
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/package.json +4 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../node_modules/oby/dist/symbols.js","../../../../node_modules/oby/dist/utils.js","../../../../node_modules/oby/dist/objects/callable.js","../../../../node_modules/oby/dist/constants.js","../../../../node_modules/oby/dist/lazy.js","../../../../node_modules/oby/dist/objects/owner.js","../../../../node_modules/oby/dist/objects/superroot.js","../../../../node_modules/oby/dist/context.js","../../../../node_modules/oby/dist/methods/batch.js","../../../../node_modules/oby/dist/methods/is_observable_boolean.js","../../../../node_modules/oby/dist/methods/is_observable_frozen.js","../../../../node_modules/oby/dist/methods/is_untracked.js","../../../../node_modules/oby/dist/objects/scheduler.sync.js","../../../../node_modules/oby/dist/objects/observable.js","../../../../node_modules/oby/dist/objects/observables.js","../../../../node_modules/oby/dist/objects/observer.js","../../../../node_modules/oby/dist/objects/memo.js","../../../../node_modules/oby/dist/methods/memo.js","../../../../node_modules/oby/dist/methods/boolean.js","../../../../node_modules/oby/dist/methods/cleanup.js","../../../../node_modules/oby/dist/objects/context.js","../../../../node_modules/oby/dist/methods/context.js","../../../../node_modules/oby/dist/methods/disposed.js","../../../../node_modules/oby/dist/objects/scheduler.async.js","../../../../node_modules/oby/dist/objects/effect.js","../../../../node_modules/oby/dist/methods/effect.js","../../../../node_modules/oby/dist/methods/resolve.js","../../../../node_modules/oby/dist/objects/root.js","../../../../node_modules/oby/dist/methods/for.cache.keyed.js","../../../../node_modules/oby/dist/methods/is_observable.js","../../../../node_modules/oby/dist/methods/get.js","../../../../node_modules/oby/dist/objects/suspense.js","../../../../node_modules/oby/dist/methods/suspense.js","../../../../node_modules/oby/dist/methods/for.cache.unkeyed.js","../../../../node_modules/oby/dist/methods/is_store.js","../../../../node_modules/oby/dist/methods/untrack.js","../../../../node_modules/oby/dist/methods/for.js","../../../../node_modules/oby/dist/methods/warmup.js","../../../../node_modules/oby/dist/methods/switch.js","../../../../node_modules/oby/dist/methods/ternary.js","../../../../node_modules/oby/dist/methods/if.js","../../../../node_modules/oby/dist/methods/is_batching.js","../../../../node_modules/oby/dist/methods/observable.js","../../../../node_modules/oby/dist/methods/owner.js","../../../../node_modules/oby/dist/methods/is_observable_writable.js","../../../../node_modules/oby/dist/methods/target.js","../../../../node_modules/oby/dist/methods/readonly.js","../../../../node_modules/oby/dist/methods/root.js","../../../../node_modules/oby/dist/methods/selector.js","../../../../node_modules/oby/dist/methods/store.js","../../../../node_modules/oby/dist/methods/suspended.js","../../../../node_modules/oby/dist/methods/tick.js","../../../../node_modules/oby/dist/methods/try_catch.js","../../../../node_modules/oby/dist/methods/untracked.js","../../../../node_modules/oby/dist/methods/with.js","../../../../node_modules/oby/dist/methods/$.js","../src/index.ts"],"sourcesContent":["/* MAIN */\nconst SYMBOL_CACHED = Symbol('Cached');\nconst SYMBOL_OBSERVABLE = Symbol('Observable');\nconst SYMBOL_OBSERVABLE_BOOLEAN = Symbol('Observable.Boolean');\nconst SYMBOL_OBSERVABLE_FROZEN = Symbol('Observable.Frozen');\nconst SYMBOL_OBSERVABLE_READABLE = Symbol('Observable.Readable');\nconst SYMBOL_OBSERVABLE_WRITABLE = Symbol('Observable.Writable');\nconst SYMBOL_STORE = Symbol('Store');\nconst SYMBOL_STORE_KEYS = Symbol('Store.Keys');\nconst SYMBOL_STORE_OBSERVABLE = Symbol('Store.Observable');\nconst SYMBOL_STORE_TARGET = Symbol('Store.Target');\nconst SYMBOL_STORE_VALUES = Symbol('Store.Values');\nconst SYMBOL_STORE_UNTRACKED = Symbol('Store.Untracked');\nconst SYMBOL_SUSPENSE = Symbol('Suspense');\nconst SYMBOL_UNCACHED = Symbol('Uncached');\nconst SYMBOL_UNTRACKED = Symbol('Untracked');\nconst SYMBOL_UNTRACKED_UNWRAPPED = Symbol('Untracked.Unwrapped');\n/* EXPORT */\nexport { SYMBOL_CACHED, SYMBOL_OBSERVABLE, SYMBOL_OBSERVABLE_BOOLEAN, SYMBOL_OBSERVABLE_FROZEN, SYMBOL_OBSERVABLE_READABLE, SYMBOL_OBSERVABLE_WRITABLE, SYMBOL_STORE, SYMBOL_STORE_KEYS, SYMBOL_STORE_OBSERVABLE, SYMBOL_STORE_TARGET, SYMBOL_STORE_VALUES, SYMBOL_STORE_UNTRACKED, SYMBOL_SUSPENSE, SYMBOL_UNCACHED, SYMBOL_UNTRACKED, SYMBOL_UNTRACKED_UNWRAPPED };\n","/* MAIN */\nconst castArray = (value) => {\n return isArray(value) ? value : [value];\n};\nconst castError = (error) => {\n if (error instanceof Error)\n return error;\n if (typeof error === 'string')\n return new Error(error);\n return new Error('Unknown error');\n};\nconst { is } = Object;\nconst { isArray } = Array;\nconst isEqual = (a, b) => {\n if (a.length !== b.length)\n return false;\n for (let i = 0, l = a.length; i < l; i++) {\n const valueA = a[i];\n const valueB = b[i];\n if (!is(valueA, valueB))\n return false;\n }\n return true;\n};\nconst isFunction = (value) => {\n return typeof value === 'function';\n};\nconst isObject = (value) => {\n return (value !== null) && (typeof value === 'object');\n};\nconst isSymbol = (value) => {\n return typeof value === 'symbol';\n};\nconst noop = () => {\n return;\n};\nconst nope = () => {\n return false;\n};\n/* EXPORT */\nexport { castArray, castError, is, isArray, isEqual, isFunction, isObject, isSymbol, noop, nope };\n","/* IMPORT */\nimport { SYMBOL_OBSERVABLE, SYMBOL_OBSERVABLE_FROZEN, SYMBOL_OBSERVABLE_READABLE, SYMBOL_OBSERVABLE_WRITABLE } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN - FUNCTIONS */\nfunction frozenFunction() {\n if (arguments.length) {\n throw new Error('A readonly Observable can not be updated');\n }\n else {\n return this;\n }\n}\nfunction readableFunction() {\n if (arguments.length) {\n throw new Error('A readonly Observable can not be updated');\n }\n else {\n return this.get();\n }\n}\nfunction writableFunction(fn) {\n if (arguments.length) {\n if (isFunction(fn)) {\n return this.C(fn);\n }\n else {\n return this.set(fn); //TSC\n }\n }\n else {\n return this.get();\n }\n}\n/* MAIN - GENERATORS */\nconst frozen = (value) => {\n const fn = frozenFunction.bind(value); //TSC\n fn[SYMBOL_OBSERVABLE] = true;\n fn[SYMBOL_OBSERVABLE_FROZEN] = true;\n return fn;\n};\nconst readable = (value) => {\n //TODO: Make a frozen one instead if disposed\n const fn = readableFunction.bind(value); //TSC\n fn[SYMBOL_OBSERVABLE] = true;\n fn[SYMBOL_OBSERVABLE_READABLE] = value;\n return fn;\n};\nconst writable = (value) => {\n const fn = writableFunction.bind(value); //TSC\n fn[SYMBOL_OBSERVABLE] = true;\n fn[SYMBOL_OBSERVABLE_WRITABLE] = value;\n return fn;\n};\n/* EXPORT */\nexport { frozen, readable, writable };\n","/* IMPORT */\nimport { frozen } from './objects/callable.js';\n/* MAIN */\nconst DIRTY_NO = 0; // The observer is not dirty, for sure\nconst DIRTY_MAYBE_NO = 1; // The observer is not dirty, possibly\nconst DIRTY_MAYBE_YES = 2; // The observer is dirty, possibly\nconst DIRTY_YES = 3; // The observer is dirty, for sure\nconst OBSERVABLE_FALSE = frozen(false);\nconst OBSERVABLE_TRUE = frozen(true);\nconst UNAVAILABLE = new Proxy({}, new Proxy({}, { get() { throw new Error('Unavailable value'); } })); //TSC\nconst UNINITIALIZED = function () { }; //TSC\n/* EXPORT */\nexport { DIRTY_NO, DIRTY_MAYBE_NO, DIRTY_MAYBE_YES, DIRTY_YES };\nexport { OBSERVABLE_FALSE, OBSERVABLE_TRUE };\nexport { UNAVAILABLE, UNINITIALIZED };\n","/* IMPORT */\n/* MAIN */\nconst lazyArrayEach = (arr, fn) => {\n if (arr instanceof Array) {\n for (let i = 0, l = arr.length; i < l; i++) {\n fn(arr[i]);\n }\n }\n else if (arr) {\n fn(arr);\n }\n};\nconst lazyArrayEachRight = (arr, fn) => {\n if (arr instanceof Array) {\n for (let i = arr.length - 1; i >= 0; i--) {\n fn(arr[i]);\n }\n }\n else if (arr) {\n fn(arr);\n }\n};\nconst lazyArrayPush = (obj, key, value) => {\n const arr = obj[key];\n if (arr instanceof Array) {\n arr.push(value);\n }\n else if (arr) {\n obj[key] = [arr, value];\n }\n else {\n obj[key] = value;\n }\n};\nconst lazySetAdd = (obj, key, value) => {\n const set = obj[key];\n if (set instanceof Set) {\n set.add(value);\n }\n else if (set) {\n if (value !== set) {\n const s = new Set();\n s.add(set);\n s.add(value);\n obj[key] = s;\n }\n }\n else {\n obj[key] = value;\n }\n};\nconst lazySetDelete = (obj, key, value) => {\n const set = obj[key];\n if (set instanceof Set) {\n set.delete(value);\n }\n else if (set === value) {\n obj[key] = undefined;\n }\n};\nconst lazySetEach = (set, fn) => {\n if (set instanceof Set) {\n for (const value of set) {\n fn(value);\n }\n }\n else if (set) {\n fn(set);\n }\n};\n/* EXPORT */\nexport { lazyArrayEach, lazyArrayEachRight, lazyArrayPush };\nexport { lazySetAdd, lazySetDelete, lazySetEach };\n","/* IMPORT */\nimport { UNAVAILABLE } from '../constants.js';\nimport { OBSERVER, OWNER, setObserver, setOwner } from '../context.js';\nimport { lazyArrayEachRight } from '../lazy.js';\nimport { castError } from '../utils.js';\n/* HELPERS */\nconst onCleanup = (cleanup) => cleanup.call(cleanup);\nconst onDispose = (owner) => owner.Q(true);\n/* MAIN */\n//TODO: Throw when registering stuff O disposing, maybe\nclass Owner {\n constructor() {\n /* VARIABLES */\n this.disposed = false;\n this.B = undefined;\n this.S = undefined;\n this.D = undefined;\n this.K = undefined;\n this.T = undefined;\n this.U = undefined;\n }\n /* API */\n catch(error, silent) {\n const { S } = this;\n if (S) {\n S(error); //TODO: This assumes that the error handler won't throw immediately, which we know, but Owner shouldn't know\n return true;\n }\n else {\n if (this.parent?.catch(error, true))\n return true;\n if (silent)\n return false;\n // console.error ( error.stack ); // <-- Log \"error.stack\" to better understand where the error happened\n throw error;\n }\n }\n Q(deep) {\n lazyArrayEachRight(this.D, onDispose);\n lazyArrayEachRight(this.K, onDispose);\n lazyArrayEachRight(this.U, onDispose);\n lazyArrayEachRight(this.B, onCleanup);\n this.B = undefined;\n this.disposed = deep;\n this.S = undefined;\n this.K = undefined;\n this.U = undefined;\n }\n get(symbol) {\n return this.context?.[symbol];\n }\n E(fn, owner, observer) {\n const ownerPrev = OWNER;\n const observerPrev = OBSERVER;\n setOwner(owner);\n setObserver(observer);\n try {\n return fn();\n }\n catch (error) {\n this.catch(castError(error), false); // Bubbling the error up\n return UNAVAILABLE; // Returning a value that is the least likely to cause bugs\n }\n finally {\n setOwner(ownerPrev);\n setObserver(observerPrev);\n }\n }\n}\n/* EXPORT */\nexport default Owner;\n","/* IMPORT */\nimport Owner from './owner.js';\n/* MAIN */\nclass SuperRoot extends Owner {\n constructor() {\n /* VARIABLES */\n super(...arguments);\n this.context = {};\n }\n}\n/* EXPORT */\nexport default SuperRoot;\n","/* IMPORT */\nimport SuperRoot from './objects/superroot.js';\n/* MAIN - READ */\n// This module relies on live-binding of exported variables to avoid a bunch of property accesses\nlet BATCH;\nlet SUPER_OWNER = new SuperRoot();\nlet OBSERVER;\nlet OWNER = SUPER_OWNER;\n/* MAIN - WRITE */\n// Unfortunately live-bounded exports can't just be overridden, so we need these functions\nconst setBatch = (value) => BATCH = value;\nconst setObserver = (value) => OBSERVER = value;\nconst setOwner = (value) => OWNER = value;\n/* EXPORT */\nexport { BATCH, OBSERVER, OWNER, SUPER_OWNER };\nexport { setBatch, setObserver, setOwner };\n","/* IMPORT */\nimport { setBatch } from '../context.js';\nimport { noop } from '../utils.js';\n/* HELPERS */\nlet M = 0;\nlet resolve = noop;\n/* MAIN */\nconst batch = async (fn) => {\n if (!M) {\n setBatch(new Promise(r => resolve = r));\n }\n try {\n M += 1;\n return await fn();\n }\n finally {\n M -= 1;\n if (!M) {\n setBatch(undefined);\n resolve();\n }\n }\n};\n/* MAIN */\nexport default batch;\n","/* IMPORT */\nimport { SYMBOL_OBSERVABLE_BOOLEAN } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN */\nconst isObservableBoolean = (value) => {\n return isFunction(value) && (SYMBOL_OBSERVABLE_BOOLEAN in value);\n};\n/* EXPORT */\nexport default isObservableBoolean;\n","/* IMPORT */\nimport { SYMBOL_OBSERVABLE_FROZEN, SYMBOL_OBSERVABLE_READABLE } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN */\nconst isObservableFrozen = (value) => {\n return isFunction(value) && ((SYMBOL_OBSERVABLE_FROZEN in value) || !!value[SYMBOL_OBSERVABLE_READABLE]?.parent?.disposed);\n};\n/* EXPORT */\nexport default isObservableFrozen;\n","/* IMPORT */\nimport { SYMBOL_UNTRACKED, SYMBOL_UNTRACKED_UNWRAPPED } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN */\nconst isUntracked = (value) => {\n return isFunction(value) && ((SYMBOL_UNTRACKED in value) || (SYMBOL_UNTRACKED_UNWRAPPED in value));\n};\n/* EXPORT */\nexport default isUntracked;\n","/* IMPORT */\n/* MAIN */\n// This ensures that there's only one flushing of the queue happening at the same time\nclass Scheduler {\n constructor() {\n /* VARIABLES */\n this.A1 = [];\n this.M = 0;\n this.A2 = false;\n /* QUEING API */\n this.N = () => {\n if (this.A2)\n return;\n if (this.M)\n return;\n if (!this.A1.length)\n return;\n try {\n this.A2 = true;\n while (true) {\n const queue = this.A1;\n if (!queue.length)\n break;\n this.A1 = [];\n for (let i = 0, l = queue.length; i < l; i++) {\n queue[i].C();\n }\n }\n }\n finally {\n this.A2 = false;\n }\n };\n this.E = (fn) => {\n this.M += 1;\n fn();\n this.M -= 1;\n this.N();\n };\n /* SCHEDULING API */\n this.F = (observer) => {\n this.A1.push(observer);\n };\n }\n}\n/* EXPORT */\nexport default new Scheduler();\n","/* IMPORT */\nimport { DIRTY_MAYBE_NO, DIRTY_YES, UNINITIALIZED } from '../constants.js';\nimport { OBSERVER } from '../context.js';\nimport Scheduler from './scheduler.sync.js';\nimport { is, nope } from '../utils.js';\n/* MAIN */\nclass Observable {\n /* CONSTRUCTOR */\n constructor(value, options, parent) {\n this.K = new Set();\n this.value = value;\n if (parent) {\n this.parent = parent;\n }\n if (options?.equals !== undefined) {\n this.equals = options.equals || nope;\n }\n }\n /* API */\n get() {\n if (!this.parent?.disposed) {\n this.parent?.C();\n OBSERVER?.A.L(this);\n }\n return this.value;\n }\n set(value) {\n const equals = this.equals || is;\n const fresh = (this.value === UNINITIALIZED) || !equals(value, this.value);\n if (!fresh)\n return value;\n this.value = value;\n Scheduler.M += 1;\n this.I(DIRTY_YES);\n Scheduler.M -= 1;\n Scheduler.N();\n return value;\n }\n I(J) {\n for (const observer of this.K) {\n if (observer.J !== DIRTY_MAYBE_NO || observer.A.has(this)) { // Maybe this is a potential future dependency we haven't re-read yet\n if (observer.sync) {\n observer.J = Math.max(observer.J, J);\n Scheduler.F(observer);\n }\n else {\n observer.I(J);\n }\n }\n }\n }\n C(fn) {\n const value = fn(this.value);\n return this.set(value);\n }\n}\n/* EXPORT */\nexport default Observable;\n","/* IMPORT */\n/* MAIN */\n// Dedicated data structures for managing A efficiently\n// We use an array if the list is small enough, as that's faster than a Set, and only switch to Sets O that\nclass ObservablesArray {\n /* CONSTRUCTOR */\n constructor(observer) {\n this.observer = observer;\n this.A = [];\n this.P = 0;\n }\n /* API */\n Q(deep) {\n if (deep) {\n const { observer, A } = this;\n for (let i = 0; i < A.length; i++) {\n A[i].K.delete(observer);\n }\n }\n this.P = 0;\n }\n R() {\n const { observer, A, P } = this;\n const observablesLength = A.length;\n if (P < observablesLength) {\n for (let i = P; i < observablesLength; i++) {\n A[i].K.delete(observer);\n }\n A.length = P;\n }\n }\n empty() {\n return !this.A.length;\n }\n has(observable) {\n const index = this.A.indexOf(observable);\n return index >= 0 && index < this.P;\n }\n L(observable) {\n const { observer, A, P } = this;\n const observablesLength = A.length;\n if (observablesLength > 0) {\n if (A[P] === observable) {\n this.P += 1;\n return;\n }\n const index = A.indexOf(observable);\n if (index >= 0 && index < P) {\n return;\n }\n if (P < observablesLength - 1) {\n this.R();\n }\n else if (P === observablesLength - 1) {\n A[P].K.delete(observer);\n }\n }\n observable.K.add(observer);\n A[this.P++] = observable;\n if (P === 128) { // Switching to a Set, as indexOf checks may get artbirarily expensive otherwise\n observer.A = new ObservablesSet(observer, A);\n }\n }\n C() {\n const { A } = this;\n for (let i = 0, l = A.length; i < l; i++) {\n A[i].parent?.C();\n }\n }\n}\nclass ObservablesSet {\n /* CONSTRUCTOR */\n constructor(observer, A) {\n this.observer = observer;\n this.A = new Set(A);\n }\n /* API */\n Q(deep) {\n for (const observable of this.A) {\n observable.K.delete(this.observer);\n }\n }\n R() {\n return;\n }\n empty() {\n return !this.A.size;\n }\n has(observable) {\n return this.A.has(observable);\n }\n L(observable) {\n const { observer, A } = this;\n const sizePrev = A.size;\n observable.K.add(observer);\n const sizeNext = A.size;\n if (sizePrev === sizeNext)\n return; // Cheaper than Set.has+Set.add\n A.add(observable);\n }\n C() {\n for (const observable of this.A) {\n observable.parent?.C();\n }\n }\n}\n/* EXPORT */\nexport { ObservablesArray, ObservablesSet };\n","/* IMPORT */\nimport { DIRTY_NO, DIRTY_MAYBE_NO, DIRTY_MAYBE_YES, DIRTY_YES } from '../constants.js';\nimport { OWNER, SUPER_OWNER } from '../context.js';\nimport { lazyArrayPush } from '../lazy.js';\nimport { ObservablesArray, ObservablesSet } from './observables.js';\nimport Owner from './owner.js';\n/* MAIN */\nclass Observer extends Owner {\n /* CONSTRUCTOR */\n constructor() {\n super();\n /* VARIABLES */\n this.parent = OWNER;\n this.context = OWNER.context;\n this.J = DIRTY_YES;\n this.A = new ObservablesArray(this);\n if (OWNER !== SUPER_OWNER) {\n lazyArrayPush(this.parent, 'K', this);\n }\n }\n /* API */\n Q(deep) {\n this.A.Q(deep);\n super.Q(deep);\n }\n H(fn) {\n this.Q(false);\n this.J = DIRTY_MAYBE_NO; // Resetting the trip flag, we didn't re-execute just yet\n try {\n return this.E(fn, this, this);\n }\n finally {\n this.A.R();\n }\n }\n run() {\n throw new Error('Abstract method');\n }\n I(J) {\n throw new Error('Abstract method');\n }\n C() {\n if (this.disposed)\n return; // Disposed, it shouldn't be updated again\n if (this.J === DIRTY_MAYBE_YES) { // Maybe we are dirty, let's check with our A, to be sure\n this.A.C();\n }\n if (this.J === DIRTY_YES) { // We are dirty, let's H\n this.J = DIRTY_MAYBE_NO; // Trip flag, to be able to tell if we caused ourselves to be dirty again\n this.run();\n if (this.J === DIRTY_MAYBE_NO) { // Not dirty anymore\n this.J = DIRTY_NO;\n }\n else { // Maybe we are still dirty, let's check again\n this.C();\n }\n }\n else { // Not dirty\n this.J = DIRTY_NO;\n }\n }\n}\n/* EXPORT */\nexport default Observer;\n","/* IMPORT */\nimport { DIRTY_MAYBE_YES, UNAVAILABLE, UNINITIALIZED } from '../constants.js';\nimport Observable from './observable.js';\nimport Observer from './observer.js';\n/* MAIN */\nclass Memo extends Observer {\n /* CONSTRUCTOR */\n constructor(fn, options) {\n super();\n this.fn = fn;\n this.observable = new Observable(UNINITIALIZED, options, this);\n if (options?.sync === true) {\n this.sync = true;\n this.C();\n }\n }\n /* API */\n run() {\n const G = super.H(this.fn);\n if (!this.disposed && this.A.empty()) {\n this.disposed = true;\n }\n if (G !== UNAVAILABLE) {\n this.observable.set(G);\n }\n }\n I(J) {\n const statusPrev = this.J;\n if (statusPrev >= J)\n return;\n this.J = J;\n if (statusPrev === DIRTY_MAYBE_YES)\n return;\n this.observable.I(DIRTY_MAYBE_YES);\n }\n}\n/* EXPORT */\nexport default Memo;\n","/* IMPORT */\nimport isObservableFrozen from './is_observable_frozen.js';\nimport isUntracked from './is_untracked.js';\nimport { frozen, readable } from '../objects/callable.js';\nimport Memo from '../objects/memo.js';\n/* MAIN */\nconst memo = (fn, options) => {\n if (isObservableFrozen(fn)) {\n return fn;\n }\n else if (isUntracked(fn)) {\n return frozen(fn());\n }\n else {\n const memo = new Memo(fn, options);\n const observable = readable(memo.observable);\n return observable;\n }\n};\n/* EXPORT */\nexport default memo;\n","/* IMPORT */\nimport isObservableBoolean from './is_observable_boolean.js';\nimport isObservableFrozen from './is_observable_frozen.js';\nimport isUntracked from './is_untracked.js';\nimport memo from './memo.js';\nimport { SYMBOL_OBSERVABLE_BOOLEAN } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN */\nconst boolean = (value) => {\n if (isFunction(value)) {\n if (isObservableFrozen(value) || isUntracked(value)) {\n return !!value();\n }\n else if (isObservableBoolean(value)) {\n return value;\n }\n else {\n const boolean = memo(() => !!value());\n boolean[SYMBOL_OBSERVABLE_BOOLEAN] = true;\n return boolean;\n }\n }\n else {\n return !!value;\n }\n};\n/* EXPORT */\nexport default boolean;\n","/* IMPORT */\nimport { OWNER } from '../context.js';\nimport { lazyArrayPush } from '../lazy.js';\n/* MAIN */\nconst cleanup = (fn) => {\n lazyArrayPush(OWNER, 'B', fn);\n};\n/* EXPORT */\nexport default cleanup;\n","/* IMPORT */\nimport { OWNER } from '../context.js';\nimport { lazyArrayPush } from '../lazy.js';\nimport Owner from './owner.js';\n/* MAIN */\nclass Context extends Owner {\n /* CONSTRUCTOR */\n constructor(context) {\n super();\n /* VARIABLES */\n this.parent = OWNER;\n this.context = { ...OWNER.context, ...context };\n lazyArrayPush(this.parent, 'D', this);\n }\n /* API */\n E(fn) {\n return super.E(fn, this, undefined);\n }\n}\n/* EXPORT */\nexport default Context;\n","/* IMPORT */\nimport { OWNER } from '../context.js';\nimport Context from '../objects/context.js';\nimport { isSymbol, noop } from '../utils.js';\nfunction context(symbolOrContext, fn) {\n if (isSymbol(symbolOrContext)) {\n return OWNER.context[symbolOrContext];\n }\n else {\n return new Context(symbolOrContext).E(fn || noop);\n }\n}\n/* EXPORT */\nexport default context;\n","/* IMPORT */\nimport cleanup from './cleanup.js';\nimport { readable } from '../objects/callable.js';\nimport Observable from '../objects/observable.js';\n/* MAIN */\nconst disposed = () => {\n const observable = new Observable(false);\n const A4 = () => observable.set(true);\n cleanup(A4);\n return readable(observable);\n};\n/* EXPORT */\nexport default disposed;\n","/* IMPORT */\nimport { BATCH } from '../context.js';\n/* MAIN */\n// Using 2 microtasks to give a chance to things using 1 microtask (like refs in Voby) to run first\nclass Scheduler {\n constructor() {\n /* VARIABLES */\n this.A1 = [];\n this.A2 = false;\n this.A3 = false;\n /* QUEUING API */\n this.N = () => {\n if (this.A2)\n return;\n if (!this.A1.length)\n return;\n try {\n this.A2 = true;\n while (true) {\n const queue = this.A1;\n if (!queue.length)\n break;\n this.A1 = [];\n for (let i = 0, l = queue.length; i < l; i++) {\n queue[i].C();\n }\n }\n }\n finally {\n this.A2 = false;\n }\n };\n this.queue = () => {\n if (this.A3)\n return;\n this.A3 = true;\n this.resolve();\n };\n this.resolve = () => {\n queueMicrotask(() => {\n queueMicrotask(() => {\n if (BATCH) {\n BATCH.finally(this.resolve);\n }\n else {\n this.A3 = false;\n this.N();\n }\n });\n });\n };\n /* SCHEDULING API */\n this.F = (effect) => {\n this.A1.push(effect);\n this.queue();\n };\n }\n}\n/* EXPORT */\nexport default new Scheduler();\n","/* IMPORT */\nimport { lazyArrayPush } from '../lazy.js';\nimport Observer from './observer.js';\nimport Scheduler from './scheduler.async.js';\nimport { SYMBOL_SUSPENSE } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN */\nclass Effect extends Observer {\n /* CONSTRUCTOR */\n constructor(fn, options) {\n super();\n this.fn = fn;\n if (options?.suspense !== false) {\n const suspense = this.get(SYMBOL_SUSPENSE);\n if (suspense) {\n this.suspense = suspense;\n }\n }\n if (options?.sync === true) {\n this.sync = true;\n }\n if (options?.sync === 'init') {\n this.init = true;\n this.C();\n }\n else {\n this.F();\n }\n }\n /* API */\n run() {\n const G = super.H(this.fn);\n if (isFunction(G)) {\n lazyArrayPush(this, 'B', G);\n }\n }\n F() {\n if (this.suspense?.suspended)\n return;\n if (this.sync) {\n this.C();\n }\n else {\n Scheduler.F(this);\n }\n }\n I(J) {\n const statusPrev = this.J;\n if (statusPrev >= J)\n return;\n this.J = J;\n if (!this.sync || (statusPrev !== 2 && statusPrev !== 3)) { // It isn't currently executing, so let's F it\n this.F();\n }\n }\n C() {\n if (this.suspense?.suspended)\n return;\n super.C();\n }\n}\n/* EXPORT */\nexport default Effect;\n","/* IMPORT */\nimport Effect from '../objects/effect.js';\n/* MAIN */\nconst effect = (fn, options) => {\n const effect = new Effect(fn, options);\n const Q = () => effect.Q(true);\n return Q;\n};\n/* EXPORT */\nexport default effect;\n","/* IMPORT */\nimport memo from './memo.js';\nimport { frozen } from '../objects/callable.js';\nimport { SYMBOL_OBSERVABLE, SYMBOL_UNTRACKED, SYMBOL_UNTRACKED_UNWRAPPED } from '../symbols.js';\nimport { isFunction } from '../utils.js';\nfunction resolve(value) {\n if (isFunction(value)) {\n if (SYMBOL_UNTRACKED_UNWRAPPED in value) {\n return resolve(value());\n }\n else if (SYMBOL_UNTRACKED in value) {\n return frozen(resolve(value()));\n }\n else if (SYMBOL_OBSERVABLE in value) {\n return value;\n }\n else {\n return memo(() => resolve(value()));\n }\n }\n if (value instanceof Array) {\n const resolved = new Array(value.length);\n for (let i = 0, l = resolved.length; i < l; i++) {\n resolved[i] = resolve(value[i]);\n }\n return resolved;\n }\n else {\n return value;\n }\n}\n/* EXPORT */\nexport default resolve;\n","/* IMPORT */\nimport { OWNER } from '../context.js';\nimport { lazySetAdd, lazySetDelete } from '../lazy.js';\nimport Owner from './owner.js';\nimport { SYMBOL_SUSPENSE } from '../symbols.js';\n/* MAIN */\nclass Root extends Owner {\n /* CONSTRUCTOR */\n constructor(V) {\n super();\n /* VARIABLES */\n this.parent = OWNER;\n this.context = OWNER.context;\n if (V) {\n const suspense = this.get(SYMBOL_SUSPENSE);\n if (suspense) {\n this.A0 = true;\n lazySetAdd(this.parent, 'T', this);\n }\n }\n }\n /* API */\n Q(deep) {\n if (this.A0) {\n lazySetDelete(this.parent, 'T', this);\n }\n super.Q(deep);\n }\n E(fn) {\n const Q = () => this.Q(true);\n const fnWithDispose = () => fn(Q);\n return super.E(fnWithDispose, this, undefined);\n }\n}\n/* EXPORT */\nexport default Root;\n","/* IMPORT */\nimport { OWNER } from '../context.js';\nimport { lazySetAdd, lazySetDelete } from '../lazy.js';\nimport cleanup from './cleanup.js';\nimport resolve from './resolve.js';\nimport { frozen, readable } from '../objects/callable.js';\nimport Observable from '../objects/observable.js';\nimport Root from '../objects/root.js';\nimport { SYMBOL_CACHED, SYMBOL_SUSPENSE, SYMBOL_UNCACHED } from '../symbols.js';\n/* HELPERS */\nconst DUMMY_INDEX = frozen(-1);\nclass MappedRoot extends Root {\n}\n/* MAIN */\nclass CacheKeyed {\n /* CONSTRUCTOR */\n constructor(fn) {\n /* VARIABLES */\n this.parent = OWNER;\n this.suspense = OWNER.get(SYMBOL_SUSPENSE);\n this.A5 = new Map();\n this.A6 = false; // The A6 is flipped with each iteration, the T that don't have the updated one are disposed, it's like a cheap M basically\n this.A7 = 0; // Number of previous items\n this.A8 = 0; // Number of previous items that got reused\n this.A9 = 0; // Number of next items\n /* API */\n this.cleanup = () => {\n if (!this.A7)\n return; // There was nothing AA, no need to cleanup\n if (this.A7 === this.A8)\n return; // All the previous items were reused, no need to cleanup\n const { A5, A6 } = this;\n if (!A5.size)\n return; // Nothing to Q of\n if (this.A9) { // Regular cleanup\n A5.forEach((mapped, value) => {\n if (mapped.A6 === A6)\n return;\n mapped.Q(true);\n A5.delete(value);\n });\n }\n else { // There is nothing O, disposing quickly\n this.A5.forEach(mapped => {\n mapped.Q(true);\n });\n this.A5 = new Map();\n }\n };\n this.Q = () => {\n if (this.suspense) {\n lazySetDelete(this.parent, 'T', this.T);\n }\n this.A7 = this.A5.size;\n this.A8 = 0;\n this.A9 = 0;\n this.cleanup();\n };\n this.AA = () => {\n this.A6 = !this.A6;\n this.A8 = 0;\n this.A9 = 0;\n };\n this.O = (values) => {\n this.A9 = values.length;\n this.cleanup();\n this.A7 = this.A9;\n this.A8 = 0;\n };\n this.map = (values) => {\n this.AA();\n const { A5, A6, fn, AB } = this;\n const results = new Array(values.length);\n let resultsCached = true; // Whether all results are cached, if so this enables an optimization\n let resultsUncached = true; // Whether all results are anew, if so this enables an optimization in Voby\n let A8 = 0;\n for (let i = 0, l = values.length; i < l; i++) {\n const value = values[i];\n const cached = A5.get(value);\n if (cached && cached.A6 !== A6) {\n resultsUncached = false;\n A8 += 1;\n cached.A6 = A6;\n cached.index?.set(i);\n results[i] = cached.G; //TSC\n }\n else {\n resultsCached = false;\n const mapped = new MappedRoot(false);\n if (cached) {\n cleanup(() => mapped.Q(true));\n }\n mapped.E(() => {\n let index = DUMMY_INDEX;\n if (AB) {\n mapped.index = new Observable(i);\n index = readable(mapped.index);\n }\n const G = results[i] = resolve(fn(value, index));\n mapped.A6 = A6;\n mapped.G = G;\n if (!cached) {\n A5.set(value, mapped);\n }\n });\n }\n }\n this.A8 = A8;\n this.O(values);\n if (resultsCached) {\n results[SYMBOL_CACHED] = true;\n }\n if (resultsUncached) {\n results[SYMBOL_UNCACHED] = true;\n }\n return results;\n };\n this.T = () => {\n return Array.from(this.A5.values());\n };\n this.fn = fn;\n this.AB = (fn.length > 1);\n if (this.suspense) {\n lazySetAdd(this.parent, 'T', this.T);\n }\n }\n}\n/* EXPORT */\nexport default CacheKeyed;\n","/* IMPORT */\nimport { SYMBOL_OBSERVABLE } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN */\nconst isObservable = (value) => {\n return isFunction(value) && (SYMBOL_OBSERVABLE in value);\n};\n/* EXPORT */\nexport default isObservable;\n","/* IMPORT */\nimport isObservable from './is_observable.js';\nimport { isFunction } from '../utils.js';\nfunction get(value, getFunction = true) {\n const is = getFunction ? isFunction : isObservable;\n if (is(value)) {\n return value();\n }\n else {\n return value;\n }\n}\n/* EXPORT */\nexport default get;\n","/* IMPORT */\nimport { DIRTY_MAYBE_YES, DIRTY_YES } from '../constants.js';\nimport { OWNER } from '../context.js';\nimport { lazyArrayEach, lazyArrayPush, lazySetEach } from '../lazy.js';\nimport Effect from './effect.js';\nimport Owner from './owner.js';\nimport { SYMBOL_SUSPENSE } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN */\nclass Suspense extends Owner {\n /* CONSTRUCTOR */\n constructor() {\n super();\n /* VARIABLES */\n this.parent = OWNER;\n this.context = { ...OWNER.context, [SYMBOL_SUSPENSE]: this };\n lazyArrayPush(this.parent, 'U', this);\n this.suspended = (OWNER.get(SYMBOL_SUSPENSE)?.suspended || 0);\n }\n /* API */\n A4(force) {\n if (!this.suspended && !force)\n return; // Already suspended, this can happen at instantion time\n const suspendedPrev = this.suspended;\n const suspendedNext = suspendedPrev + (force ? 1 : -1);\n this.suspended = suspendedNext;\n if (!!suspendedPrev === !!suspendedNext)\n return; // Same state, nothing to pause or resume\n /* NOTIFYING OBSERVERS, ROOTS AND SUSPENSES */\n this.observable?.set(!!suspendedNext);\n const notifyOwner = (owner) => {\n lazyArrayEach(owner.D, notifyOwner);\n lazyArrayEach(owner.K, notifyObserver);\n lazyArrayEach(owner.U, notifySuspense);\n lazySetEach(owner.T, notifyRoot);\n };\n const notifyObserver = (observer) => {\n if (observer instanceof Effect) {\n if (observer.J === DIRTY_MAYBE_YES || observer.J === DIRTY_YES) {\n if (observer.init) {\n observer.C();\n }\n else {\n observer.F();\n }\n }\n }\n notifyOwner(observer);\n };\n const notifyRoot = (root) => {\n if (isFunction(root)) {\n root().forEach(notifyOwner);\n }\n else {\n notifyOwner(root);\n }\n };\n const notifySuspense = (suspense) => {\n suspense.A4(force);\n };\n notifyOwner(this);\n }\n E(fn) {\n return super.E(fn, this, undefined);\n }\n}\n/* EXPORT */\nexport default Suspense;\n","/* IMPORT */\nimport boolean from './boolean.js';\nimport effect from './effect.js';\nimport get from './get.js';\nimport Suspense from '../objects/suspense.js';\n/* MAIN */\nconst suspense = (when, fn) => {\n const suspense = new Suspense();\n const condition = boolean(when);\n const A4 = () => suspense.A4(get(condition));\n effect(A4, { sync: true });\n return suspense.E(fn);\n};\n/* EXPORT */\nexport default suspense;\n","/* IMPORT */\nimport { OWNER } from '../context.js';\nimport { lazySetAdd, lazySetDelete } from '../lazy.js';\nimport cleanup from './cleanup.js';\nimport get from './get.js';\nimport memo from './memo.js';\nimport resolve from './resolve.js';\nimport suspense from './suspense.js';\nimport { frozen, readable } from '../objects/callable.js';\nimport Observable from '../objects/observable.js';\nimport Root from '../objects/root.js';\nimport { SYMBOL_CACHED, SYMBOL_SUSPENSE, SYMBOL_UNCACHED } from '../symbols.js';\n/* HELPERS */\nconst DUMMY_INDEX = frozen(-1);\nclass MappedRoot extends Root {\n}\n/* MAIN */\n//TODO: Optimize this more\nclass CacheUnkeyed {\n /* CONSTRUCTOR */\n constructor(fn, pooled) {\n /* VARIABLES */\n this.parent = OWNER;\n this.suspense = OWNER.get(SYMBOL_SUSPENSE);\n this.A5 = new Map();\n this.AC = [];\n this.AD = 0;\n /* API */\n this.cleanup = () => {\n let pooled = 0;\n let poolable = Math.max(0, this.pooled ? this.AD - this.AC.length : 0);\n this.A5.forEach(mapped => {\n if (poolable > 0 && pooled++ < poolable) {\n mapped.suspended?.set(true);\n this.AC.push(mapped);\n }\n else {\n mapped.Q(true);\n }\n });\n };\n this.Q = () => {\n if (this.suspense) {\n lazySetDelete(this.parent, 'T', this.T);\n }\n this.A5.forEach(mapped => {\n mapped.Q(true);\n });\n this.AC.forEach(mapped => {\n mapped.Q(true);\n });\n };\n this.map = (values) => {\n const { A5, fn, AB } = this;\n const cacheNext = new Map();\n const results = new Array(values.length);\n const AC = this.AC;\n const pooled = this.pooled;\n let resultsCached = true; // Whether all results are cached, if so this enables an optimization\n let resultsUncached = true; // Whether all results are anew, if so this enables an optimization in Voby\n let leftovers = [];\n if (A5.size) {\n for (let i = 0, l = values.length; i < l; i++) {\n const value = values[i];\n const cached = A5.get(value);\n if (cached) {\n resultsUncached = false;\n A5.delete(value);\n cacheNext.set(value, cached);\n cached.index?.set(i);\n results[i] = cached.G; //TSC\n }\n else {\n leftovers.push(i);\n }\n }\n }\n else {\n leftovers = new Array(results.length);\n }\n outer: for (let i = 0, l = leftovers.length; i < l; i++) {\n const index = leftovers[i] || i;\n const value = values[index];\n const isDuplicate = cacheNext.has(value);\n if (!isDuplicate) {\n for (const [key, mapped] of A5.entries()) {\n A5.delete(key);\n cacheNext.set(value, mapped);\n mapped.index?.set(index);\n mapped.value?.set(value);\n results[index] = mapped.G; //TSC\n continue outer;\n }\n }\n resultsCached = false;\n let mapped;\n if (pooled && AC.length) {\n mapped = AC.pop(); //TSC\n mapped.index?.set(index);\n mapped.value?.set(value);\n mapped.suspended?.set(false);\n results[index] = mapped.G; //TSC\n }\n else {\n mapped = new MappedRoot(false);\n mapped.E(() => {\n let $index = DUMMY_INDEX;\n if (AB) {\n mapped.index = new Observable(index);\n $index = readable(mapped.index);\n }\n const observable = mapped.value = new Observable(value);\n const suspended = pooled ? new Observable(false) : undefined;\n const $value = memo(() => get(observable.get())); //TSC\n const G = results[index] = suspended ? suspense(() => suspended.get(), () => resolve(fn($value, $index))) : resolve(fn($value, $index));\n mapped.value = observable;\n mapped.G = G;\n mapped.suspended = suspended;\n });\n }\n if (isDuplicate) { // Expensive, not reusable\n cleanup(() => mapped.Q(true));\n }\n else { // Cheap, reusable\n cacheNext.set(value, mapped);\n }\n }\n this.AD = Math.max(this.AD, results.length);\n this.cleanup();\n this.A5 = cacheNext;\n if (resultsCached) {\n results[SYMBOL_CACHED] = true;\n }\n if (resultsUncached) {\n results[SYMBOL_UNCACHED] = true;\n }\n return results;\n };\n this.T = () => {\n return [...this.A5.values(), ...this.AC.values()];\n };\n this.fn = fn;\n this.AB = (fn.length > 1);\n this.pooled = pooled;\n if (this.suspense) {\n lazySetAdd(this.parent, 'T', this.T);\n }\n }\n}\n/* EXPORT */\nexport default CacheUnkeyed;\n","/* IMPORT */\nimport { SYMBOL_STORE } from '../symbols.js';\nimport { isObject } from '../utils.js';\n/* MAIN */\nconst isStore = (value) => {\n return isObject(value) && (SYMBOL_STORE in value);\n};\n/* EXPORT */\nexport default isStore;\n","/* IMPORT */\nimport { OBSERVER, setObserver } from '../context.js';\nimport { isFunction } from '../utils.js';\nfunction untrack(fn) {\n if (isFunction(fn)) {\n const observerPrev = OBSERVER;\n if (observerPrev) {\n try {\n setObserver(undefined);\n return fn();\n }\n finally {\n setObserver(observerPrev);\n }\n }\n else {\n return fn();\n }\n }\n else {\n return fn;\n }\n}\n/* EXPORT */\nexport default untrack;\n","/* IMPORT */\nimport cleanup from './cleanup.js';\nimport CacheKeyed from './for.cache.keyed.js';\nimport CacheUnkeyed from './for.cache.unkeyed.js';\nimport get from './get.js';\nimport isObservable from './is_observable.js';\nimport isStore from './is_store.js';\nimport memo from './memo.js';\nimport resolve from './resolve.js';\nimport untrack from './untrack.js';\nimport { frozen } from '../objects/callable.js';\nimport { SYMBOL_CACHED, SYMBOL_STORE_VALUES } from '../symbols.js';\nimport { isArray, isEqual } from '../utils.js';\nfunction _for(values, fn, fallback = [], options) {\n if (isArray(values) && !isStore(values)) { // Fast path for plain arrays\n const isUnkeyed = !!options?.unkeyed;\n return frozen(untrack(() => {\n if (values.length) {\n return values.map((value, index) => {\n return resolve(fn(isUnkeyed && !isObservable(value) ? frozen(value) : value, index));\n });\n }\n else {\n return resolve(fallback);\n }\n }));\n }\n else { // Regular path\n const { Q, map } = options?.unkeyed ? new CacheUnkeyed(fn, !!options.pooled) : new CacheKeyed(fn); //TSC\n cleanup(Q);\n const value = memo(() => {\n return get(values) ?? [];\n }, {\n equals: (next, prev) => {\n return !!next && !!prev && !next.length && !prev.length && !isStore(next) && !isStore(prev);\n }\n });\n return memo(() => {\n const array = value();\n if (isStore(array)) {\n array[SYMBOL_STORE_VALUES];\n }\n return untrack(() => {\n const results = map(array);\n return results?.length ? results : resolve(fallback);\n });\n }, {\n equals: (next, prev) => {\n return isArray(next) && !!next[SYMBOL_CACHED] && isArray(prev) && isEqual(next, prev);\n }\n });\n }\n}\n/* EXPORT */\nexport default _for;\n","/* IMPORT */\nimport untrack from './untrack.js';\n/* MAIN */\n// This function ensures an Observable contains a fresh value, mainly to try to push it into a frozen state, if possible\nconst warmup = (value) => {\n untrack(value);\n return value;\n};\n/* EXPORT */\nexport default warmup;\n","/* IMPORT */\nimport get from './get.js';\nimport isObservableBoolean from './is_observable_boolean.js';\nimport isObservableFrozen from './is_observable_frozen.js';\nimport isUntracked from './is_untracked.js';\nimport memo from './memo.js';\nimport resolve from './resolve.js';\nimport warmup from './warmup.js';\nimport { frozen } from '../objects/callable.js';\nimport { is, isFunction } from '../utils.js';\n/* HELPERS */\nconst match = (condition, values, fallback) => {\n for (let i = 0, l = values.length; i < l; i++) {\n const value = values[i];\n if (value.length === 1)\n return value[0];\n if (is(value[0], condition))\n return value[1];\n }\n return fallback;\n};\nfunction _switch(when, values, fallback) {\n const isDynamic = isFunction(when) && !isObservableFrozen(when) && !isUntracked(when);\n if (isDynamic) {\n if (isObservableBoolean(when)) {\n return memo(() => resolve(match(when(), values, fallback)));\n }\n const value = warmup(memo(() => match(when(), values, fallback)));\n if (isObservableFrozen(value)) {\n return frozen(resolve(value()));\n }\n else {\n return memo(() => resolve(get(value)));\n }\n }\n else {\n const value = match(get(when), values, fallback);\n return frozen(resolve(value));\n }\n}\n/* EXPORT */\nexport default _switch;\n","/* IMPORT */\nimport boolean from './boolean.js';\nimport _switch from './switch.js';\n/* MAIN */\nconst ternary = (when, valueTrue, valueFalse) => {\n const condition = boolean(when);\n return _switch(condition, [[true, valueTrue], [valueFalse]]);\n};\n/* EXPORT */\nexport default ternary;\n","/* IMPORT */\nimport ternary from './ternary.js';\nfunction _if(when, valueTrue, valueFalse) {\n return ternary(when, valueTrue, valueFalse);\n}\n/* EXPORT */\nexport default _if;\n","/* IMPORT */\nimport { BATCH } from '../context.js';\nimport SchedulerAsync from '../objects/scheduler.async.js';\nimport SchedulerSync from '../objects/scheduler.sync.js';\n/* MAIN */\nconst isBatching = () => {\n return !!BATCH || SchedulerAsync.A3 || SchedulerAsync.A2 || SchedulerSync.A2;\n};\n/* EXPORT */\nexport default isBatching;\n","/* IMPORT */\nimport { writable } from '../objects/callable.js';\nimport ObservableClass from '../objects/observable.js';\nfunction observable(value, options) {\n return writable(new ObservableClass(value, options));\n}\n/* EXPORT */\nexport default observable;\n","/* IMPORT */\nimport { OWNER } from '../context.js';\nimport Observer from '../objects/observer.js';\nimport Root from '../objects/root.js';\nimport SuperRoot from '../objects/superroot.js';\nimport Suspense from '../objects/suspense.js';\n/* MAIN */\nconst owner = () => {\n const isSuperRoot = (OWNER instanceof SuperRoot);\n const isRoot = (OWNER instanceof Root);\n const isSuspense = (OWNER instanceof Suspense);\n const isComputation = (OWNER instanceof Observer);\n return { isSuperRoot, isRoot, isSuspense, isComputation };\n};\n/* EXPORT */\nexport default owner;\n","/* IMPORT */\nimport { SYMBOL_OBSERVABLE_WRITABLE } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN */\nconst isObservableWritable = (value) => {\n return isFunction(value) && (SYMBOL_OBSERVABLE_WRITABLE in value);\n};\n/* EXPORT */\nexport default isObservableWritable;\n","/* IMPORT */\nimport { UNAVAILABLE } from '../constants.js';\nimport { SYMBOL_OBSERVABLE_READABLE, SYMBOL_OBSERVABLE_WRITABLE } from '../symbols.js';\nimport { isFunction } from '../utils.js';\n/* MAIN */\nconst target = (observable) => {\n if (isFunction(observable)) {\n return observable[SYMBOL_OBSERVABLE_READABLE] || observable[SYMBOL_OBSERVABLE_WRITABLE] || UNAVAILABLE;\n }\n else {\n return observable;\n }\n};\n/* EXPORT */\nexport default target;\n","/* IMPORT */\nimport isObservableWritable from './is_observable_writable.js';\nimport target from './target.js';\nimport { readable } from '../objects/callable.js';\n/* MAIN */\nconst readonly = (observable) => {\n if (isObservableWritable(observable)) {\n return readable(target(observable));\n }\n else {\n return observable;\n }\n};\n/* EXPORT */\nexport default readonly;\n","/* IMPORT */\nimport Root from '../objects/root.js';\n/* MAIN */\nconst root = (fn) => {\n return new Root(true).E(fn);\n};\n/* EXPORT */\nexport default root;\n","/* IMPORT */\nimport { OBSERVABLE_FALSE, OBSERVABLE_TRUE } from '../constants.js';\nimport cleanup from './cleanup.js';\nimport effect from './effect.js';\nimport isObservableFrozen from './is_observable_frozen.js';\nimport memo from './memo.js';\nimport untrack from './untrack.js';\nimport warmup from './warmup.js';\nimport { readable } from '../objects/callable.js';\nimport Observable from '../objects/observable.js';\nimport { is } from '../utils.js';\n/* HELPERS */\nclass DisposableMap extends Map {\n constructor() {\n super(...arguments);\n this.disposed = false;\n }\n}\nclass SelectedObservable extends Observable {\n constructor() {\n super(...arguments);\n this.AE = 1;\n }\n /* API */\n call() {\n if (this.AF.disposed)\n return;\n this.AE -= 1;\n if (this.AE)\n return;\n this.AF.delete(this.AG);\n }\n}\n/* MAIN */\nconst selector = (AG) => {\n /* NORMALIZING SOURCE */\n AG = warmup(memo(AG));\n /* FROZEN SOURCE */\n if (isObservableFrozen(AG)) {\n const sourceValue = untrack(AG);\n return (value) => {\n return (value === sourceValue) ? OBSERVABLE_TRUE : OBSERVABLE_FALSE;\n };\n }\n /* SELECTEDS */\n let AF = new DisposableMap();\n let selectedValue = untrack(AG);\n effect(() => {\n const valuePrev = selectedValue;\n const valueNext = AG();\n if (is(valuePrev, valueNext))\n return;\n selectedValue = valueNext;\n AF.get(valuePrev)?.set(false);\n AF.get(valueNext)?.set(true);\n }, { suspense: false, sync: true });\n /* CLEANUP ALL */\n const cleanupAll = () => {\n AF.disposed = true;\n };\n cleanup(cleanupAll);\n /* SELECTOR */\n return (value) => {\n /* INIT */\n let selected = AF.get(value);\n if (selected) {\n selected.AE += 1;\n }\n else {\n selected = new SelectedObservable(value === selectedValue);\n selected.AF = AF;\n selected.AG = value;\n AF.set(value, selected);\n }\n /* CLEANUP */\n cleanup(selected);\n /* RETURN */\n return readable(selected);\n };\n};\n/* EXPORT */\nexport default selector;\n","/* IMPORT */\nimport { BATCH, OBSERVER } from '../context.js';\nimport { lazySetAdd, lazySetDelete, lazySetEach } from '../lazy.js';\nimport cleanup from './cleanup.js';\nimport effect from './effect.js';\nimport isBatching from './is_batching.js';\nimport isStore from './is_store.js';\nimport untrack from './untrack.js';\nimport { readable } from '../objects/callable.js';\nimport ObservableClass from '../objects/observable.js';\nimport { SYMBOL_STORE, SYMBOL_STORE_KEYS, SYMBOL_STORE_OBSERVABLE, SYMBOL_STORE_TARGET, SYMBOL_STORE_VALUES, SYMBOL_STORE_UNTRACKED } from '../symbols.js';\nimport { castArray, is, isArray, isFunction, isObject, noop, nope } from '../utils.js';\n/* CLASSES */\nclass StoreMap extends Map {\n AH(key, value) {\n super.set(key, value);\n return value;\n }\n}\nclass StoreCleanable {\n constructor() {\n this.AE = 0;\n }\n listen() {\n this.AE += 1;\n cleanup(this);\n }\n call() {\n this.AE -= 1;\n if (this.AE)\n return;\n this.Q();\n }\n Q() { }\n}\nclass StoreKeys extends StoreCleanable {\n constructor(parent, observable) {\n super();\n this.parent = parent;\n this.observable = observable;\n }\n Q() {\n this.parent.keys = undefined;\n }\n}\nclass StoreValues extends StoreCleanable {\n constructor(parent, observable) {\n super();\n this.parent = parent;\n this.observable = observable;\n }\n Q() {\n this.parent.values = undefined;\n }\n}\nclass StoreHas extends StoreCleanable {\n constructor(parent, key, observable) {\n super();\n this.parent = parent;\n this.key = key;\n this.observable = observable;\n }\n Q() {\n this.parent.has?.delete(this.key);\n }\n}\nclass StoreProperty extends StoreCleanable {\n constructor(parent, key, observable, AI) {\n super();\n this.parent = parent;\n this.key = key;\n this.observable = observable;\n this.AI = AI;\n }\n Q() {\n this.parent.AJ?.delete(this.key);\n }\n}\nconst StoreListenersRegular = {\n /* VARIABLES */\n AK: 0,\n AL: new Set(),\n AM: new Set(),\n /* API */\n AN: () => {\n const { AL, AM } = StoreListenersRegular;\n const traversed = new Set();\n const traverse = (AI) => {\n if (traversed.has(AI))\n return;\n traversed.add(AI);\n lazySetEach(AI.AO, traverse);\n lazySetEach(AI.AP, listener => {\n AL.add(listener);\n });\n };\n AM.forEach(traverse);\n return () => {\n AL.forEach(listener => {\n listener();\n });\n };\n },\n V: (AI) => {\n StoreListenersRegular.AM.add(AI);\n StoreScheduler.F();\n },\n reset: () => {\n StoreListenersRegular.AL = new Set();\n StoreListenersRegular.AM = new Set();\n }\n};\nconst StoreListenersRoots = {\n /* VARIABLES */\n AK: 0,\n AM: new Map(),\n /* API */\n AN: () => {\n const { AM } = StoreListenersRoots;\n return () => {\n AM.forEach((rootsSet, store) => {\n const T = Array.from(rootsSet);\n lazySetEach(store.AQ, listener => {\n listener(T);\n });\n });\n };\n },\n V: (store, root) => {\n const T = StoreListenersRoots.AM.get(store) || new Set();\n T.add(root);\n StoreListenersRoots.AM.set(store, T);\n StoreScheduler.F();\n },\n AR: (current, parent, key) => {\n if (!parent.AO) {\n const root = current?.store || untrack(() => parent.store[key]);\n StoreListenersRoots.V(parent, root);\n }\n else {\n const traversed = new Set();\n const traverse = (AI) => {\n if (traversed.has(AI))\n return;\n traversed.add(AI);\n lazySetEach(AI.AO, parent => {\n if (!parent.AO) {\n StoreListenersRoots.V(parent, AI.store);\n }\n traverse(parent);\n });\n };\n traverse(current || parent);\n }\n },\n reset: () => {\n StoreListenersRoots.AM = new Map();\n }\n};\nconst StoreScheduler = {\n /* VARIABLES */\n AK: false,\n /* API */\n N: () => {\n const flushRegular = StoreListenersRegular.AN();\n const flushRoots = StoreListenersRoots.AN();\n StoreScheduler.reset();\n flushRegular();\n flushRoots();\n },\n AS: () => {\n if (isBatching()) {\n if (BATCH) {\n BATCH.finally(StoreScheduler.AS);\n }\n else {\n setTimeout(StoreScheduler.AS, 0);\n }\n }\n else {\n StoreScheduler.N();\n }\n },\n reset: () => {\n StoreScheduler.AK = false;\n StoreListenersRegular.reset();\n StoreListenersRoots.reset();\n },\n F: () => {\n if (StoreScheduler.AK)\n return;\n StoreScheduler.AK = true;\n queueMicrotask(StoreScheduler.AS);\n }\n};\n/* CONSTANTS */\nconst NODES = new WeakMap();\nconst SPECIAL_SYMBOLS = new Set([SYMBOL_STORE, SYMBOL_STORE_KEYS, SYMBOL_STORE_OBSERVABLE, SYMBOL_STORE_TARGET, SYMBOL_STORE_VALUES]);\nconst UNREACTIVE_KEYS = new Set(['__proto__', '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'prototype', 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toSource', 'toString', 'valueOf']);\nconst STORE_TRAPS = {\n /* API */\n get: (target, key) => {\n if (SPECIAL_SYMBOLS.has(key)) {\n if (key === SYMBOL_STORE)\n return true;\n if (key === SYMBOL_STORE_TARGET)\n return target;\n if (key === SYMBOL_STORE_KEYS) {\n if (isListenable()) {\n const AI = getNodeExisting(target);\n AI.keys || (AI.keys = getNodeKeys(AI));\n AI.keys.listen();\n AI.keys.observable.get();\n }\n return;\n }\n if (key === SYMBOL_STORE_VALUES) {\n if (isListenable()) {\n const AI = getNodeExisting(target);\n AI.values || (AI.values = getNodeValues(AI));\n AI.values.listen();\n AI.values.observable.get();\n }\n return;\n }\n if (key === SYMBOL_STORE_OBSERVABLE) {\n return (key) => {\n key = (typeof key === 'number') ? String(key) : key;\n const AI = getNodeExisting(target);\n const getter = AI.AT?.get(key);\n if (getter)\n return getter.bind(AI.store);\n AI.AJ || (AI.AJ = new StoreMap());\n const value = target[key];\n const property = AI.AJ.get(key) || AI.AJ.AH(key, getNodeProperty(AI, key, value));\n const options = AI.equals ? { equals: AI.equals } : undefined;\n property.observable || (property.observable = getNodeObservable(AI, value, options));\n const observable = readable(property.observable);\n return observable;\n };\n }\n }\n if (UNREACTIVE_KEYS.has(key))\n return target[key];\n const AI = getNodeExisting(target);\n const getter = AI.AT?.get(key);\n const value = getter || target[key];\n AI.AJ || (AI.AJ = new StoreMap());\n const listenable = isListenable();\n const proxiable = isProxiable(value);\n const property = listenable || proxiable ? AI.AJ.get(key) || AI.AJ.AH(key, getNodeProperty(AI, key, value)) : undefined;\n if (property?.AI) {\n lazySetAdd(property.AI, 'AO', AI);\n }\n if (property && listenable) {\n const options = AI.equals ? { equals: AI.equals } : undefined;\n property.listen();\n property.observable || (property.observable = getNodeObservable(AI, value, options));\n property.observable.get();\n }\n if (getter) {\n return getter.call(AI.store);\n }\n else {\n if (typeof value === 'function' && value === Array.prototype[key]) {\n return function () {\n return value.apply(AI.store, arguments);\n };\n }\n return property?.AI?.store || value;\n }\n },\n set: (target, key, value) => {\n value = getTarget(value);\n const AI = getNodeExisting(target);\n const setter = AI.AU?.get(key);\n if (setter) {\n setter.call(AI.store, value);\n }\n else {\n const targetIsArray = isArray(target);\n const valuePrev = target[key];\n const hadProperty = !!valuePrev || (key in target);\n const equals = AI.equals || is;\n if (hadProperty && equals(value, valuePrev) && (key !== 'length' || !targetIsArray))\n return true; // Array.prototype.length is special, it gets updated AA this trap is called, we need to special-case it...\n const lengthPrev = targetIsArray && target['length'];\n target[key] = value;\n const lengthNext = targetIsArray && target['length'];\n if (targetIsArray && key !== 'length' && lengthPrev !== lengthNext) { // Inferring updating the length property, since it happens implicitly\n AI.AJ?.get('length')?.observable?.set(lengthNext);\n }\n AI.values?.observable.set(0);\n if (!hadProperty) {\n AI.keys?.observable.set(0);\n AI.has?.get(key)?.observable.set(true);\n }\n const property = AI.AJ?.get(key);\n if (property?.AI) {\n lazySetDelete(property.AI, 'AO', AI);\n }\n if (property) {\n property.observable?.set(value);\n property.AI = isProxiable(value) ? NODES.get(value) || getNode(value, key, AI) : undefined;\n }\n if (property?.AI) {\n lazySetAdd(property.AI, 'AO', AI);\n }\n if (StoreListenersRoots.AK) {\n StoreListenersRoots.AR(property?.AI, AI, key);\n }\n if (StoreListenersRegular.AK) {\n StoreListenersRegular.V(AI);\n }\n if (targetIsArray && key === 'length') { // Inferring deleting keys, since it happens implicitly\n const lengthPrev = Number(valuePrev);\n const lengthNext = Number(value);\n for (let i = lengthNext; i < lengthPrev; i++) {\n if (i in target)\n continue;\n STORE_TRAPS.deleteProperty(target, `${i}`, true);\n }\n }\n }\n return true;\n },\n deleteProperty: (target, key, _force) => {\n const hasProperty = (key in target);\n if (!_force && !hasProperty)\n return true;\n const deleted = Reflect.deleteProperty(target, key);\n if (!deleted)\n return false;\n const AI = getNodeExisting(target);\n AI.AT?.delete(key);\n AI.AU?.delete(key);\n AI.keys?.observable.set(0);\n AI.values?.observable.set(0);\n AI.has?.get(key)?.observable.set(false);\n const property = AI.AJ?.get(key);\n if (StoreListenersRoots.AK) {\n StoreListenersRoots.AR(property?.AI, AI, key);\n }\n if (property?.AI) {\n lazySetDelete(property.AI, 'AO', AI);\n }\n if (property) {\n property.observable?.set(undefined);\n property.AI = undefined;\n }\n if (StoreListenersRegular.AK) {\n StoreListenersRegular.V(AI);\n }\n return true;\n },\n defineProperty: (target, key, descriptor) => {\n const AI = getNodeExisting(target);\n const equals = AI.equals || is;\n const hadProperty = (key in target);\n const descriptorPrev = Reflect.getOwnPropertyDescriptor(target, key);\n if ('value' in descriptor && isStore(descriptor.value)) {\n descriptor = { ...descriptor, value: getTarget(descriptor.value) };\n }\n if (descriptorPrev && isEqualDescriptor(descriptorPrev, descriptor, equals))\n return true;\n const defined = Reflect.defineProperty(target, key, descriptor);\n if (!defined)\n return false;\n if (!descriptor.get) {\n AI.AT?.delete(key);\n }\n else if (descriptor.get) {\n AI.AT || (AI.AT = new StoreMap());\n AI.AT.set(key, descriptor.get);\n }\n if (!descriptor.set) {\n AI.AU?.delete(key);\n }\n else if (descriptor.set) {\n AI.AU || (AI.AU = new StoreMap());\n AI.AU.set(key, descriptor.set);\n }\n if (hadProperty !== !!descriptor.enumerable) {\n AI.keys?.observable.set(0);\n }\n AI.has?.get(key)?.observable.set(true);\n const property = AI.AJ?.get(key);\n if (StoreListenersRoots.AK) {\n StoreListenersRoots.AR(property?.AI, AI, key);\n }\n if (property?.AI) {\n lazySetDelete(property.AI, 'AO', AI);\n }\n if (property) {\n if ('get' in descriptor) {\n property.observable?.set(descriptor.get);\n property.AI = undefined;\n }\n else {\n const value = descriptor.value;\n property.observable?.set(value);\n property.AI = isProxiable(value) ? NODES.get(value) || getNode(value, key, AI) : undefined;\n }\n }\n if (property?.AI) {\n lazySetAdd(property.AI, 'AO', AI);\n }\n if (StoreListenersRoots.AK) {\n StoreListenersRoots.AR(property?.AI, AI, key);\n }\n if (StoreListenersRegular.AK) {\n StoreListenersRegular.V(AI);\n }\n return true;\n },\n has: (target, key) => {\n if (key === SYMBOL_STORE)\n return true;\n if (key === SYMBOL_STORE_TARGET)\n return true;\n const value = (key in target);\n if (isListenable()) {\n const AI = getNodeExisting(target);\n AI.has || (AI.has = new StoreMap());\n const has = AI.has.get(key) || AI.has.AH(key, getNodeHas(AI, key, value));\n has.listen();\n has.observable.get();\n }\n return value;\n },\n ownKeys: (target) => {\n const keys = Reflect.ownKeys(target);\n if (isListenable()) {\n const AI = getNodeExisting(target);\n AI.keys || (AI.keys = getNodeKeys(AI));\n AI.keys.listen();\n AI.keys.observable.get();\n }\n return keys;\n }\n};\nconst STORE_UNTRACK_TRAPS = {\n /* API */\n has: (target, key) => {\n if (key === SYMBOL_STORE_UNTRACKED)\n return true;\n return (key in target);\n }\n};\n/* HELPERS */\nconst getNode = (value, key, parent, equals) => {\n if (isStore(value))\n return getNodeExisting(getTarget(value));\n const store = isFrozenLike(value, key, parent) ? value : new Proxy(value, STORE_TRAPS);\n const gettersAndSetters = getGettersAndSetters(value);\n const AI = { AO: parent, store };\n if (gettersAndSetters) {\n const { AT, AU } = gettersAndSetters;\n if (AT)\n AI.AT = AT;\n if (AU)\n AI.AU = AU;\n }\n if (equals === false) {\n AI.equals = nope;\n }\n else if (equals) {\n AI.equals = equals;\n }\n else if (parent?.equals) {\n AI.equals = parent.equals;\n }\n NODES.set(value, AI);\n return AI;\n};\nconst getNodeExisting = (value) => {\n const AI = NODES.get(value);\n if (!AI)\n throw new Error('Impossible');\n return AI;\n};\nconst getNodeFromStore = (store) => {\n return getNodeExisting(getTarget(store));\n};\nconst getNodeKeys = (AI) => {\n const observable = getNodeObservable(AI, 0, { equals: false });\n const keys = new StoreKeys(AI, observable);\n return keys;\n};\nconst getNodeValues = (AI) => {\n const observable = getNodeObservable(AI, 0, { equals: false });\n const values = new StoreValues(AI, observable);\n return values;\n};\nconst getNodeHas = (AI, key, value) => {\n const observable = getNodeObservable(AI, value);\n const has = new StoreHas(AI, key, observable);\n return has;\n};\nconst getNodeObservable = (AI, value, options) => {\n return new ObservableClass(value, options);\n};\nconst getNodeProperty = (AI, key, value) => {\n const observable = undefined;\n const propertyNode = isProxiable(value) ? NODES.get(value) || getNode(value, key, AI) : undefined;\n const property = new StoreProperty(AI, key, observable, propertyNode);\n AI.AJ || (AI.AJ = new StoreMap());\n AI.AJ.set(key, property);\n return property;\n};\nconst getGettersAndSetters = (value) => {\n if (isArray(value))\n return;\n let AT;\n let AU;\n const keys = Object.keys(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!descriptor)\n continue;\n const { get, set } = descriptor;\n if (get) {\n AT || (AT = new StoreMap());\n AT.set(key, get);\n }\n if (set) {\n AU || (AU = new StoreMap());\n AU.set(key, set);\n }\n if (get && !set) { // This ensures that settings throws without first reading the getter, very cheaply\n AU || (AU = new StoreMap());\n AU.set(key, throwNoSetterError);\n }\n }\n if (!AT && !AU)\n return;\n return { AT, AU };\n};\nconst getStore = (value, options) => {\n if (isStore(value))\n return value;\n const AI = NODES.get(value) || getNode(value, undefined, undefined, options?.equals);\n return AI.store;\n};\nconst getTarget = (value) => {\n if (isStore(value))\n return value[SYMBOL_STORE_TARGET];\n return value;\n};\nconst getUntracked = (value) => {\n if (!isObject(value))\n return value;\n if (isUntracked(value))\n return value;\n return new Proxy(value, STORE_UNTRACK_TRAPS);\n};\nconst isEqualDescriptor = (a, b, equals) => {\n return (!!a.configurable === !!b.configurable && !!a.enumerable === !!b.enumerable && !!a.writable === !!b.writable && equals(a.value, b.value) && a.get === b.get && a.set === b.set);\n};\nconst isFrozenLike = (value, key, parent) => {\n if (Object.isFrozen(value))\n return true;\n if (!parent || key === undefined)\n return false;\n const target = store.unwrap(parent.store);\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key);\n if (descriptor?.configurable || descriptor?.writable)\n return false;\n return true;\n};\nconst isListenable = () => {\n return !!OBSERVER;\n};\nconst isProxiable = (value) => {\n if (value === null || typeof value !== 'object')\n return false;\n if (SYMBOL_STORE in value)\n return true;\n if (SYMBOL_STORE_UNTRACKED in value)\n return false;\n if (isArray(value))\n return true;\n const prototype = Object.getPrototypeOf(value);\n if (prototype === null)\n return true;\n return (Object.getPrototypeOf(prototype) === null);\n};\nconst isUntracked = (value) => {\n if (value === null || typeof value !== 'object')\n return false;\n return (SYMBOL_STORE_UNTRACKED in value);\n};\nconst throwNoSetterError = () => {\n throw new TypeError('Cannot set property value of #<Object> which has only a getter');\n};\n/* MAIN */\n//TODO: Maybe have the \"on\" method trigger immediately too like \"$.on\", or maybe the other way around, which seems more flexible\n//TODO: Explore converting target values back to numbers (the Proxy always receives strings) whenever possible, to save memory\n//TODO: Implement \"_onRoots\" better, perhaps provding string paths instead, which should be more powerful\nconst store = (value, options) => {\n if (!isObject(value))\n return value;\n if (isUntracked(value))\n return value;\n return getStore(value, options);\n};\n/* UTILITIES */\nstore.on = (target, listener) => {\n /* VARIABLES */\n const targets = isStore(target) ? [target] : castArray(target);\n const selectors = targets.filter(isFunction);\n const AM = targets.filter(isStore).map(getNodeFromStore);\n /* ON */\n StoreListenersRegular.AK += 1;\n const disposers = selectors.map(selector => {\n let inited = false;\n return effect(() => {\n if (inited) {\n StoreListenersRegular.AL.add(listener);\n StoreScheduler.F();\n }\n inited = true;\n selector();\n }, { suspense: false, sync: true });\n });\n AM.forEach(AI => {\n lazySetAdd(AI, 'AP', listener);\n });\n /* OFF */\n return () => {\n StoreListenersRegular.AK -= 1;\n disposers.forEach(disposer => {\n disposer();\n });\n AM.forEach(AI => {\n lazySetDelete(AI, 'AP', listener);\n });\n };\n};\nstore._onRoots = (target, listener) => {\n if (!isStore(target))\n return noop;\n const AI = getNodeFromStore(target);\n if (AI.AO)\n throw new Error('Only top-level stores are supported');\n /* ON */\n StoreListenersRoots.AK += 1;\n lazySetAdd(AI, 'AQ', listener);\n /* OFF */\n return () => {\n StoreListenersRoots.AK -= 1;\n lazySetDelete(AI, 'AQ', listener);\n };\n};\nstore.reconcile = (() => {\n //TODO: Support AT, AU and symbols (symbols could be supported with Reflect.ownKeys, but that's like 2x slower)\n const getType = (value) => {\n if (isArray(value))\n return 1;\n if (isProxiable(value))\n return 2;\n return 0;\n };\n const reconcileOuter = (prev, next) => {\n const uprev = getTarget(prev);\n const unext = getTarget(next);\n reconcileInner(prev, next);\n const prevType = getType(uprev);\n const nextType = getType(unext);\n if (prevType === 1 || nextType === 1) {\n prev.length = next.length;\n }\n return prev;\n };\n const reconcileInner = (prev, next) => {\n const uprev = getTarget(prev);\n const unext = getTarget(next);\n const prevKeys = Object.keys(uprev);\n const nextKeys = Object.keys(unext);\n for (let i = 0, l = nextKeys.length; i < l; i++) {\n const key = nextKeys[i];\n const prevValue = uprev[key];\n const nextValue = unext[key];\n if (!is(prevValue, nextValue)) {\n const prevType = getType(prevValue);\n const nextType = getType(nextValue);\n if (prevType && prevType === nextType) {\n reconcileInner(prev[key], nextValue);\n if (prevType === 1) {\n prev[key].length = nextValue.length;\n }\n }\n else {\n prev[key] = nextValue;\n }\n }\n else if (prevValue === undefined && !(key in uprev)) {\n prev[key] = undefined;\n }\n }\n for (let i = 0, l = prevKeys.length; i < l; i++) {\n const key = prevKeys[i];\n if (!(key in unext)) {\n delete prev[key];\n }\n }\n return prev;\n };\n const reconcile = (prev, next) => {\n return untrack(() => {\n return reconcileOuter(prev, next);\n });\n };\n return reconcile;\n})();\nstore.untrack = (value) => {\n return getUntracked(value);\n};\nstore.unwrap = (value) => {\n return getTarget(value);\n};\n/* EXPORT */\nexport default store;\n","/* IMPORT */\nimport { OBSERVABLE_FALSE } from '../constants.js';\nimport { OWNER } from '../context.js';\nimport { readable } from '../objects/callable.js';\nimport Observable from '../objects/observable.js';\nimport { SYMBOL_SUSPENSE } from '../symbols.js';\n/* MAIN */\nconst suspended = () => {\n const suspense = OWNER.get(SYMBOL_SUSPENSE);\n if (!suspense)\n return OBSERVABLE_FALSE;\n const observable = (suspense.observable || (suspense.observable = new Observable(!!suspense.suspended)));\n return readable(observable);\n};\n/* EXPORT */\nexport default suspended;\n","/* IMPORT */\nimport Scheduler from '../objects/scheduler.async.js';\n/* MAIN */\nconst tick = () => {\n Scheduler.N();\n};\n/* EXPORT */\nexport default tick;\n","/* IMPORT */\nimport { OWNER } from '../context.js';\nimport memo from './memo.js';\nimport $ from './observable.js';\nimport resolve from './resolve.js';\n/* MAIN */\nconst tryCatch = (value, fn) => {\n const observable = $();\n return memo(() => {\n const error = observable();\n if (error) {\n const reset = () => observable(undefined);\n const options = { error, reset };\n return resolve(fn(options));\n }\n else {\n OWNER.S = observable;\n return resolve(value);\n }\n });\n};\n/* EXPORT */\nexport default tryCatch;\n","/* IMPORT */\nimport untrack from './untrack.js';\nimport { SYMBOL_UNTRACKED } from '../symbols.js';\nimport { isFunction } from '../utils.js';\nfunction untracked(fn) {\n const untracked = isFunction(fn) ? (...args) => untrack(() => fn(...args)) : () => fn;\n untracked[SYMBOL_UNTRACKED] = true;\n return untracked;\n}\n/* EXPORT */\nexport default untracked;\n","/* IMPORT */\nimport { OBSERVER, OWNER } from '../context.js';\n/* MAIN */\nconst _with = () => {\n const owner = OWNER;\n const observer = OBSERVER;\n return (fn) => {\n return owner.E(() => fn(), owner, observer);\n };\n};\n/* EXPORT */\nexport default _with;\n","/* IMPORT */\nimport batch from './batch.js';\nimport boolean from './boolean.js';\nimport cleanup from './cleanup.js';\nimport context from './context.js';\nimport disposed from './disposed.js';\nimport effect from './effect.js';\nimport _for from './for.js';\nimport get from './get.js';\nimport _if from './if.js';\nimport isBatching from './is_batching.js';\nimport isObservable from './is_observable.js';\nimport isStore from './is_store.js';\nimport memo from './memo.js';\nimport observable from './observable.js';\nimport owner from './owner.js';\nimport readonly from './readonly.js';\nimport resolve from './resolve.js';\nimport root from './root.js';\nimport selector from './selector.js';\nimport store from './store.js';\nimport suspended from './suspended.js';\nimport suspense from './suspense.js';\nimport _switch from './switch.js';\nimport ternary from './ternary.js';\nimport tick from './tick.js';\nimport tryCatch from './try_catch.js';\nimport untrack from './untrack.js';\nimport untracked from './untracked.js';\nimport _with from './with.js';\nimport { writable } from '../objects/callable.js';\nimport ObservableClass from '../objects/observable.js';\nfunction $(value, options) {\n return writable(new ObservableClass(value, options));\n}\n/* UTILITIES */\n$.batch = batch;\n$.boolean = boolean;\n$.cleanup = cleanup;\n$.context = context;\n$.disposed = disposed;\n$.effect = effect;\n$.for = _for;\n$.get = get;\n$.if = _if;\n$.isBatching = isBatching;\n$.isObservable = isObservable;\n$.isStore = isStore;\n$.memo = memo;\n$.observable = observable;\n$.owner = owner;\n$.readonly = readonly;\n$.resolve = resolve;\n$.root = root;\n$.selector = selector;\n$.store = store;\n$.suspended = suspended;\n$.suspense = suspense;\n$.switch = _switch;\n$.ternary = ternary;\n$.tick = tick;\n$.tryCatch = tryCatch;\n$.untrack = untrack;\n$.untracked = untracked;\n$.with = _with;\n/* EXPORT */\nexport default $;\n","import $oby, { untrack, cleanup, owner, } from 'oby';\nimport { createReactivityAdapter } from '@signaldb/core';\nconst obyReactivityAdapter = createReactivityAdapter({\n create: () => {\n const dep = $oby(0);\n return {\n depend: () => {\n dep();\n },\n notify: () => {\n dep(untrack(() => dep() + 1));\n },\n };\n },\n isInScope: () => !!owner(),\n onDispose: (callback) => {\n cleanup(callback);\n },\n});\nexport default obyReactivityAdapter;\n"],"names":["SYMBOL_CACHED","SYMBOL_OBSERVABLE","SYMBOL_OBSERVABLE_BOOLEAN","SYMBOL_OBSERVABLE_FROZEN","SYMBOL_OBSERVABLE_READABLE","SYMBOL_OBSERVABLE_WRITABLE","SYMBOL_STORE","SYMBOL_STORE_KEYS","SYMBOL_STORE_OBSERVABLE","SYMBOL_STORE_TARGET","SYMBOL_STORE_VALUES","SYMBOL_STORE_UNTRACKED","SYMBOL_SUSPENSE","SYMBOL_UNCACHED","SYMBOL_UNTRACKED","SYMBOL_UNTRACKED_UNWRAPPED","castArray","value","isArray","castError","error","is","isEqual","a","b","i","l","valueA","valueB","isFunction","isObject","isSymbol","noop","nope","frozenFunction","readableFunction","writableFunction","fn","frozen","readable","writable","DIRTY_NO","DIRTY_MAYBE_NO","DIRTY_MAYBE_YES","DIRTY_YES","OBSERVABLE_FALSE","OBSERVABLE_TRUE","UNAVAILABLE","UNINITIALIZED","lazyArrayEach","arr","lazyArrayEachRight","lazyArrayPush","obj","key","lazySetAdd","set","s","lazySetDelete","lazySetEach","onCleanup","cleanup","onDispose","owner","Owner","silent","S","deep","symbol","observer","ownerPrev","OWNER","observerPrev","OBSERVER","setOwner","setObserver","SuperRoot","BATCH","SUPER_OWNER","setBatch","M","resolve","batch","r","isObservableBoolean","isObservableFrozen","isUntracked","Scheduler$2","queue","SchedulerSync","Scheduler","Observable","options","parent","equals","J","ObservablesArray","A","P","observablesLength","observable","index","ObservablesSet","sizePrev","sizeNext","Observer","Memo","G","statusPrev","memo","boolean","Context","context","symbolOrContext","disposed","effect","Scheduler$1","Effect","suspense","resolved","Root","V","Q","fnWithDispose","DUMMY_INDEX","CacheKeyed","A5","A6","mapped","values","AB","results","resultsCached","resultsUncached","A8","cached","MappedRoot","isObservable","get","getFunction","Suspense","force","suspendedPrev","suspendedNext","notifyOwner","notifyObserver","notifySuspense","notifyRoot","root","when","condition","CacheUnkeyed","pooled","poolable","cacheNext","AC","leftovers","outer","isDuplicate","$index","suspended","$value","isStore","untrack","_for","fallback","isUnkeyed","map","next","prev","array","warmup","match","_switch","ternary","valueTrue","valueFalse","_if","isBatching","SchedulerAsync","ObservableClass","isSuperRoot","isRoot","isSuspense","isComputation","isObservableWritable","target","readonly","DisposableMap","SelectedObservable","selector","AG","sourceValue","AF","selectedValue","valuePrev","valueNext","selected","StoreMap","StoreCleanable","StoreKeys","StoreValues","StoreHas","StoreProperty","AI","StoreListenersRegular","AL","AM","traversed","traverse","listener","StoreScheduler","StoreListenersRoots","rootsSet","store","T","current","flushRegular","flushRoots","NODES","SPECIAL_SYMBOLS","UNREACTIVE_KEYS","STORE_TRAPS","isListenable","getNodeExisting","getNodeKeys","getNodeValues","getter","property","getNodeProperty","getNodeObservable","listenable","proxiable","isProxiable","getTarget","setter","targetIsArray","hadProperty","lengthPrev","lengthNext","getNode","_force","hasProperty","descriptor","descriptorPrev","isEqualDescriptor","has","getNodeHas","keys","STORE_UNTRACK_TRAPS","isFrozenLike","gettersAndSetters","getGettersAndSetters","AT","AU","getNodeFromStore","propertyNode","throwNoSetterError","getStore","getUntracked","prototype","targets","selectors","disposers","inited","disposer","getType","reconcileOuter","uprev","unext","reconcileInner","prevType","nextType","prevKeys","nextKeys","prevValue","nextValue","tick","tryCatch","$","untracked","args","_with","obyReactivityAdapter","createReactivityAdapter","dep","$oby","callback"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import $oby, {\n untrack,\n cleanup,\n owner,\n} from 'oby'\nimport { createReactivityAdapter } from '@signaldb/core'\n\nconst obyReactivityAdapter = createReactivityAdapter({\n create: () => {\n const dep = $oby(0)\n return {\n depend: () => {\n dep()\n },\n notify: () => {\n dep(untrack(() => dep() + 1))\n },\n }\n },\n isInScope: () => !!owner(),\n onDispose: (callback) => {\n cleanup(callback)\n },\n})\n\nexport default obyReactivityAdapter\n"],"mappings":";;;AAOA,IAAM,IAAuB,EAAwB;CACnD,cAAc;EACZ,IAAM,IAAM,EAAK,CAAC;EAClB,OAAO;GACL,cAAc;IACZ,EAAI;GACN;GACA,cAAc;IACZ,EAAI,QAAc,EAAI,IAAI,CAAC,CAAC;GAC9B;EACF;CACF;CACA,iBAAiB,CAAC,CAAC,EAAM;CACzB,YAAY,MAAa;EACvB,EAAQ,CAAQ;CAClB;AACF,CAAC"}
|
package/dist/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(V,Q){typeof exports=="object"&&typeof module<"u"?module.exports=Q(require("@signaldb/core")):typeof define=="function"&&define.amd?define(["@signaldb/core"],Q):(V=typeof globalThis<"u"?globalThis:V||self,V.SignalDB=Q(V.core))})(this,(function(V){"use strict";const Q=Symbol("Cached"),j=Symbol("Observable"),Ce=Symbol("Observable.Boolean"),Ke=Symbol("Observable.Frozen"),ge=Symbol("Observable.Readable"),ye=Symbol("Observable.Writable"),W=Symbol("Store"),Ue=Symbol("Store.Keys"),ve=Symbol("Store.Observable"),oe=Symbol("Store.Target"),Ee=Symbol("Store.Values"),we=Symbol("Store.Untracked"),q=Symbol("Suspense"),De=Symbol("Uncached"),Oe=Symbol("Untracked"),Qe=Symbol("Untracked.Unwrapped"),At=e=>K(e)?e:[e],dt=e=>e instanceof Error?e:typeof e=="string"?new Error(e):new Error("Unknown error"),{is:J}=Object,{isArray:K}=Array,pt=(e,t)=>{if(e.length!==t.length)return!1;for(let s=0,n=e.length;s<n;s++){const r=e[s],i=t[s];if(!J(r,i))return!1}return!0},g=e=>typeof e=="function",Re=e=>e!==null&&typeof e=="object",bt=e=>typeof e=="symbol",_e=()=>{},qe=()=>!1;function St(){if(arguments.length)throw new Error("A readonly Observable can not be updated");return this}function gt(){if(arguments.length)throw new Error("A readonly Observable can not be updated");return this.get()}function yt(e){return arguments.length?g(e)?this.C(e):this.set(e):this.get()}const P=e=>{const t=St.bind(e);return t[j]=!0,t[Ke]=!0,t},U=e=>{const t=gt.bind(e);return t[j]=!0,t[ge]=e,t},Je=e=>{const t=yt.bind(e);return t[j]=!0,t[ye]=e,t},Ye=0,ce=1,ue=2,le=3,Fe=P(!1),Et=P(!0),me=new Proxy({},new Proxy({},{get(){throw new Error("Unavailable value")}})),Ve=function(){},Te=(e,t)=>{if(e instanceof Array)for(let s=0,n=e.length;s<n;s++)t(e[s]);else e&&t(e)},he=(e,t)=>{if(e instanceof Array)for(let s=e.length-1;s>=0;s--)t(e[s]);else e&&t(e)},X=(e,t,s)=>{const n=e[t];n instanceof Array?n.push(s):n?e[t]=[n,s]:e[t]=s},v=(e,t,s)=>{const n=e[t];if(n instanceof Set)n.add(s);else if(n){if(s!==n){const r=new Set;r.add(n),r.add(s),e[t]=r}}else e[t]=s},D=(e,t,s)=>{const n=e[t];n instanceof Set?n.delete(s):n===s&&(e[t]=void 0)},Z=(e,t)=>{if(e instanceof Set)for(const s of e)t(s);else e&&t(e)},wt=e=>e.call(e),xe=e=>e.Q(!0);class k{constructor(){this.disposed=!1,this.B=void 0,this.S=void 0,this.D=void 0,this.K=void 0,this.T=void 0,this.U=void 0}catch(t,s){const{S:n}=this;if(n)return n(t),!0;if(this.parent?.catch(t,!0))return!0;if(s)return!1;throw t}Q(t){he(this.D,xe),he(this.K,xe),he(this.U,xe),he(this.B,wt),this.B=void 0,this.disposed=t,this.S=void 0,this.K=void 0,this.U=void 0}get(t){return this.context?.[t]}E(t,s,n){const r=A,i=H;$e(s),fe(n);try{return t()}catch(c){return this.catch(dt(c),!1),me}finally{$e(r),fe(i)}}}class ze extends k{constructor(){super(...arguments),this.context={}}}let z,He=new ze,H,A=He;const Ge=e=>z=e,fe=e=>H=e,$e=e=>A=e;let ae=0,je=_e;const Ot=async e=>{ae||Ge(new Promise(t=>je=t));try{return ae+=1,await e()}finally{ae-=1,ae||(Ge(void 0),je())}},We=e=>g(e)&&Ce in e,ee=e=>g(e)&&(Ke in e||!!e[ge]?.parent?.disposed),Me=e=>g(e)&&(Oe in e||Qe in e);let Rt=class{constructor(){this.A1=[],this.M=0,this.A2=!1,this.N=()=>{if(!this.A2&&!this.M&&this.A1.length)try{for(this.A2=!0;;){const t=this.A1;if(!t.length)break;this.A1=[];for(let s=0,n=t.length;s<n;s++)t[s].C()}}finally{this.A2=!1}},this.E=t=>{this.M+=1,t(),this.M-=1,this.N()},this.F=t=>{this.A1.push(t)}}};const te=new Rt;class T{constructor(t,s,n){this.K=new Set,this.value=t,n&&(this.parent=n),s?.equals!==void 0&&(this.equals=s.equals||qe)}get(){return this.parent?.disposed||(this.parent?.C(),H?.A.L(this)),this.value}set(t){const s=this.equals||J;return(this.value===Ve||!s(t,this.value))&&(this.value=t,te.M+=1,this.I(le),te.M-=1,te.N()),t}I(t){for(const s of this.K)(s.J!==ce||s.A.has(this))&&(s.sync?(s.J=Math.max(s.J,t),te.F(s)):s.I(t))}C(t){const s=t(this.value);return this.set(s)}}class _t{constructor(t){this.observer=t,this.A=[],this.P=0}Q(t){if(t){const{observer:s,A:n}=this;for(let r=0;r<n.length;r++)n[r].K.delete(s)}this.P=0}R(){const{observer:t,A:s,P:n}=this,r=s.length;if(n<r){for(let i=n;i<r;i++)s[i].K.delete(t);s.length=n}}empty(){return!this.A.length}has(t){const s=this.A.indexOf(t);return s>=0&&s<this.P}L(t){const{observer:s,A:n,P:r}=this,i=n.length;if(i>0){if(n[r]===t){this.P+=1;return}const c=n.indexOf(t);if(c>=0&&c<r)return;r<i-1?this.R():r===i-1&&n[r].K.delete(s)}t.K.add(s),n[this.P++]=t,r===128&&(s.A=new mt(s,n))}C(){const{A:t}=this;for(let s=0,n=t.length;s<n;s++)t[s].parent?.C()}}class mt{constructor(t,s){this.observer=t,this.A=new Set(s)}Q(t){for(const s of this.A)s.K.delete(this.observer)}R(){}empty(){return!this.A.size}has(t){return this.A.has(t)}L(t){const{observer:s,A:n}=this,r=n.size;t.K.add(s);const i=n.size;r!==i&&n.add(t)}C(){for(const t of this.A)t.parent?.C()}}class Be extends k{constructor(){super(),this.parent=A,this.context=A.context,this.J=le,this.A=new _t(this),A!==He&&X(this.parent,"K",this)}Q(t){this.A.Q(t),super.Q(t)}H(t){this.Q(!1),this.J=ce;try{return this.E(t,this,this)}finally{this.A.R()}}run(){throw new Error("Abstract method")}I(t){throw new Error("Abstract method")}C(){this.disposed||(this.J===ue&&this.A.C(),this.J===le?(this.J=ce,this.run(),this.J===ce?this.J=Ye:this.C()):this.J=Ye)}}class Tt extends Be{constructor(t,s){super(),this.fn=t,this.observable=new T(Ve,s,this),s?.sync===!0&&(this.sync=!0,this.C())}run(){const t=super.H(this.fn);!this.disposed&&this.A.empty()&&(this.disposed=!0),t!==me&&this.observable.set(t)}I(t){const s=this.J;s>=t||(this.J=t,s!==ue&&this.observable.I(ue))}}const x=(e,t)=>{if(ee(e))return e;if(Me(e))return P(e());{const s=new Tt(e,t);return U(s.observable)}},Pe=e=>{if(g(e)){if(ee(e)||Me(e))return!!e();if(We(e))return e;{const t=x(()=>!!e());return t[Ce]=!0,t}}else return!!e},N=e=>{X(A,"B",e)};class xt extends k{constructor(t){super(),this.parent=A,this.context={...A.context,...t},X(this.parent,"D",this)}E(t){return super.E(t,this,void 0)}}function Mt(e,t){return bt(e)?A.context[e]:new xt(e).E(t||_e)}const Bt=()=>{const e=new T(!1);return N(()=>e.set(!0)),U(e)};let Pt=class{constructor(){this.A1=[],this.A2=!1,this.A3=!1,this.N=()=>{if(!this.A2&&this.A1.length)try{for(this.A2=!0;;){const t=this.A1;if(!t.length)break;this.A1=[];for(let s=0,n=t.length;s<n;s++)t[s].C()}}finally{this.A2=!1}},this.queue=()=>{this.A3||(this.A3=!0,this.resolve())},this.resolve=()=>{queueMicrotask(()=>{queueMicrotask(()=>{z?z.finally(this.resolve):(this.A3=!1,this.N())})})},this.F=t=>{this.A1.push(t),this.queue()}}};const Ae=new Pt;class Xe extends Be{constructor(t,s){if(super(),this.fn=t,s?.suspense!==!1){const n=this.get(q);n&&(this.suspense=n)}s?.sync===!0&&(this.sync=!0),s?.sync==="init"?(this.init=!0,this.C()):this.F()}run(){const t=super.H(this.fn);g(t)&&X(this,"B",t)}F(){this.suspense?.suspended||(this.sync?this.C():Ae.F(this))}I(t){const s=this.J;s>=t||(this.J=t,(!this.sync||s!==2&&s!==3)&&this.F())}C(){this.suspense?.suspended||super.C()}}const de=(e,t)=>{const s=new Xe(e,t);return()=>s.Q(!0)};function S(e){if(g(e))return Qe in e?S(e()):Oe in e?P(S(e())):j in e?e:x(()=>S(e()));if(e instanceof Array){const t=new Array(e.length);for(let s=0,n=t.length;s<n;s++)t[s]=S(e[s]);return t}else return e}class pe extends k{constructor(t){super(),this.parent=A,this.context=A.context,t&&this.get(q)&&(this.A0=!0,v(this.parent,"T",this))}Q(t){this.A0&&D(this.parent,"T",this),super.Q(t)}E(t){const s=()=>this.Q(!0),n=()=>t(s);return super.E(n,this,void 0)}}const It=P(-1);let Nt=class extends pe{};class Lt{constructor(t){this.parent=A,this.suspense=A.get(q),this.A5=new Map,this.A6=!1,this.A7=0,this.A8=0,this.A9=0,this.cleanup=()=>{if(!this.A7||this.A7===this.A8)return;const{A5:s,A6:n}=this;s.size&&(this.A9?s.forEach((r,i)=>{r.A6!==n&&(r.Q(!0),s.delete(i))}):(this.A5.forEach(r=>{r.Q(!0)}),this.A5=new Map))},this.Q=()=>{this.suspense&&D(this.parent,"T",this.T),this.A7=this.A5.size,this.A8=0,this.A9=0,this.cleanup()},this.AA=()=>{this.A6=!this.A6,this.A8=0,this.A9=0},this.O=s=>{this.A9=s.length,this.cleanup(),this.A7=this.A9,this.A8=0},this.map=s=>{this.AA();const{A5:n,A6:r,fn:i,AB:c}=this,u=new Array(s.length);let o=!0,l=!0,p=0;for(let a=0,d=s.length;a<d;a++){const y=s[a],h=n.get(y);if(h&&h.A6!==r)l=!1,p+=1,h.A6=r,h.index?.set(a),u[a]=h.G;else{o=!1;const O=new Nt(!1);h&&N(()=>O.Q(!0)),O.E(()=>{let E=It;c&&(O.index=new T(a),E=U(O.index));const _=u[a]=S(i(y,E));O.A6=r,O.G=_,h||n.set(y,O)})}}return this.A8=p,this.O(s),o&&(u[Q]=!0),l&&(u[De]=!0),u},this.T=()=>Array.from(this.A5.values()),this.fn=t,this.AB=t.length>1,this.suspense&&v(this.parent,"T",this.T)}}const Ie=e=>g(e)&&j in e;function G(e,t=!0){return(t?g:Ie)(e)?e():e}class Ze extends k{constructor(){super(),this.parent=A,this.context={...A.context,[q]:this},X(this.parent,"U",this),this.suspended=A.get(q)?.suspended||0}A4(t){if(!this.suspended&&!t)return;const s=this.suspended,n=s+(t?1:-1);if(this.suspended=n,!!s==!!n)return;this.observable?.set(!!n);const r=o=>{Te(o.D,r),Te(o.K,i),Te(o.U,u),Z(o.T,c)},i=o=>{o instanceof Xe&&(o.J===ue||o.J===le)&&(o.init?o.C():o.F()),r(o)},c=o=>{g(o)?o().forEach(r):r(o)},u=o=>{o.A4(t)};r(this)}E(t){return super.E(t,this,void 0)}}const ke=(e,t)=>{const s=new Ze,n=Pe(e);return de(()=>s.A4(G(n)),{sync:!0}),s.E(t)},Ct=P(-1);class Kt extends pe{}class Ut{constructor(t,s){this.parent=A,this.suspense=A.get(q),this.A5=new Map,this.AC=[],this.AD=0,this.cleanup=()=>{let n=0,r=Math.max(0,this.pooled?this.AD-this.AC.length:0);this.A5.forEach(i=>{r>0&&n++<r?(i.suspended?.set(!0),this.AC.push(i)):i.Q(!0)})},this.Q=()=>{this.suspense&&D(this.parent,"T",this.T),this.A5.forEach(n=>{n.Q(!0)}),this.AC.forEach(n=>{n.Q(!0)})},this.map=n=>{const{A5:r,fn:i,AB:c}=this,u=new Map,o=new Array(n.length),l=this.AC,p=this.pooled;let a=!0,d=!0,y=[];if(r.size)for(let h=0,O=n.length;h<O;h++){const E=n[h],_=r.get(E);_?(d=!1,r.delete(E),u.set(E,_),_.index?.set(h),o[h]=_.G):y.push(h)}else y=new Array(o.length);e:for(let h=0,O=y.length;h<O;h++){const E=y[h]||h,_=n[E],ft=u.has(_);if(!ft)for(const[ie,F]of r.entries()){r.delete(ie),u.set(_,F),F.index?.set(E),F.value?.set(_),o[E]=F.G;continue e}a=!1;let R;p&&l.length?(R=l.pop(),R.index?.set(E),R.value?.set(_),R.suspended?.set(!1),o[E]=R.G):(R=new Kt(!1),R.E(()=>{let ie=Ct;c&&(R.index=new T(E),ie=U(R.index));const F=R.value=new T(_),Le=p?new T(!1):void 0,at=x(()=>G(F.get())),as=o[E]=Le?ke(()=>Le.get(),()=>S(i(at,ie))):S(i(at,ie));R.value=F,R.G=as,R.suspended=Le})),ft?N(()=>R.Q(!0)):u.set(_,R)}return this.AD=Math.max(this.AD,o.length),this.cleanup(),this.A5=u,a&&(o[Q]=!0),d&&(o[De]=!0),o},this.T=()=>[...this.A5.values(),...this.AC.values()],this.fn=t,this.AB=t.length>1,this.pooled=s,this.suspense&&v(this.parent,"T",this.T)}}const m=e=>Re(e)&&W in e;function I(e){if(g(e)){const t=H;if(t)try{return fe(void 0),e()}finally{fe(t)}else return e()}else return e}function vt(e,t,s=[],n){if(K(e)&&!m(e)){const r=!!n?.unkeyed;return P(I(()=>e.length?e.map((i,c)=>S(t(r&&!Ie(i)?P(i):i,c))):S(s)))}else{const{Q:r,map:i}=n?.unkeyed?new Ut(t,!!n.pooled):new Lt(t);N(r);const c=x(()=>G(e)??[],{equals:(u,o)=>!!u&&!!o&&!u.length&&!o.length&&!m(u)&&!m(o)});return x(()=>{const u=c();return m(u)&&u[Ee],I(()=>{const o=i(u);return o?.length?o:S(s)})},{equals:(u,o)=>K(u)&&!!u[Q]&&K(o)&&pt(u,o)})}}const et=e=>(I(e),e),Ne=(e,t,s)=>{for(let n=0,r=t.length;n<r;n++){const i=t[n];if(i.length===1)return i[0];if(J(i[0],e))return i[1]}return s};function tt(e,t,s){if(g(e)&&!ee(e)&&!Me(e)){if(We(e))return x(()=>S(Ne(e(),t,s)));const r=et(x(()=>Ne(e(),t,s)));return ee(r)?P(S(r())):x(()=>S(G(r)))}else{const r=Ne(G(e),t,s);return P(S(r))}}const st=(e,t,s)=>{const n=Pe(e);return tt(n,[[!0,t],[s]])};function Dt(e,t,s){return st(e,t,s)}const nt=()=>!!z||Ae.A3||Ae.A2||te.A2;function rt(e,t){return Je(new T(e,t))}const it=()=>{const e=A instanceof ze,t=A instanceof pe,s=A instanceof Ze,n=A instanceof Be;return{isSuperRoot:e,isRoot:t,isSuspense:s,isComputation:n}},Qt=e=>g(e)&&ye in e,qt=e=>g(e)?e[ge]||e[ye]||me:e,Jt=e=>Qt(e)?U(qt(e)):e,Yt=e=>new pe(!0).E(e);class Ft extends Map{constructor(){super(...arguments),this.disposed=!1}}class Vt extends T{constructor(){super(...arguments),this.AE=1}call(){this.AF.disposed||(this.AE-=1,!this.AE&&this.AF.delete(this.AG))}}const zt=e=>{if(e=et(x(e)),ee(e)){const r=I(e);return i=>i===r?Et:Fe}let t=new Ft,s=I(e);return de(()=>{const r=s,i=e();J(r,i)||(s=i,t.get(r)?.set(!1),t.get(i)?.set(!0))},{suspense:!1,sync:!0}),N(()=>{t.disposed=!0}),r=>{let i=t.get(r);return i?i.AE+=1:(i=new Vt(r===s),i.AF=t,i.AG=r,t.set(r,i)),N(i),U(i)}};class L extends Map{AH(t,s){return super.set(t,s),s}}class be{constructor(){this.AE=0}listen(){this.AE+=1,N(this)}call(){this.AE-=1,!this.AE&&this.Q()}Q(){}}class Ht extends be{constructor(t,s){super(),this.parent=t,this.observable=s}Q(){this.parent.keys=void 0}}class Gt extends be{constructor(t,s){super(),this.parent=t,this.observable=s}Q(){this.parent.values=void 0}}class $t extends be{constructor(t,s,n){super(),this.parent=t,this.key=s,this.observable=n}Q(){this.parent.has?.delete(this.key)}}class jt extends be{constructor(t,s,n,r){super(),this.parent=t,this.key=s,this.observable=n,this.AI=r}Q(){this.parent.AJ?.delete(this.key)}}const w={AK:0,AL:new Set,AM:new Set,AN:()=>{const{AL:e,AM:t}=w,s=new Set,n=r=>{s.has(r)||(s.add(r),Z(r.AO,n),Z(r.AP,i=>{e.add(i)}))};return t.forEach(n),()=>{e.forEach(r=>{r()})}},V:e=>{w.AM.add(e),M.F()},reset:()=>{w.AL=new Set,w.AM=new Set}},b={AK:0,AM:new Map,AN:()=>{const{AM:e}=b;return()=>{e.forEach((t,s)=>{const n=Array.from(t);Z(s.AQ,r=>{r(n)})})}},V:(e,t)=>{const s=b.AM.get(e)||new Set;s.add(t),b.AM.set(e,s),M.F()},AR:(e,t,s)=>{if(t.AO){const n=new Set,r=i=>{n.has(i)||(n.add(i),Z(i.AO,c=>{c.AO||b.V(c,i.store),r(c)}))};r(e||t)}else{const n=e?.store||I(()=>t.store[s]);b.V(t,n)}},reset:()=>{b.AM=new Map}},M={AK:!1,N:()=>{const e=w.AN(),t=b.AN();M.reset(),e(),t()},AS:()=>{nt()?z?z.finally(M.AS):setTimeout(M.AS,0):M.N()},reset:()=>{M.AK=!1,w.reset(),b.reset()},F:()=>{M.AK||(M.AK=!0,queueMicrotask(M.AS))}},$=new WeakMap,Wt=new Set([W,Ue,ve,oe,Ee]),Xt=new Set(["__proto__","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","prototype","constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toSource","toString","valueOf"]),ot={get:(e,t)=>{if(Wt.has(t)){if(t===W)return!0;if(t===oe)return e;if(t===Ue){if(ne()){const o=B(e);o.keys||(o.keys=ut(o)),o.keys.listen(),o.keys.observable.get()}return}if(t===Ee){if(ne()){const o=B(e);o.values||(o.values=kt(o)),o.values.listen(),o.values.observable.get()}return}if(t===ve)return o=>{o=typeof o=="number"?String(o):o;const l=B(e),p=l.AT?.get(o);if(p)return p.bind(l.store);l.AJ||(l.AJ=new L);const a=e[o],d=l.AJ.get(o)||l.AJ.AH(o,lt(l,o,a)),y=l.equals?{equals:l.equals}:void 0;return d.observable||(d.observable=se(l,a,y)),U(d.observable)}}if(Xt.has(t))return e[t];const s=B(e),n=s.AT?.get(t),r=n||e[t];s.AJ||(s.AJ=new L);const i=ne(),c=re(r),u=i||c?s.AJ.get(t)||s.AJ.AH(t,lt(s,t,r)):void 0;if(u?.AI&&v(u.AI,"AO",s),u&&i){const o=s.equals?{equals:s.equals}:void 0;u.listen(),u.observable||(u.observable=se(s,r,o)),u.observable.get()}return n?n.call(s.store):typeof r=="function"&&r===Array.prototype[t]?function(){return r.apply(s.store,arguments)}:u?.AI?.store||r},set:(e,t,s)=>{s=C(s);const n=B(e),r=n.AU?.get(t);if(r)r.call(n.store,s);else{const i=K(e),c=e[t],u=!!c||t in e,o=n.equals||J;if(u&&o(s,c)&&(t!=="length"||!i))return!0;const l=i&&e.length;e[t]=s;const p=i&&e.length;i&&t!=="length"&&l!==p&&n.AJ?.get("length")?.observable?.set(p),n.values?.observable.set(0),u||(n.keys?.observable.set(0),n.has?.get(t)?.observable.set(!0));const a=n.AJ?.get(t);if(a?.AI&&D(a.AI,"AO",n),a&&(a.observable?.set(s),a.AI=re(s)?$.get(s)||Se(s,t,n):void 0),a?.AI&&v(a.AI,"AO",n),b.AK&&b.AR(a?.AI,n,t),w.AK&&w.V(n),i&&t==="length"){const d=Number(c),y=Number(s);for(let h=y;h<d;h++)h in e||ot.deleteProperty(e,`${h}`,!0)}}return!0},deleteProperty:(e,t,s)=>{const n=t in e;if(!s&&!n)return!0;if(!Reflect.deleteProperty(e,t))return!1;const i=B(e);i.AT?.delete(t),i.AU?.delete(t),i.keys?.observable.set(0),i.values?.observable.set(0),i.has?.get(t)?.observable.set(!1);const c=i.AJ?.get(t);return b.AK&&b.AR(c?.AI,i,t),c?.AI&&D(c.AI,"AO",i),c&&(c.observable?.set(void 0),c.AI=void 0),w.AK&&w.V(i),!0},defineProperty:(e,t,s)=>{const n=B(e),r=n.equals||J,i=t in e,c=Reflect.getOwnPropertyDescriptor(e,t);if("value"in s&&m(s.value)&&(s={...s,value:C(s.value)}),c&&rs(c,s,r))return!0;if(!Reflect.defineProperty(e,t,s))return!1;s.get?s.get&&(n.AT||(n.AT=new L),n.AT.set(t,s.get)):n.AT?.delete(t),s.set?s.set&&(n.AU||(n.AU=new L),n.AU.set(t,s.set)):n.AU?.delete(t),i!==!!s.enumerable&&n.keys?.observable.set(0),n.has?.get(t)?.observable.set(!0);const o=n.AJ?.get(t);if(b.AK&&b.AR(o?.AI,n,t),o?.AI&&D(o.AI,"AO",n),o)if("get"in s)o.observable?.set(s.get),o.AI=void 0;else{const l=s.value;o.observable?.set(l),o.AI=re(l)?$.get(l)||Se(l,t,n):void 0}return o?.AI&&v(o.AI,"AO",n),b.AK&&b.AR(o?.AI,n,t),w.AK&&w.V(n),!0},has:(e,t)=>{if(t===W||t===oe)return!0;const s=t in e;if(ne()){const n=B(e);n.has||(n.has=new L);const r=n.has.get(t)||n.has.AH(t,es(n,t,s));r.listen(),r.observable.get()}return s},ownKeys:e=>{const t=Reflect.ownKeys(e);if(ne()){const s=B(e);s.keys||(s.keys=ut(s)),s.keys.listen(),s.keys.observable.get()}return t}},Zt={has:(e,t)=>t===we?!0:t in e},Se=(e,t,s,n)=>{if(m(e))return B(C(e));const r=is(e,t,s)?e:new Proxy(e,ot),i=ts(e),c={AO:s,store:r};if(i){const{AT:u,AU:o}=i;u&&(c.AT=u),o&&(c.AU=o)}return n===!1?c.equals=qe:n?c.equals=n:s?.equals&&(c.equals=s.equals),$.set(e,c),c},B=e=>{const t=$.get(e);if(!t)throw new Error("Impossible");return t},ct=e=>B(C(e)),ut=e=>{const t=se(e,0,{equals:!1});return new Ht(e,t)},kt=e=>{const t=se(e,0,{equals:!1});return new Gt(e,t)},es=(e,t,s)=>{const n=se(e,s);return new $t(e,t,n)},se=(e,t,s)=>new T(t,s),lt=(e,t,s)=>{const r=re(s)?$.get(s)||Se(s,t,e):void 0,i=new jt(e,t,void 0,r);return e.AJ||(e.AJ=new L),e.AJ.set(t,i),i},ts=e=>{if(K(e))return;let t,s;const n=Object.keys(e);for(let r=0,i=n.length;r<i;r++){const c=n[r],u=Object.getOwnPropertyDescriptor(e,c);if(!u)continue;const{get:o,set:l}=u;o&&(t||(t=new L),t.set(c,o)),l&&(s||(s=new L),s.set(c,l)),o&&!l&&(s||(s=new L),s.set(c,os))}if(!(!t&&!s))return{AT:t,AU:s}},ss=(e,t)=>m(e)?e:($.get(e)||Se(e,void 0,void 0,t?.equals)).store,C=e=>m(e)?e[oe]:e,ns=e=>!Re(e)||ht(e)?e:new Proxy(e,Zt),rs=(e,t,s)=>!!e.configurable==!!t.configurable&&!!e.enumerable==!!t.enumerable&&!!e.writable==!!t.writable&&s(e.value,t.value)&&e.get===t.get&&e.set===t.set,is=(e,t,s)=>{if(Object.isFrozen(e))return!0;if(!s||t===void 0)return!1;const n=Y.unwrap(s.store),r=Reflect.getOwnPropertyDescriptor(n,t);return!(r?.configurable||r?.writable)},ne=()=>!!H,re=e=>{if(e===null||typeof e!="object")return!1;if(W in e)return!0;if(we in e)return!1;if(K(e))return!0;const t=Object.getPrototypeOf(e);return t===null?!0:Object.getPrototypeOf(t)===null},ht=e=>e===null||typeof e!="object"?!1:we in e,os=()=>{throw new TypeError("Cannot set property value of #<Object> which has only a getter")},Y=(e,t)=>!Re(e)||ht(e)?e:ss(e,t);Y.on=(e,t)=>{const s=m(e)?[e]:At(e),n=s.filter(g),r=s.filter(m).map(ct);w.AK+=1;const i=n.map(c=>{let u=!1;return de(()=>{u&&(w.AL.add(t),M.F()),u=!0,c()},{suspense:!1,sync:!0})});return r.forEach(c=>{v(c,"AP",t)}),()=>{w.AK-=1,i.forEach(c=>{c()}),r.forEach(c=>{D(c,"AP",t)})}},Y._onRoots=(e,t)=>{if(!m(e))return _e;const s=ct(e);if(s.AO)throw new Error("Only top-level stores are supported");return b.AK+=1,v(s,"AQ",t),()=>{b.AK-=1,D(s,"AQ",t)}},Y.reconcile=(()=>{const e=r=>K(r)?1:re(r)?2:0,t=(r,i)=>{const c=C(r),u=C(i);s(r,i);const o=e(c),l=e(u);return(o===1||l===1)&&(r.length=i.length),r},s=(r,i)=>{const c=C(r),u=C(i),o=Object.keys(c),l=Object.keys(u);for(let p=0,a=l.length;p<a;p++){const d=l[p],y=c[d],h=u[d];if(J(y,h))y===void 0&&!(d in c)&&(r[d]=void 0);else{const O=e(y),E=e(h);O&&O===E?(s(r[d],h),O===1&&(r[d].length=h.length)):r[d]=h}}for(let p=0,a=o.length;p<a;p++){const d=o[p];d in u||delete r[d]}return r};return(r,i)=>I(()=>t(r,i))})(),Y.untrack=e=>ns(e),Y.unwrap=e=>C(e);const cs=()=>{const e=A.get(q);if(!e)return Fe;const t=e.observable||(e.observable=new T(!!e.suspended));return U(t)},us=()=>{Ae.N()},ls=(e,t)=>{const s=rt();return x(()=>{const n=s();return n?S(t({error:n,reset:()=>s(void 0)})):(A.S=s,S(e))})};function hs(e){const t=g(e)?(...s)=>I(()=>e(...s)):()=>e;return t[Oe]=!0,t}const fs=()=>{const e=A,t=H;return s=>e.E(()=>s(),e,t)};function f(e,t){return Je(new T(e,t))}return f.batch=Ot,f.boolean=Pe,f.cleanup=N,f.context=Mt,f.disposed=Bt,f.effect=de,f.for=vt,f.get=G,f.if=Dt,f.isBatching=nt,f.isObservable=Ie,f.isStore=m,f.memo=x,f.observable=rt,f.owner=it,f.readonly=Jt,f.resolve=S,f.root=Yt,f.selector=zt,f.store=Y,f.suspended=cs,f.suspense=ke,f.switch=tt,f.ternary=st,f.tick=us,f.tryCatch=ls,f.untrack=I,f.untracked=hs,f.with=fs,V.createReactivityAdapter({create:()=>{const e=f(0);return{depend:()=>{e()},notify:()=>{e(I(()=>e()+1))}}},isInScope:()=>!!it(),onDispose:e=>{N(e)}})}));
|
|
2
|
-
//# sourceMappingURL=index.umd.js.map
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t(require("oby"),require("@signaldb/core")):typeof define==`function`&&define.amd?define([`oby`,`@signaldb/core`],t):(e=typeof globalThis<`u`?globalThis:e||self,e.SignalDB=t(e.oby,e._signaldb_core))})(this,function(e,t){var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=a(t),l=0,u=c.length,d;l<u;l++)d=c[l],!s.call(e,d)&&d!==n&&r(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(o=i(t,d))||o.enumerable});return e};return e=((e,t,i)=>(i=e==null?{}:n(o(e)),c(t||!e||!e.__esModule?r(i,`default`,{value:e,enumerable:!0}):i,e)))(e),(0,t.createReactivityAdapter)({create:()=>{let t=(0,e.default)(0);return{depend:()=>{t()},notify:()=>{t((0,e.untrack)(()=>t()+1))}}},isInScope:()=>!!(0,e.owner)(),onDispose:t=>{(0,e.cleanup)(t)}})});
|
|
2
|
+
//# sourceMappingURL=index.umd.js.map
|