ccstate 4.6.0 → 4.7.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.cjs CHANGED
@@ -360,12 +360,17 @@ function tryGetCached(readComputed, computed$, context, mutation) {
360
360
  if (!signalState) {
361
361
  return undefined;
362
362
  }
363
- if (!(mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) && signalState.mounted) {
363
+
364
+ // If a computed is marked as potentially dirty, we should perform a
365
+ // thorough epoch check. Alternatively, we can check the mounted state since
366
+ // a mounted computed is always re-evaluated immediately.
367
+ var mayDirty = mutation === null || mutation === void 0 ? void 0 : mutation.potentialDirtyIds.has(computed$.id);
368
+ if (!mayDirty && signalState.mounted) {
364
369
  return signalState;
365
370
  }
366
371
  if (checkEpoch(readComputed, signalState, context, mutation)) {
367
- if (mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) {
368
- mutation.dirtyMarkers["delete"](computed$.id);
372
+ if (mayDirty) {
373
+ mutation === null || mutation === void 0 || mutation.potentialDirtyIds["delete"](computed$.id);
369
374
  }
370
375
  return signalState;
371
376
  }
@@ -438,6 +443,7 @@ function evaluateComputed(readSignal, mount, unmount, computed$, context, mutati
438
443
  return computedState.abortController.signal;
439
444
  }
440
445
  });
446
+ mutation === null || mutation === void 0 || mutation.potentialDirtyIds["delete"](computed$.id);
441
447
  cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);
442
448
  if (!shouldDistinct(computed$, evalVal, context)) {
443
449
  computedState.val = evalVal;
@@ -446,6 +452,10 @@ function evaluateComputed(readSignal, mount, unmount, computed$, context, mutati
446
452
  return computedState;
447
453
  }
448
454
 
455
+ // Dirty markers are just 'potentially' dirty because we don't know if
456
+ // dependencies result will change. Pushing a computed to dirty markers doesn't
457
+ // mean it will re-evaluate immediately, just marks it for epoch checking in
458
+ // #tryGetCached. So the propagation is greedy to mark all dependants as dirty
449
459
  function pushDirtyMarkers(signalState, context, mutation) {
450
460
  var _signalState$mounted$, _signalState$mounted;
451
461
  var queue = Array.from((_signalState$mounted$ = (_signalState$mounted = signalState.mounted) === null || _signalState$mounted === void 0 ? void 0 : _signalState$mounted.readDepts) !== null && _signalState$mounted$ !== void 0 ? _signalState$mounted$ : []);
@@ -456,7 +466,7 @@ function pushDirtyMarkers(signalState, context, mutation) {
456
466
  try {
457
467
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
458
468
  var computed$ = _step.value;
459
- mutation.dirtyMarkers.add(computed$.id);
469
+ mutation.potentialDirtyIds.add(computed$.id);
460
470
  var computedState = context.stateMap.get(computed$);
461
471
  // This computed$ is read from other computed$'s readDepts, so it must not be null and must have mounted
462
472
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -623,7 +633,7 @@ function set(readComputed, writable$, context, mutation) {
623
633
  */
624
634
  function createMutation(context, _get, _set) {
625
635
  var mutation = {
626
- dirtyMarkers: new Set(),
636
+ potentialDirtyIds: new Set(),
627
637
  pendingListeners: new Set(),
628
638
  visitor: {
629
639
  get: function get(signal$) {
@@ -754,7 +764,6 @@ var _readComputed = function readComputed(computed$, context, mutation) {
754
764
  if (cachedState) {
755
765
  return cachedState;
756
766
  }
757
- mutation === null || mutation === void 0 || mutation.dirtyMarkers["delete"](computed$.id);
758
767
  return withComputedInterceptor(function () {
759
768
  return evaluateComputed(readSignal, mount, unmount, computed$, context, mutation);
760
769
  }, computed$, (_context$interceptor = context.interceptor) === null || _context$interceptor === void 0 ? void 0 : _context$interceptor.computed);
@@ -1 +1 @@
1
- {"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"],"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 { Signal } from '../../../types/core/signal';\nimport type { 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","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 } 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 (!mutation?.dirtyMarkers.has(computed$.id) && signalState.mounted) {\n return signalState;\n }\n\n if (checkEpoch(readComputed, signalState, context, mutation)) {\n if (mutation?.dirtyMarkers.has(computed$.id)) {\n mutation.dirtyMarkers.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 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\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 const evalVal = 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 cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);\n\n if (!shouldDistinct(computed$, evalVal, context)) {\n computedState.val = evalVal;\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} from '../../../types/core/store';\nimport { shouldDistinct } from '../signal/signal';\n\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.dirtyMarkers.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 while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const oldValue = context.stateMap.get(computed$)?.val;\n oldValues.set(computed$, oldValue);\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 if (oldValues.has(computed$) && oldValues.get(computed$) === computedState.val) {\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 dirtyMarkers: 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 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 mutation?.dirtyMarkers.delete(computed$.id);\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 return readSignal(signal, context, mutation).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","checkEpoch","readComputed","computedState","mutation","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","dep","epoch","depEpoch","err","e","f","tryGetCached","computed$","signalState","dirtyMarkers","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","evalVal","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","_iterator4","_step4","_context$stateMap$get2","oldValue","_i","_Array$from","_iterator5","_step5","_computedState$mounte","_computedState$mounte2","_iterator6","_step6","_i2","_Array$from2","propagationChanges","innerSetState","signal$","newValue","_ref","_context$stateMap$get3","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.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"],"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 { Signal } from '../../../types/core/signal';\nimport type { 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","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 } 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 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\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 const evalVal = 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 mutation?.potentialDirtyIds.delete(computed$.id);\n\n cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);\n\n if (!shouldDistinct(computed$, evalVal, context)) {\n computedState.val = evalVal;\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} 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 while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const oldValue = context.stateMap.get(computed$)?.val;\n oldValues.set(computed$, oldValue);\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 if (oldValues.has(computed$) && oldValues.get(computed$) === computedState.val) {\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 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 return readSignal(signal, context, mutation).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","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","evalVal","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","_iterator4","_step4","_context$stateMap$get2","oldValue","_i","_Array$from","_iterator5","_step5","_computedState$mounte","_computedState$mounte2","_iterator6","_step6","_i2","_Array$from2","propagationChanges","innerSetState","signal$","newValue","_ref","_context$stateMap$get3","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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"}
package/core/index.js CHANGED
@@ -358,12 +358,17 @@ function tryGetCached(readComputed, computed$, context, mutation) {
358
358
  if (!signalState) {
359
359
  return undefined;
360
360
  }
361
- if (!(mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) && signalState.mounted) {
361
+
362
+ // If a computed is marked as potentially dirty, we should perform a
363
+ // thorough epoch check. Alternatively, we can check the mounted state since
364
+ // a mounted computed is always re-evaluated immediately.
365
+ var mayDirty = mutation === null || mutation === void 0 ? void 0 : mutation.potentialDirtyIds.has(computed$.id);
366
+ if (!mayDirty && signalState.mounted) {
362
367
  return signalState;
363
368
  }
364
369
  if (checkEpoch(readComputed, signalState, context, mutation)) {
365
- if (mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) {
366
- mutation.dirtyMarkers["delete"](computed$.id);
370
+ if (mayDirty) {
371
+ mutation === null || mutation === void 0 || mutation.potentialDirtyIds["delete"](computed$.id);
367
372
  }
368
373
  return signalState;
369
374
  }
@@ -436,6 +441,7 @@ function evaluateComputed(readSignal, mount, unmount, computed$, context, mutati
436
441
  return computedState.abortController.signal;
437
442
  }
438
443
  });
444
+ mutation === null || mutation === void 0 || mutation.potentialDirtyIds["delete"](computed$.id);
439
445
  cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);
440
446
  if (!shouldDistinct(computed$, evalVal, context)) {
441
447
  computedState.val = evalVal;
@@ -444,6 +450,10 @@ function evaluateComputed(readSignal, mount, unmount, computed$, context, mutati
444
450
  return computedState;
445
451
  }
446
452
 
453
+ // Dirty markers are just 'potentially' dirty because we don't know if
454
+ // dependencies result will change. Pushing a computed to dirty markers doesn't
455
+ // mean it will re-evaluate immediately, just marks it for epoch checking in
456
+ // #tryGetCached. So the propagation is greedy to mark all dependants as dirty
447
457
  function pushDirtyMarkers(signalState, context, mutation) {
448
458
  var _signalState$mounted$, _signalState$mounted;
449
459
  var queue = Array.from((_signalState$mounted$ = (_signalState$mounted = signalState.mounted) === null || _signalState$mounted === void 0 ? void 0 : _signalState$mounted.readDepts) !== null && _signalState$mounted$ !== void 0 ? _signalState$mounted$ : []);
@@ -454,7 +464,7 @@ function pushDirtyMarkers(signalState, context, mutation) {
454
464
  try {
455
465
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
456
466
  var computed$ = _step.value;
457
- mutation.dirtyMarkers.add(computed$.id);
467
+ mutation.potentialDirtyIds.add(computed$.id);
458
468
  var computedState = context.stateMap.get(computed$);
459
469
  // This computed$ is read from other computed$'s readDepts, so it must not be null and must have mounted
460
470
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -621,7 +631,7 @@ function set(readComputed, writable$, context, mutation) {
621
631
  */
622
632
  function createMutation(context, _get, _set) {
623
633
  var mutation = {
624
- dirtyMarkers: new Set(),
634
+ potentialDirtyIds: new Set(),
625
635
  pendingListeners: new Set(),
626
636
  visitor: {
627
637
  get: function get(signal$) {
@@ -752,7 +762,6 @@ var _readComputed = function readComputed(computed$, context, mutation) {
752
762
  if (cachedState) {
753
763
  return cachedState;
754
764
  }
755
- mutation === null || mutation === void 0 || mutation.dirtyMarkers["delete"](computed$.id);
756
765
  return withComputedInterceptor(function () {
757
766
  return evaluateComputed(readSignal, mount, unmount, computed$, context, mutation);
758
767
  }, computed$, (_context$interceptor = context.interceptor) === null || _context$interceptor === void 0 ? void 0 : _context$interceptor.computed);