{"version":3,"file":"index.cjs","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","../src/debug/debug-store.ts","../src/debug/console-inspector.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","import type { ComputedState, SignalState, StoreInterceptor } from '../../types/core/store';\nimport type { DebugStore, Edge, NestedAtom } from '../../types/debug/debug-store';\nimport type { Computed, State } from '../core';\nimport { StoreImpl } from '../core/store/store';\nimport { canReadAsCompute } from '../core/typing-util';\n\nexport class DebugStoreImpl extends StoreImpl implements DebugStore {\n  getReadDependencies = (atom: State<unknown> | Computed<unknown>): NestedAtom => {\n    const atomState = this.context.stateMap.get(atom);\n    if (!atomState) {\n      return [atom];\n    }\n\n    if (!('dependencies' in atomState)) {\n      return [atom];\n    }\n\n    return [\n      atom,\n      ...Array.from(atomState.dependencies).map(([key]) => {\n        return this.getReadDependencies(key);\n      }),\n    ] as NestedAtom;\n  };\n\n  getReadDependents = (atom: State<unknown> | Computed<unknown>): NestedAtom => {\n    const atomState = this.context.stateMap.get(atom);\n    if (!atomState) {\n      return [atom];\n    }\n\n    return [\n      atom,\n      ...Array.from(atomState.mounted?.readDepts ?? []).map((key) => this.getReadDependents(key)),\n    ] as NestedAtom;\n  };\n\n  isMounted = (atom: State<unknown> | Computed<unknown>): boolean => {\n    const mountState = this.stateMap.get(atom);\n    return mountState?.mounted !== undefined;\n  };\n\n  getDependenciesGraph = (computed$: Computed<unknown>): Edge[] => {\n    const stateMap = this.context.stateMap;\n    function fillDependenciesGraph(computed$: Computed<unknown>, result: Edge[]) {\n      const computedState = stateMap.get(computed$) as ComputedState<unknown>;\n      for (const [child$, epoch] of computedState.dependencies.entries()) {\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion, @typescript-eslint/no-non-null-assertion\n        const childState = stateMap.get(child$)! as SignalState<unknown>;\n        result.push([\n          {\n            signal: computed$,\n            val: computedState.val,\n            epoch: computedState.epoch,\n          },\n          {\n            signal: child$,\n            val: childState.val,\n            epoch: childState.epoch,\n          },\n          epoch,\n        ]);\n        if (canReadAsCompute(child$)) {\n          fillDependenciesGraph(child$, result);\n        }\n      }\n    }\n\n    const result: Edge[] = [];\n    fillDependenciesGraph(computed$, result);\n    return result;\n  };\n}\n\nexport function createDebugStoreInternal(interceptor?: StoreInterceptor): DebugStore {\n  return new DebugStoreImpl({\n    interceptor: interceptor,\n  });\n}\n","import type { SetArgs, StoreEventType, StoreInterceptor } from '../../types/core/store';\nimport type { DebugStore } from '../../types/debug/debug-store';\nimport type { Computed, Command, State } from '../core';\nimport { createDebugStoreInternal } from './debug-store';\n\nexport interface AtomWatch {\n  target: State<unknown> | Computed<unknown> | Command<unknown, unknown[]> | string | RegExp;\n  actions?: Set<StoreEventType>;\n}\n\nexport class ConsoleInterceptor implements StoreInterceptor {\n  constructor(private readonly watches: AtomWatch[]) {}\n\n  private shouldLog = (\n    atom: State<unknown> | Computed<unknown> | Command<unknown, unknown[]>,\n    action: StoreEventType,\n  ) => {\n    return this.watches.some((watch) => {\n      let atomMatched = false;\n      if (typeof watch.target === 'string') {\n        atomMatched = atom.toString().includes(watch.target);\n      } else if (watch.target instanceof RegExp) {\n        atomMatched = watch.target.test(atom.toString());\n      } else {\n        atomMatched = watch.target === atom;\n      }\n\n      if (!atomMatched) {\n        return false;\n      }\n\n      return !watch.actions || watch.actions.has(action);\n    });\n  };\n\n  get = <T>(atom$: State<T> | Computed<T>, fn: () => T) => {\n    if (!this.shouldLog(atom$, 'get')) {\n      fn();\n      return;\n    }\n\n    console.group('[R][GET] ' + atom$.toString());\n    console.log('ret:', fn());\n    console.groupEnd();\n  };\n\n  computed = <T>(atom$: Computed<T>, fn: () => T) => {\n    if (!this.shouldLog(atom$, 'computed')) {\n      fn();\n      return;\n    }\n\n    console.group('[R][CPT] ' + atom$.toString());\n    console.log('ret:', fn());\n    console.groupEnd();\n  };\n\n  set = <T, Args extends SetArgs<T, unknown[]>>(atom$: State<T> | Command<T, Args>, fn: () => T, ...args: Args) => {\n    if (!this.shouldLog(atom$ as unknown as State<T>, 'set')) {\n      fn();\n      return;\n    }\n\n    console.group('[R][SET] ' + atom$.toString(), '(', ...args, ')');\n    console.log('ret:', fn());\n    console.groupEnd();\n  };\n\n  mount = <T>(atom$: State<T> | Computed<T>) => {\n    if (!this.shouldLog(atom$, 'mount')) {\n      return;\n    }\n\n    console.log('[R][MNT] ' + atom$.toString());\n  };\n\n  unmount = <T>(atom$: State<T> | Computed<T>) => {\n    if (!this.shouldLog(atom$, 'unmount')) {\n      return;\n    }\n\n    console.log('[R][UNM] ' + atom$.toString());\n  };\n}\n\nexport function createDebugStore(\n  watches: (AtomWatch | string | RegExp | State<unknown> | Computed<unknown> | Command<unknown, unknown[]>)[] = [],\n  defaultActions?: StoreEventType[],\n): DebugStore {\n  const parsedDefaultActions = defaultActions ? new Set(defaultActions) : undefined;\n\n  const parsedWatches = watches.map((watch): AtomWatch => {\n    if (typeof watch === 'string' || watch instanceof RegExp) {\n      return { target: watch, actions: parsedDefaultActions };\n    }\n\n    if ('target' in watch) {\n      return watch;\n    }\n\n    return { target: watch, actions: parsedDefaultActions };\n  });\n\n  const interceptor = new ConsoleInterceptor(parsedWatches);\n  return createDebugStoreInternal(interceptor);\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","DebugStoreImpl","_StoreImpl","_callSuper","_toConsumableArray","map","_ref2","getReadDependencies","_atomState$mounted$re","_atomState$mounted","getReadDependents","mountState","fillDependenciesGraph","child$","childState","_inherits","createDebugStoreInternal","ConsoleInterceptor","watches","action","some","watch","atomMatched","target","includes","RegExp","test","actions","atom$","shouldLog","console","group","log","groupEnd","_console","createDebugStore","defaultActions","parsedDefaultActions","parsedWatches"],"mappings":"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"}