ccstate 4.13.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/core/signal/factory.ts","../../src/core/interceptor.ts","../../src/core/typing-util.ts","../../src/core/signal/signal.ts","../../src/core/signal/computed.ts","../../src/core/store/set.ts","../../src/core/signal/state.ts","../../src/core/store/sub.ts","../../src/core/store/store.ts"],"sourcesContent":["import type { Computed, Command, Read, State, Write } from '../../../types/core/signal';\n\ninterface Options {\n debugLabel?: string;\n}\n\nlet globalId = 0;\n\nconst generateToString = (id: number, prefix: string, debugLabel?: string) => {\n const label = `${prefix}${String(id)}${debugLabel ? ':' + debugLabel : ''}`;\n return () => label;\n};\n\nexport function state<T>(init: T, options?: Options): State<T> {\n const id = globalId++;\n const ret: State<T> = {\n id,\n init,\n toString: generateToString(id, 'S', options?.debugLabel),\n };\n\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n\nexport function computed<T>(read: Read<T>, options?: Options): Computed<T> {\n const id = globalId++;\n const ret: Computed<T> = {\n id,\n read,\n toString: generateToString(id, 'CPT', options?.debugLabel),\n };\n\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n\nexport function command<T, Args extends unknown[]>(write: Write<T, Args>, options?: Options): Command<T, Args> {\n const id = globalId++;\n const ret: Command<T, Args> = {\n id,\n write,\n toString: generateToString(id, 'CMD', options?.debugLabel),\n };\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n","import type { Command, Computed, Signal, State } from '../../types/core/signal';\nimport type {\n CallbackFunc,\n ComputedState,\n InterceptorComputed,\n InterceptorGet,\n InterceptorNotify,\n InterceptorSet,\n InterceptorSub,\n InterceptorUnsub,\n SetArgs,\n} from '../../types/core/store';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport function withSetInterceptor<T, Args extends SetArgs<T, unknown[]>>(\n fn: () => T | undefined,\n writable$: State<T> | Command<T, Args>,\n interceptor: InterceptorSet | undefined,\n ...args: Args\n): T | undefined {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T | undefined>;\n const wrappedFn = () => {\n result = { called: true, data: fn() };\n return result.data;\n };\n if ('write' in writable$) {\n interceptor(writable$, wrappedFn, ...args);\n } else {\n interceptor(writable$, wrappedFn, args[0]);\n }\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGetInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withComputedInterceptor<T>(\n fn: () => ComputedState<T>,\n signal: Computed<T>,\n interceptor?: InterceptorComputed,\n): ComputedState<T> {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<ComputedState<T>>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data.val;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGeValInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withSubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorSub,\n) {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withUnsubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorUnsub,\n): void {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withNotifyInterceptor<T>(fn: () => T, callback$: CallbackFunc<T>, interceptor?: InterceptorNotify): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(callback$, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n","import type { Computed, Signal } from '../../types/core/signal';\nimport type { ComputedState, SignalState } from '../../types/core/store';\n\nexport function canReadAsCompute<T>(atom: Signal<T>): atom is Computed<T> {\n return 'read' in atom;\n}\n\nexport function isComputedState<T>(state: SignalState<T>): state is ComputedState<T> {\n return 'dependencies' in state;\n}\n","import type { Computed, Signal } from '../../../types/core/signal';\nimport type { ComputedState, StoreContext } from '../../../types/core/store';\n\nexport function currentValue<T>(signal: Signal<T>, context: StoreContext): T | undefined {\n return context.stateMap.get(signal)?.val as T | undefined;\n}\n\nexport function shouldDistinct<T>(signal: Signal<T>, value: T, context: StoreContext) {\n return currentValue(signal, context) === value;\n}\n\nexport function shouldDistinctError(signal: Computed<unknown>, context: StoreContext) {\n return (context.stateMap.get(signal) as ComputedState<unknown> | undefined)?.error !== undefined;\n}\n","import type { Computed, Getter, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mount,\n Mutation,\n ReadComputed,\n ReadSignal,\n StoreContext,\n Unmount,\n} from '../../../types/core/store';\nimport { withGeValInterceptor } from '../interceptor';\nimport { canReadAsCompute } from '../typing-util';\nimport { shouldDistinct, shouldDistinctError } from './signal';\n\nfunction checkEpoch<T>(\n readComputed: ReadComputed,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): boolean {\n for (const [dep, epoch] of computedState.dependencies.entries()) {\n const depEpoch = canReadAsCompute(dep)\n ? readComputed(dep, context, mutation).epoch\n : context.stateMap.get(dep)?.epoch;\n\n if (depEpoch !== epoch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function tryGetCached<T>(\n readComputed: ReadComputed,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> | undefined {\n const signalState = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!signalState) {\n return undefined;\n }\n\n // If a computed is marked as potentially dirty, we should perform a\n // thorough epoch check. Alternatively, we can check the mounted state since\n // a mounted computed is always re-evaluated immediately.\n const mayDirty = mutation?.potentialDirtyIds.has(computed$.id);\n if (!mayDirty && signalState.mounted) {\n return signalState;\n }\n\n if (checkEpoch(readComputed, signalState, context, mutation)) {\n if (mayDirty) {\n mutation?.potentialDirtyIds.delete(computed$.id);\n }\n return signalState;\n }\n\n return undefined;\n}\n\nfunction wrapGet<T>(\n readSignal: ReadSignal,\n mount: Mount,\n callerComputed$: Computed<T>,\n callerState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): [Getter, Map<Signal<unknown>, number>] {\n const readDeps = new Map<Signal<unknown>, number>();\n\n return [\n (dep$) => {\n const depState = readSignal(dep$, context, mutation);\n\n if (callerState.dependencies === readDeps) {\n readDeps.set(dep$, depState.epoch);\n\n const callerMounted = !!callerState.mounted;\n if (callerMounted && !depState.mounted) {\n mount(dep$, context, mutation).readDepts.add(callerComputed$);\n } else if (callerMounted && depState.mounted) {\n depState.mounted.readDepts.add(callerComputed$);\n }\n }\n\n if ('error' in depState) {\n throw depState.error;\n }\n\n return depState.val;\n },\n readDeps,\n ];\n}\n\nfunction getOrInitComputedState<T>(computed$: Computed<T>, context: StoreContext): ComputedState<T> {\n let computedState: ComputedState<T> | undefined = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!computedState) {\n computedState = {\n dependencies: new Map<Signal<unknown>, number>(),\n epoch: -1,\n } as ComputedState<T>;\n context.stateMap.set(computed$, computedState);\n }\n\n return computedState;\n}\n\nfunction cleanupMissingDependencies<T>(\n unmount: Unmount,\n computed$: Computed<T>,\n lastDeps: Map<Signal<unknown>, number>,\n currDeps: Map<Signal<unknown>, number>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const key of lastDeps.keys()) {\n if (!currDeps.has(key)) {\n const depState = context.stateMap.get(key);\n depState?.mounted?.readDepts.delete(computed$);\n unmount(key, context, mutation);\n }\n }\n}\n\ntype ComputedResult<T> =\n | {\n value: T;\n }\n | {\n error: unknown;\n };\n\nexport function evaluateComputed<T>(\n readSignal: ReadSignal,\n mount: Mount,\n unmount: Unmount,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> {\n const computedState = getOrInitComputedState(computed$, context);\n\n const lastDeps = computedState.dependencies;\n\n const [_get, dependencies] = wrapGet(readSignal, mount, computed$, computedState, context, mutation);\n computedState.dependencies = dependencies;\n\n let result: ComputedResult<T>;\n try {\n result = {\n value: computed$.read(\n function <U>(depAtom: Signal<U>) {\n return withGeValInterceptor(() => _get(depAtom), depAtom, context.interceptor?.get);\n },\n {\n get signal() {\n computedState.abortController?.abort(`abort ${computed$.debugLabel ?? 'anonymous'} atom`);\n computedState.abortController = new AbortController();\n return computedState.abortController.signal;\n },\n },\n ),\n };\n } catch (error) {\n result = {\n error,\n };\n }\n\n mutation?.potentialDirtyIds.delete(computed$.id);\n\n cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);\n\n if ('error' in result) {\n if (!shouldDistinctError(computed$, context)) {\n computedState.error = result.error;\n delete computedState.val;\n computedState.epoch += 1;\n }\n } else if (!shouldDistinct(computed$, result.value, context)) {\n computedState.val = result.value;\n delete computedState.error;\n computedState.epoch += 1;\n }\n\n return computedState;\n}\n","import type { Command, State, Computed, Signal, Updater, StateArg } from '../../../types/core/signal';\nimport type {\n Mutation,\n ReadComputed,\n StoreContext,\n StateState,\n StoreGet,\n StoreSet,\n SetArgs,\n ComputedState,\n} from '../../../types/core/store';\nimport { shouldDistinct } from '../signal/signal';\n\n// Dirty markers are just 'potentially' dirty because we don't know if\n// dependencies result will change. Pushing a computed to dirty markers doesn't\n// mean it will re-evaluate immediately, just marks it for epoch checking in\n// #tryGetCached. So the propagation is greedy to mark all dependants as dirty\nfunction pushDirtyMarkers(signalState: StateState<unknown>, context: StoreContext, mutation: Mutation) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n mutation.potentialDirtyIds.add(computed$.id);\n\n const computedState = context.stateMap.get(computed$);\n // This computed$ is read from other computed$'s readDepts, so it must not be null and must have mounted\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n for (const dep of computedState!.mounted!.readDepts) {\n nextQueue.push(dep);\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction pullEvaluate(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n for (const listener of signalState.mounted?.listeners ?? []) {\n mutation.pendingListeners.add(listener);\n }\n\n const oldValues = new Map<Computed<unknown>, unknown>();\n const oldErrors = new Map<Computed<unknown>, unknown>();\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const oldState = context.stateMap.get(computed$) as ComputedState<unknown> | undefined;\n oldValues.set(computed$, oldState?.val);\n oldErrors.set(computed$, oldState?.error);\n\n const readDepts = context.stateMap.get(computed$)?.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n queue = nextQueue;\n }\n\n queue = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const computedState = readComputed(computed$, context, mutation);\n\n const isSameWithOldValue =\n !computedState.error && oldValues.has(computed$) && oldValues.get(computed$) === computedState.val;\n const isSameError = computedState.error && Boolean(oldErrors.get(computed$));\n\n if (isSameWithOldValue || isSameError) {\n continue;\n }\n\n if (computedState.mounted?.listeners) {\n for (const listener of computedState.mounted.listeners) {\n mutation.pendingListeners.add(listener);\n }\n }\n\n const readDepts = computedState.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction propagationChanges(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n pushDirtyMarkers(signalState, context, mutation);\n pullEvaluate(readComputed, signalState, context, mutation);\n}\n\nfunction innerSetState<T>(\n readComputed: ReadComputed,\n signal$: State<T>,\n context: StoreContext,\n mutation: Mutation,\n val: StateArg<T>,\n) {\n let newValue: T;\n if (typeof val === 'function') {\n const updater = val as Updater<T>;\n newValue = updater((context.stateMap.get(signal$)?.val as T | undefined) ?? signal$.init);\n } else {\n newValue = val;\n }\n\n if (shouldDistinct(signal$, newValue, context)) {\n return;\n }\n\n const signalState = context.stateMap.get(signal$);\n if (!signalState) {\n context.stateMap.set(signal$, {\n val: newValue,\n epoch: 0,\n });\n return;\n }\n\n signalState.val = newValue;\n signalState.epoch += 1;\n propagationChanges(readComputed, signalState, context, mutation);\n\n return undefined;\n}\n\nexport function set<T, Args extends SetArgs<T, unknown[]>>(\n readComputed: ReadComputed,\n writable$: State<T> | Command<T, Args>,\n context: StoreContext,\n mutation: Mutation,\n ...args: Args\n): undefined | T {\n if ('read' in writable$) {\n return;\n }\n\n if ('write' in writable$) {\n return writable$.write(mutation.visitor, ...args);\n }\n\n innerSetState(readComputed, writable$, context, mutation, args[0]);\n return;\n}\n\n/**\n * Creates a mutation operation context. The Mutation remains unique throughout\n * the mutation cycle and can track side effects produced by this mutation operation\n *\n * This tracking is implemented by coloring the visitor function, so the Mutation\n * needs to wrap get & set functions and ensure that all get & set operations\n * executed in the mutation context come from the same Mutation\n *\n * @param context\n * @param get\n * @param set\n * @returns\n */\nexport function createMutation(context: StoreContext, get: StoreGet, set: StoreSet): Mutation {\n const mutation: Mutation = {\n potentialDirtyIds: new Set(),\n pendingListeners: new Set(),\n visitor: {\n get: <T>(signal$: Signal<T>) => {\n return get(signal$, context, mutation);\n },\n set: <T, Args extends SetArgs<T, unknown[]>>(\n signal$: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(signal$, context, ...args);\n },\n },\n };\n\n return mutation;\n}\n","import type { State } from '../../../types/core/signal';\nimport type { StateState, StoreContext } from '../../../types/core/store';\n\nexport function readState<T>(state: State<T>, context: StoreContext): StateState<T> {\n const atomState = context.stateMap.get(state);\n if (!atomState) {\n const initState = {\n val: state.init,\n epoch: 0,\n };\n context.stateMap.set(state, initState);\n return initState as StateState<T>;\n }\n\n return atomState as StateState<T>;\n}\n","import type { Command, Computed, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mounted,\n Mutation,\n ReadSignal,\n SignalState,\n StoreContext,\n} from '../../../types/core/store';\nimport { withNotifyInterceptor, withSubInterceptor, withUnsubInterceptor } from '../interceptor';\nimport { isComputedState } from '../typing-util';\n\nfunction unmountComputedDependencies<T>(\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n context.stateMap.get(dep)?.mounted?.readDepts.delete(computed$ as Computed<unknown>);\n unmount(dep, context, mutation);\n }\n}\n\nfunction mountComputedDependencies<T>(\n readSignal: ReadSignal,\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n const mounted = mount(readSignal, dep, context, mutation);\n mounted.readDepts.add(computed$ as Computed<unknown>);\n }\n}\n\nfunction initMount<T>(readSignal: ReadSignal, signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n context.interceptor?.mount?.(signal$);\n\n const signalState = readSignal(signal$, context, mutation);\n\n signalState.mounted = signalState.mounted ?? {\n listeners: new Set(),\n readDepts: new Set(),\n };\n\n if (isComputedState(signalState)) {\n mountComputedDependencies(readSignal, signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n return signalState.mounted;\n}\n\nexport function mount<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n context: StoreContext,\n mutation?: Mutation,\n): Mounted {\n const mounted = context.stateMap.get(signal$)?.mounted;\n if (mounted) {\n return mounted;\n }\n\n return initMount(readSignal, signal$, context, mutation);\n}\n\nfunction doUnmount<T>(\n signal$: Signal<T>,\n signalState: SignalState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): void {\n context.interceptor?.unmount?.(signal$);\n\n if (isComputedState(signalState)) {\n unmountComputedDependencies(signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n signalState.mounted = undefined;\n}\n\nexport function unmount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): void {\n const signalState = context.stateMap.get(signal$);\n if (!signalState?.mounted || signalState.mounted.listeners.size || signalState.mounted.readDepts.size) {\n return;\n }\n\n doUnmount(signal$, signalState, context, mutation);\n}\n\nexport function subSingleSignal<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n signal: AbortSignal,\n) {\n withSubInterceptor(\n () => {\n const mounted = mount(readSignal, signal$, context);\n mounted.listeners.add(callback$);\n\n const unsub = () => {\n withUnsubInterceptor(\n () => {\n mounted.listeners.delete(callback$);\n\n if (mounted.readDepts.size === 0 && mounted.listeners.size === 0) {\n unmount(signal$, context);\n }\n },\n signal$,\n callback$,\n context.interceptor?.unsub,\n );\n };\n\n signal.addEventListener('abort', unsub, {\n once: true,\n });\n },\n signal$,\n callback$,\n context.interceptor?.sub,\n );\n}\n\nexport function notify(context: StoreContext, mutation: Mutation) {\n const pendingListeners = mutation.pendingListeners;\n\n mutation.pendingListeners = new Set();\n\n for (const listener of pendingListeners) {\n withNotifyInterceptor(\n () => {\n return listener.write(mutation.visitor);\n },\n listener,\n context.interceptor?.notify,\n );\n }\n}\n","import type { Command, Getter, Setter, Signal, State, Computed } from '../../../types/core/signal';\nimport type {\n StateMap,\n Store,\n StoreContext,\n StoreOptions,\n SubscribeOptions,\n ComputedState,\n Mounted,\n Mutation,\n ReadComputed,\n SignalState,\n StoreGet,\n StoreSet,\n SetArgs,\n} from '../../../types/core/store';\nimport { evaluateComputed, tryGetCached } from '../signal/computed';\nimport { withComputedInterceptor, withGetInterceptor, withSetInterceptor } from '../interceptor';\nimport { createMutation, set as innerSet } from './set';\nimport { readState } from '../signal/state';\nimport { canReadAsCompute } from '../typing-util';\nimport { mount as innerMount, unmount, subSingleSignal, notify } from './sub';\n\nconst readComputed: ReadComputed = <T>(\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> => {\n const cachedState = tryGetCached(readComputed, computed$, context, mutation);\n if (cachedState) {\n return cachedState;\n }\n\n return withComputedInterceptor(\n () => {\n return evaluateComputed(readSignal, mount, unmount, computed$, context, mutation);\n },\n computed$,\n context.interceptor?.computed,\n );\n};\n\nfunction readSignal<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): SignalState<T> {\n if (canReadAsCompute(signal$)) {\n return readComputed(signal$, context, mutation);\n }\n\n return readState(signal$, context);\n}\n\nfunction mount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n return innerMount(readSignal, signal$, context, mutation);\n}\n\nfunction sub<T>(\n signals$: Signal<T>[] | Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n options?: SubscribeOptions,\n): () => void {\n if (Array.isArray(signals$) && signals$.length === 0) {\n return () => void 0;\n }\n\n const controller = new AbortController();\n const signal = options?.signal ? AbortSignal.any([controller.signal, options.signal]) : controller.signal;\n\n if (!Array.isArray(signals$)) {\n subSingleSignal(readSignal, signals$, callback$, context, signal);\n } else {\n signals$.forEach((atom) => {\n subSingleSignal(readSignal, atom, callback$, context, signal);\n });\n }\n\n return () => {\n controller.abort();\n };\n}\n\nconst get: StoreGet = (signal, context, mutation) => {\n return withGetInterceptor(\n () => {\n const signalState = readSignal(signal, context, mutation);\n if ('error' in signalState) {\n throw signalState.error as Error;\n }\n\n return signalState.val;\n },\n signal,\n context.interceptor?.get,\n );\n};\n\nconst set: StoreSet = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n context: StoreContext,\n ...args: Args\n): T | undefined => {\n return withSetInterceptor<T, Args>(\n () => {\n const mutation = createMutation(context, get, set);\n\n let ret: T | undefined;\n try {\n ret = innerSet<T, Args>(readComputed, atom, context, mutation, ...args);\n } finally {\n notify(context, mutation);\n }\n return ret;\n },\n atom,\n context.interceptor?.set,\n ...args,\n );\n};\n\nexport class StoreImpl implements Store {\n protected readonly stateMap: StateMap = new WeakMap();\n protected readonly context: StoreContext;\n\n constructor(protected readonly options?: StoreOptions) {\n this.context = {\n stateMap: this.stateMap,\n interceptor: this.options?.interceptor,\n };\n }\n\n get: Getter = <T>(atom: Signal<T>): T => {\n return get(atom, this.context);\n };\n\n set: Setter = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(atom, this.context, ...args);\n };\n\n sub(\n targets$: Signal<unknown>[] | Signal<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n return sub(targets$, cb$, this.context, options);\n }\n}\n\nexport function createStore(): Store {\n return new StoreImpl();\n}\n\nlet defaultStore: Store | undefined = undefined;\nexport function getDefaultStore(): Store {\n if (!defaultStore) {\n defaultStore = createStore();\n }\n return defaultStore;\n}\n"],"names":["globalId","generateToString","id","prefix","debugLabel","label","concat","String","state","init","options","ret","toString","computed","read","command","write","withSetInterceptor","fn","writable$","interceptor","result","called","wrappedFn","data","_len","arguments","length","args","Array","_key","apply","Error","withGetInterceptor","signal","withComputedInterceptor","val","withGeValInterceptor","withSubInterceptor","callback$","undefined","withUnsubInterceptor","withNotifyInterceptor","canReadAsCompute","atom","isComputedState","currentValue","context","_context$stateMap$get","stateMap","get","shouldDistinct","value","shouldDistinctError","_context$stateMap$get2","error","checkEpoch","readComputed","computedState","mutation","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","dep","epoch","depEpoch","err","e","f","tryGetCached","computed$","signalState","mayDirty","potentialDirtyIds","has","mounted","wrapGet","readSignal","mount","callerComputed$","callerState","readDeps","Map","dep$","depState","set","callerMounted","readDepts","add","getOrInitComputedState","cleanupMissingDependencies","unmount","lastDeps","currDeps","_iterator2","keys","_step2","key","_depState$mounted","evaluateComputed","_wrapGet","_wrapGet2","_get","depAtom","_context$interceptor","_computedState$abortC","_computed$$debugLabel","abortController","abort","AbortController","pushDirtyMarkers","_signalState$mounted$","_signalState$mounted","queue","from","nextQueue","push","pullEvaluate","_signalState$mounted$2","_signalState$mounted2","_signalState$mounted$3","_signalState$mounted3","_signalState$mounted$4","_signalState$mounted4","_iterator3","listeners","_step3","listener","pendingListeners","oldValues","oldErrors","_iterator4","_step4","oldState","_i","_Array$from","_iterator5","_step5","_computedState$mounte","_computedState$mounte2","isSameWithOldValue","isSameError","Boolean","_iterator6","_step6","_i2","_Array$from2","propagationChanges","innerSetState","signal$","newValue","_ref","updater","visitor","createMutation","Set","_len2","_key2","readState","atomState","initState","unmountComputedDependencies","_Array$from$_i","mountComputedDependencies","_Array$from2$_i","initMount","_context$interceptor$","call","doUnmount","_context$interceptor2","_context$interceptor3","size","subSingleSignal","_context$interceptor5","unsub","_context$interceptor4","addEventListener","once","sub","notify","_loop","_context$interceptor6","cachedState","innerMount","signals$","isArray","controller","AbortSignal","any","forEach","innerSet","StoreImpl","_this","_this$options","_classCallCheck","_defineProperty","WeakMap","_createClass","targets$","cb$","createStore","defaultStore","getDefaultStore"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/core/signal/factory.ts","../../src/core/interceptor.ts","../../src/core/typing-util.ts","../../src/core/signal/signal.ts","../../src/core/signal/computed.ts","../../src/core/store/set.ts","../../src/core/signal/state.ts","../../src/core/store/sub.ts","../../src/core/store/store.ts"],"sourcesContent":["import type { Computed, Command, Read, State, Write } from '../../../types/core/signal';\n\ninterface Options {\n debugLabel?: string;\n}\n\nlet globalId = 0;\n\nconst generateToString = (id: number, prefix: string, debugLabel?: string) => {\n const label = `${prefix}${String(id)}${debugLabel ? ':' + debugLabel : ''}`;\n return () => label;\n};\n\nexport function state<T>(init: T, options?: Options): State<T> {\n const id = globalId++;\n const ret: State<T> = {\n id,\n init,\n toString: generateToString(id, 'S', options?.debugLabel),\n };\n\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n\nexport function computed<T>(read: Read<T>, options?: Options): Computed<T> {\n const id = globalId++;\n const ret: Computed<T> = {\n id,\n read,\n toString: generateToString(id, 'CPT', options?.debugLabel),\n };\n\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n\nexport function command<T, Args extends unknown[]>(write: Write<T, Args>, options?: Options): Command<T, Args> {\n const id = globalId++;\n const ret: Command<T, Args> = {\n id,\n write,\n toString: generateToString(id, 'CMD', options?.debugLabel),\n };\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n","import type { Command, Computed, Signal, State } from '../../types/core/signal';\nimport type {\n ComputedState,\n InterceptorComputed,\n InterceptorGet,\n InterceptorSet,\n SetArgs,\n} from '../../types/core/store';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport function withSetInterceptor<T, Args extends SetArgs<T, unknown[]>>(\n fn: () => T | undefined,\n writable$: State<T> | Command<T, Args>,\n interceptor: InterceptorSet | undefined,\n ...args: Args\n): T | undefined {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T | undefined>;\n const wrappedFn = () => {\n result = { called: true, data: fn() };\n return result.data;\n };\n if ('write' in writable$) {\n interceptor(writable$, wrappedFn, ...args);\n } else {\n interceptor(writable$, wrappedFn, args[0]);\n }\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGetInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withComputedInterceptor<T>(\n fn: () => ComputedState<T>,\n signal: Computed<T>,\n interceptor?: InterceptorComputed,\n): ComputedState<T> {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<ComputedState<T>>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data.val;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGeValInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n","import type { Computed, Signal } from '../../types/core/signal';\nimport type { ComputedState, SignalState } from '../../types/core/store';\n\nexport function canReadAsCompute<T>(atom: Signal<T>): atom is Computed<T> {\n return 'read' in atom;\n}\n\nexport function isComputedState<T>(state: SignalState<T>): state is ComputedState<T> {\n return 'dependencies' in state;\n}\n","import type { Computed, Signal } from '../../../types/core/signal';\nimport type { ComputedState, StoreContext } from '../../../types/core/store';\n\nexport function currentValue<T>(signal: Signal<T>, context: StoreContext): T | undefined {\n return context.stateMap.get(signal)?.val as T | undefined;\n}\n\nexport function shouldDistinct<T>(signal: Signal<T>, value: T, context: StoreContext) {\n return currentValue(signal, context) === value;\n}\n\nexport function shouldDistinctError(signal: Computed<unknown>, context: StoreContext) {\n return (context.stateMap.get(signal) as ComputedState<unknown> | undefined)?.error !== undefined;\n}\n","import type { Computed, Getter, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mount,\n Mutation,\n ReadComputed,\n ReadSignal,\n StoreContext,\n Unmount,\n} from '../../../types/core/store';\nimport { withGeValInterceptor } from '../interceptor';\nimport { canReadAsCompute } from '../typing-util';\nimport { shouldDistinct, shouldDistinctError } from './signal';\n\nfunction checkEpoch<T>(\n readComputed: ReadComputed,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): boolean {\n for (const [dep, epoch] of computedState.dependencies.entries()) {\n const depEpoch = canReadAsCompute(dep)\n ? readComputed(dep, context, mutation).epoch\n : context.stateMap.get(dep)?.epoch;\n\n if (depEpoch !== epoch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function tryGetCached<T>(\n readComputed: ReadComputed,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> | undefined {\n const signalState = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!signalState) {\n return undefined;\n }\n\n // If a computed is marked as potentially dirty, we should perform a\n // thorough epoch check. Alternatively, we can check the mounted state since\n // a mounted computed is always re-evaluated immediately.\n const mayDirty = mutation?.potentialDirtyIds.has(computed$.id);\n if (!mayDirty && signalState.mounted) {\n return signalState;\n }\n\n if (checkEpoch(readComputed, signalState, context, mutation)) {\n if (mayDirty) {\n mutation?.potentialDirtyIds.delete(computed$.id);\n }\n return signalState;\n }\n\n return undefined;\n}\n\nfunction wrapGet<T>(\n readSignal: ReadSignal,\n mount: Mount,\n callerComputed$: Computed<T>,\n callerState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): [Getter, Map<Signal<unknown>, number>] {\n const readDeps = new Map<Signal<unknown>, number>();\n\n return [\n (dep$) => {\n const depState = readSignal(dep$, context, mutation);\n\n if (callerState.dependencies === readDeps) {\n readDeps.set(dep$, depState.epoch);\n\n const callerMounted = !!callerState.mounted;\n if (callerMounted && !depState.mounted) {\n mount(dep$, context, mutation).readDepts.add(callerComputed$);\n } else if (callerMounted && depState.mounted) {\n depState.mounted.readDepts.add(callerComputed$);\n }\n }\n\n if ('error' in depState) {\n throw depState.error;\n }\n\n return depState.val;\n },\n readDeps,\n ];\n}\n\nfunction getOrInitComputedState<T>(computed$: Computed<T>, context: StoreContext): ComputedState<T> {\n let computedState: ComputedState<T> | undefined = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!computedState) {\n computedState = {\n dependencies: new Map<Signal<unknown>, number>(),\n epoch: -1,\n } as ComputedState<T>;\n context.stateMap.set(computed$, computedState);\n }\n\n return computedState;\n}\n\nfunction cleanupMissingDependencies<T>(\n unmount: Unmount,\n computed$: Computed<T>,\n lastDeps: Map<Signal<unknown>, number>,\n currDeps: Map<Signal<unknown>, number>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const key of lastDeps.keys()) {\n if (!currDeps.has(key)) {\n const depState = context.stateMap.get(key);\n depState?.mounted?.readDepts.delete(computed$);\n unmount(key, context, mutation);\n }\n }\n}\n\ntype ComputedResult<T> =\n | {\n value: T;\n }\n | {\n error: unknown;\n };\n\nexport function evaluateComputed<T>(\n readSignal: ReadSignal,\n mount: Mount,\n unmount: Unmount,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> {\n const computedState = getOrInitComputedState(computed$, context);\n\n const lastDeps = computedState.dependencies;\n\n const [_get, dependencies] = wrapGet(readSignal, mount, computed$, computedState, context, mutation);\n computedState.dependencies = dependencies;\n\n let result: ComputedResult<T>;\n try {\n result = {\n value: computed$.read(\n function <U>(depAtom: Signal<U>) {\n return withGeValInterceptor(() => _get(depAtom), depAtom, context.interceptor?.get);\n },\n {\n get signal() {\n computedState.abortController?.abort(`abort ${computed$.debugLabel ?? 'anonymous'} atom`);\n computedState.abortController = new AbortController();\n return computedState.abortController.signal;\n },\n },\n ),\n };\n } catch (error) {\n result = {\n error,\n };\n }\n\n mutation?.potentialDirtyIds.delete(computed$.id);\n\n cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);\n\n if ('error' in result) {\n if (!shouldDistinctError(computed$, context)) {\n computedState.error = result.error;\n delete computedState.val;\n computedState.epoch += 1;\n }\n } else if (!shouldDistinct(computed$, result.value, context)) {\n computedState.val = result.value;\n delete computedState.error;\n computedState.epoch += 1;\n }\n\n return computedState;\n}\n","import type { Command, State, Computed, Signal, Updater, StateArg } from '../../../types/core/signal';\nimport type {\n Mutation,\n ReadComputed,\n StoreContext,\n StateState,\n StoreGet,\n StoreSet,\n SetArgs,\n ComputedState,\n} from '../../../types/core/store';\nimport { shouldDistinct } from '../signal/signal';\n\n// Dirty markers are just 'potentially' dirty because we don't know if\n// dependencies result will change. Pushing a computed to dirty markers doesn't\n// mean it will re-evaluate immediately, just marks it for epoch checking in\n// #tryGetCached. So the propagation is greedy to mark all dependants as dirty\nfunction pushDirtyMarkers(signalState: StateState<unknown>, context: StoreContext, mutation: Mutation) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n mutation.potentialDirtyIds.add(computed$.id);\n\n const computedState = context.stateMap.get(computed$);\n // This computed$ is read from other computed$'s readDepts, so it must not be null and must have mounted\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n for (const dep of computedState!.mounted!.readDepts) {\n nextQueue.push(dep);\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction pullEvaluate(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n const oldValues = new Map<Computed<unknown>, unknown>();\n const oldErrors = new Map<Computed<unknown>, unknown>();\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const oldState = context.stateMap.get(computed$) as ComputedState<unknown> | undefined;\n oldValues.set(computed$, oldState?.val);\n oldErrors.set(computed$, oldState?.error);\n\n const readDepts = context.stateMap.get(computed$)?.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n queue = nextQueue;\n }\n\n queue = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const computedState = readComputed(computed$, context, mutation);\n\n const isSameWithOldValue =\n !computedState.error && oldValues.has(computed$) && oldValues.get(computed$) === computedState.val;\n const isSameError = computedState.error && Boolean(oldErrors.get(computed$));\n\n if (isSameWithOldValue || isSameError) {\n continue;\n }\n\n const readDepts = computedState.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction propagationChanges(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n pushDirtyMarkers(signalState, context, mutation);\n pullEvaluate(readComputed, signalState, context, mutation);\n}\n\nfunction innerSetState<T>(\n readComputed: ReadComputed,\n signal$: State<T>,\n context: StoreContext,\n mutation: Mutation,\n val: StateArg<T>,\n) {\n let newValue: T;\n if (typeof val === 'function') {\n const updater = val as Updater<T>;\n newValue = updater((context.stateMap.get(signal$)?.val as T | undefined) ?? signal$.init);\n } else {\n newValue = val;\n }\n\n if (shouldDistinct(signal$, newValue, context)) {\n return;\n }\n\n const signalState = context.stateMap.get(signal$);\n if (!signalState) {\n context.stateMap.set(signal$, {\n val: newValue,\n epoch: 0,\n });\n return;\n }\n\n signalState.val = newValue;\n signalState.epoch += 1;\n propagationChanges(readComputed, signalState, context, mutation);\n\n return undefined;\n}\n\nexport function set<T, Args extends SetArgs<T, unknown[]>>(\n readComputed: ReadComputed,\n writable$: State<T> | Command<T, Args>,\n context: StoreContext,\n mutation: Mutation,\n ...args: Args\n): undefined | T {\n if ('read' in writable$) {\n return;\n }\n\n if ('write' in writable$) {\n return writable$.write(mutation.visitor, ...args);\n }\n\n innerSetState(readComputed, writable$, context, mutation, args[0]);\n return;\n}\n\n/**\n * Creates a mutation operation context. The Mutation remains unique throughout\n * the mutation cycle and can track side effects produced by this mutation operation\n *\n * This tracking is implemented by coloring the visitor function, so the Mutation\n * needs to wrap get & set functions and ensure that all get & set operations\n * executed in the mutation context come from the same Mutation\n *\n * @param context\n * @param get\n * @param set\n * @returns\n */\nexport function createMutation(context: StoreContext, get: StoreGet, set: StoreSet): Mutation {\n const mutation: Mutation = {\n potentialDirtyIds: new Set(),\n visitor: {\n get: <T>(signal$: Signal<T>) => {\n return get(signal$, context, mutation);\n },\n set: <T, Args extends SetArgs<T, unknown[]>>(\n signal$: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(signal$, context, ...args);\n },\n },\n };\n\n return mutation;\n}\n","import type { State } from '../../../types/core/signal';\nimport type { StateState, StoreContext } from '../../../types/core/store';\n\nexport function readState<T>(state: State<T>, context: StoreContext): StateState<T> {\n const atomState = context.stateMap.get(state);\n if (!atomState) {\n const initState = {\n val: state.init,\n epoch: 0,\n };\n context.stateMap.set(state, initState);\n return initState as StateState<T>;\n }\n\n return atomState as StateState<T>;\n}\n","import type { Computed, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mounted,\n Mutation,\n ReadSignal,\n SignalState,\n StoreContext,\n} from '../../../types/core/store';\nimport { isComputedState } from '../typing-util';\n\nfunction unmountComputedDependencies<T>(\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n context.stateMap.get(dep)?.mounted?.readDepts.delete(computed$ as Computed<unknown>);\n unmount(dep, context, mutation);\n }\n}\n\nfunction mountComputedDependencies<T>(\n readSignal: ReadSignal,\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n const mounted = mount(readSignal, dep, context, mutation);\n mounted.readDepts.add(computed$ as Computed<unknown>);\n }\n}\n\nfunction initMount<T>(readSignal: ReadSignal, signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n context.interceptor?.mount?.(signal$);\n\n const signalState = readSignal(signal$, context, mutation);\n\n signalState.mounted = {\n readDepts: new Set(),\n };\n\n if (isComputedState(signalState)) {\n mountComputedDependencies(readSignal, signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n return signalState.mounted;\n}\n\nexport function mount<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n context: StoreContext,\n mutation?: Mutation,\n): Mounted {\n const mounted = context.stateMap.get(signal$)?.mounted;\n if (mounted) {\n return mounted;\n }\n\n return initMount(readSignal, signal$, context, mutation);\n}\n\nfunction doUnmount<T>(\n signal$: Signal<T>,\n signalState: SignalState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): void {\n context.interceptor?.unmount?.(signal$);\n\n if (isComputedState(signalState)) {\n unmountComputedDependencies(signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n signalState.mounted = undefined;\n}\n\nexport function unmount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): void {\n const signalState = context.stateMap.get(signal$);\n if (!signalState?.mounted || signalState.mounted.readDepts.size) {\n return;\n }\n\n doUnmount(signal$, signalState, context, mutation);\n}\n","import type { Command, Getter, Setter, Signal, State, Computed, Watch } from '../../../types/core/signal';\nimport type {\n StateMap,\n Store,\n StoreContext,\n StoreOptions,\n ComputedState,\n Mounted,\n Mutation,\n ReadComputed,\n SignalState,\n StoreGet,\n StoreSet,\n SetArgs,\n Watcher,\n StoreWatch,\n WatchOptions,\n} from '../../../types/core/store';\nimport { evaluateComputed, tryGetCached } from '../signal/computed';\nimport { withComputedInterceptor, withGetInterceptor, withSetInterceptor } from '../interceptor';\nimport { createMutation, set as innerSet } from './set';\nimport { readState } from '../signal/state';\nimport { canReadAsCompute } from '../typing-util';\nimport { mount as innerMount, unmount } from './sub';\nimport { computed } from '../signal/factory';\n\nconst readComputed: ReadComputed = <T>(\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> => {\n const cachedState = tryGetCached(readComputed, computed$, context, mutation);\n if (cachedState) {\n return cachedState;\n }\n\n return withComputedInterceptor(\n () => {\n return evaluateComputed(readSignal, mount, unmount, computed$, context, mutation);\n },\n computed$,\n context.interceptor?.computed,\n );\n};\n\nfunction readSignal<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): SignalState<T> {\n if (canReadAsCompute(signal$)) {\n return readComputed(signal$, context, mutation);\n }\n\n return readState(signal$, context);\n}\n\nfunction mount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n return innerMount(readSignal, signal$, context, mutation);\n}\n\nconst storeGet: StoreGet = (signal, context, mutation) => {\n return withGetInterceptor(\n () => {\n const signalState = readSignal(signal, context, mutation);\n if ('error' in signalState) {\n throw signalState.error as Error;\n }\n\n return signalState.val;\n },\n signal,\n context.interceptor?.get,\n );\n};\n\nconst storeSet: StoreSet = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n context: StoreContext,\n ...args: Args\n): T | undefined => {\n return withSetInterceptor<T, Args>(\n () => {\n const mutation = createMutation(context, storeGet, storeSet);\n\n return innerSet<T, Args>(readComputed, atom, context, mutation, ...args);\n },\n atom,\n context.interceptor?.set,\n ...args,\n );\n};\n\nconst storeWatch: StoreWatch = (watchFn: Watch, context: StoreContext, options?: WatchOptions) => {\n const computed$ = computed(\n (get, { signal }) => {\n let childSignal: AbortSignal | undefined;\n const obOptions = {\n get signal() {\n if (!childSignal) {\n childSignal = options?.signal ? AbortSignal.any([options.signal, signal]) : signal;\n }\n return childSignal;\n },\n };\n\n watchFn(get, obOptions);\n },\n {\n debugLabel: options?.debugLabel,\n },\n );\n\n innerMount(readSignal, computed$, context);\n\n options?.signal?.addEventListener(\n 'abort',\n () => {\n unmount(computed$, context);\n },\n {\n once: true,\n },\n );\n};\n\nexport class StoreImpl implements Store {\n protected readonly stateMap: StateMap = new WeakMap();\n protected readonly context: StoreContext;\n\n constructor(protected readonly options?: StoreOptions) {\n this.context = {\n stateMap: this.stateMap,\n interceptor: this.options?.interceptor,\n };\n }\n\n get: Getter = <T>(atom: Signal<T>): T => {\n return storeGet(atom, this.context);\n };\n\n set: Setter = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return storeSet<T, Args>(atom, this.context, ...args);\n };\n\n watch: Watcher = (watchFn: Watch, options?: WatchOptions) => {\n storeWatch(watchFn, this.context, options);\n };\n}\n\nexport function createStore(): Store {\n return new StoreImpl();\n}\n"],"names":["globalId","generateToString","id","prefix","debugLabel","label","concat","String","state","init","options","ret","toString","computed","read","command","write","withSetInterceptor","fn","writable$","interceptor","result","called","wrappedFn","data","_len","arguments","length","args","Array","_key","apply","Error","withGetInterceptor","signal","withComputedInterceptor","val","withGeValInterceptor","canReadAsCompute","atom","isComputedState","currentValue","context","_context$stateMap$get","stateMap","get","shouldDistinct","value","shouldDistinctError","_context$stateMap$get2","error","undefined","checkEpoch","readComputed","computedState","mutation","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","dep","epoch","depEpoch","err","e","f","tryGetCached","computed$","signalState","mayDirty","potentialDirtyIds","has","mounted","wrapGet","readSignal","mount","callerComputed$","callerState","readDeps","Map","dep$","depState","set","callerMounted","readDepts","add","getOrInitComputedState","cleanupMissingDependencies","unmount","lastDeps","currDeps","_iterator2","keys","_step2","key","_depState$mounted","evaluateComputed","_wrapGet","_wrapGet2","_get","depAtom","_context$interceptor","_computedState$abortC","_computed$$debugLabel","abortController","abort","AbortController","pushDirtyMarkers","_signalState$mounted$","_signalState$mounted","queue","from","nextQueue","push","pullEvaluate","_signalState$mounted$2","_signalState$mounted2","_signalState$mounted$3","_signalState$mounted3","oldValues","oldErrors","_iterator3","_step3","oldState","_i","_Array$from","_iterator4","_step4","_computedState$mounte","isSameWithOldValue","isSameError","Boolean","_i2","_Array$from2","propagationChanges","innerSetState","signal$","newValue","_ref","updater","visitor","createMutation","Set","_len2","_key2","readState","atomState","initState","unmountComputedDependencies","_Array$from$_i","mountComputedDependencies","_Array$from2$_i","initMount","_context$interceptor$","call","doUnmount","_context$interceptor2","_context$interceptor3","size","cachedState","innerMount","storeGet","storeSet","innerSet","storeWatch","watchFn","_options$signal","childSignal","obOptions","AbortSignal","any","addEventListener","once","StoreImpl","_createClass","_this","_this$options","_classCallCheck","_defineProperty","WeakMap","createStore"],"mappings":"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"}