ccstate 4.7.0 → 4.9.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
@@ -333,6 +333,16 @@ function currentValue(signal, context) {
333
333
  function shouldDistinct(signal, value, context) {
334
334
  return currentValue(signal, context) === value;
335
335
  }
336
+ function shouldDistinctError(signal, context) {
337
+ var currentState = context.stateMap.get(signal);
338
+ if (!currentState) {
339
+ return false;
340
+ }
341
+ if ('error' in currentState && currentState.error !== undefined) {
342
+ return true;
343
+ }
344
+ return false;
345
+ }
336
346
 
337
347
  function checkEpoch(readComputed, computedState, context, mutation) {
338
348
  var _iterator = _createForOfIteratorHelper(computedState.dependencies.entries()),
@@ -389,6 +399,9 @@ function wrapGet(readSignal, mount, callerComputed$, callerState, context, mutat
389
399
  depState.mounted.readDepts.add(callerComputed$);
390
400
  }
391
401
  }
402
+ if ('error' in depState) {
403
+ throw depState.error;
404
+ }
392
405
  return depState.val;
393
406
  }, readDeps];
394
407
  }
@@ -430,23 +443,39 @@ function evaluateComputed(readSignal, mount, unmount, computed$, context, mutati
430
443
  _get = _wrapGet2[0],
431
444
  dependencies = _wrapGet2[1];
432
445
  computedState.dependencies = dependencies;
433
- var evalVal = computed$.read(function (depAtom) {
434
- var _context$interceptor;
435
- return withGeValInterceptor(function () {
436
- return _get(depAtom);
437
- }, depAtom, (_context$interceptor = context.interceptor) === null || _context$interceptor === void 0 ? void 0 : _context$interceptor.get);
438
- }, {
439
- get signal() {
440
- var _computedState$abortC, _computed$$debugLabel;
441
- (_computedState$abortC = computedState.abortController) === null || _computedState$abortC === void 0 || _computedState$abortC.abort("abort ".concat((_computed$$debugLabel = computed$.debugLabel) !== null && _computed$$debugLabel !== void 0 ? _computed$$debugLabel : 'anonymous', " atom"));
442
- computedState.abortController = new AbortController();
443
- return computedState.abortController.signal;
444
- }
445
- });
446
+ var result;
447
+ try {
448
+ result = {
449
+ value: computed$.read(function (depAtom) {
450
+ var _context$interceptor;
451
+ return withGeValInterceptor(function () {
452
+ return _get(depAtom);
453
+ }, depAtom, (_context$interceptor = context.interceptor) === null || _context$interceptor === void 0 ? void 0 : _context$interceptor.get);
454
+ }, {
455
+ get signal() {
456
+ var _computedState$abortC, _computed$$debugLabel;
457
+ (_computedState$abortC = computedState.abortController) === null || _computedState$abortC === void 0 || _computedState$abortC.abort("abort ".concat((_computed$$debugLabel = computed$.debugLabel) !== null && _computed$$debugLabel !== void 0 ? _computed$$debugLabel : 'anonymous', " atom"));
458
+ computedState.abortController = new AbortController();
459
+ return computedState.abortController.signal;
460
+ }
461
+ })
462
+ };
463
+ } catch (error) {
464
+ result = {
465
+ error: error
466
+ };
467
+ }
446
468
  mutation === null || mutation === void 0 || mutation.potentialDirtyIds["delete"](computed$.id);
447
469
  cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);
448
- if (!shouldDistinct(computed$, evalVal, context)) {
449
- computedState.val = evalVal;
470
+ if ('error' in result) {
471
+ if (!shouldDistinctError(computed$, context)) {
472
+ computedState.error = result.error;
473
+ delete computedState.val;
474
+ computedState.epoch += 1;
475
+ }
476
+ } else if (!shouldDistinct(computed$, result.value, context)) {
477
+ computedState.val = result.value;
478
+ delete computedState.error;
450
479
  computedState.epoch += 1;
451
480
  }
452
481
  return computedState;
@@ -507,17 +536,19 @@ function pullEvaluate(readComputed, signalState, context, mutation) {
507
536
  _iterator3.f();
508
537
  }
509
538
  var oldValues = new Map();
539
+ var oldErrors = new Map();
510
540
  while (queue.length > 0) {
511
541
  var nextQueue = [];
512
542
  var _iterator4 = _createForOfIteratorHelper(queue),
513
543
  _step4;
514
544
  try {
515
545
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
516
- var _context$stateMap$get, _context$stateMap$get2;
546
+ var _context$stateMap$get;
517
547
  var computed$ = _step4.value;
518
- var oldValue = (_context$stateMap$get = context.stateMap.get(computed$)) === null || _context$stateMap$get === void 0 ? void 0 : _context$stateMap$get.val;
519
- oldValues.set(computed$, oldValue);
520
- var readDepts = (_context$stateMap$get2 = context.stateMap.get(computed$)) === null || _context$stateMap$get2 === void 0 || (_context$stateMap$get2 = _context$stateMap$get2.mounted) === null || _context$stateMap$get2 === void 0 ? void 0 : _context$stateMap$get2.readDepts;
548
+ var oldState = context.stateMap.get(computed$);
549
+ oldValues.set(computed$, oldState === null || oldState === void 0 ? void 0 : oldState.val);
550
+ oldErrors.set(computed$, oldState === null || oldState === void 0 ? void 0 : oldState.error);
551
+ var readDepts = (_context$stateMap$get = context.stateMap.get(computed$)) === null || _context$stateMap$get === void 0 || (_context$stateMap$get = _context$stateMap$get.mounted) === null || _context$stateMap$get === void 0 ? void 0 : _context$stateMap$get.readDepts;
521
552
  if (readDepts) {
522
553
  for (var _i = 0, _Array$from = Array.from(readDepts); _i < _Array$from.length; _i++) {
523
554
  var dep = _Array$from[_i];
@@ -542,7 +573,9 @@ function pullEvaluate(readComputed, signalState, context, mutation) {
542
573
  var _computedState$mounte, _computedState$mounte2;
543
574
  var _computed$ = _step5.value;
544
575
  var computedState = readComputed(_computed$, context, mutation);
545
- if (oldValues.has(_computed$) && oldValues.get(_computed$) === computedState.val) {
576
+ var isSameWithOldValue = !computedState.error && oldValues.has(_computed$) && oldValues.get(_computed$) === computedState.val;
577
+ var isSameError = computedState.error && Boolean(oldErrors.get(_computed$));
578
+ if (isSameWithOldValue || isSameError) {
546
579
  continue;
547
580
  }
548
581
  if ((_computedState$mounte = computedState.mounted) !== null && _computedState$mounte !== void 0 && _computedState$mounte.listeners) {
@@ -582,9 +615,9 @@ function propagationChanges(readComputed, signalState, context, mutation) {
582
615
  function innerSetState(readComputed, signal$, context, mutation, val) {
583
616
  var newValue;
584
617
  if (typeof val === 'function') {
585
- var _ref, _context$stateMap$get3;
618
+ var _ref, _context$stateMap$get2;
586
619
  var updater = val;
587
- newValue = updater((_ref = (_context$stateMap$get3 = context.stateMap.get(signal$)) === null || _context$stateMap$get3 === void 0 ? void 0 : _context$stateMap$get3.val) !== null && _ref !== void 0 ? _ref : signal$.init);
620
+ newValue = updater((_ref = (_context$stateMap$get2 = context.stateMap.get(signal$)) === null || _context$stateMap$get2 === void 0 ? void 0 : _context$stateMap$get2.val) !== null && _ref !== void 0 ? _ref : signal$.init);
588
621
  } else {
589
622
  newValue = val;
590
623
  }
@@ -799,7 +832,11 @@ function _sub(signals$, callback$, context, options) {
799
832
  var get = function get(signal, context, mutation) {
800
833
  var _context$interceptor2;
801
834
  return withGetInterceptor(function () {
802
- return readSignal(signal, context, mutation).val;
835
+ var signalState = readSignal(signal, context, mutation);
836
+ if ('error' in signalState) {
837
+ throw signalState.error;
838
+ }
839
+ return signalState.val;
803
840
  }, signal, (_context$interceptor2 = context.interceptor) === null || _context$interceptor2 === void 0 ? void 0 : _context$interceptor2.get);
804
841
  };
805
842
  var _set = function set$1(atom, context) {
@@ -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 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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"}
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 { Computed, 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\nexport function shouldDistinctError(signal: Computed<unknown>, context: StoreContext) {\n const currentState = context.stateMap.get(signal);\n if (!currentState) {\n return false;\n }\n\n if ('error' in currentState && currentState.error !== undefined) {\n return true;\n }\n\n return false;\n}\n","import type { Computed, Getter, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mount,\n Mutation,\n ReadComputed,\n ReadSignal,\n StoreContext,\n Unmount,\n} from '../../../types/core/store';\nimport { withGeValInterceptor } from '../interceptor';\nimport { canReadAsCompute } from '../typing-util';\nimport { shouldDistinct, shouldDistinctError } from './signal';\n\nfunction checkEpoch<T>(\n readComputed: ReadComputed,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): boolean {\n for (const [dep, epoch] of computedState.dependencies.entries()) {\n const depEpoch = canReadAsCompute(dep)\n ? readComputed(dep, context, mutation).epoch\n : context.stateMap.get(dep)?.epoch;\n\n if (depEpoch !== epoch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function tryGetCached<T>(\n readComputed: ReadComputed,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> | undefined {\n const signalState = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!signalState) {\n return undefined;\n }\n\n // If a computed is marked as potentially dirty, we should perform a\n // thorough epoch check. Alternatively, we can check the mounted state since\n // a mounted computed is always re-evaluated immediately.\n const mayDirty = mutation?.potentialDirtyIds.has(computed$.id);\n if (!mayDirty && signalState.mounted) {\n return signalState;\n }\n\n if (checkEpoch(readComputed, signalState, context, mutation)) {\n if (mayDirty) {\n mutation?.potentialDirtyIds.delete(computed$.id);\n }\n return signalState;\n }\n\n return undefined;\n}\n\nfunction wrapGet<T>(\n readSignal: ReadSignal,\n mount: Mount,\n callerComputed$: Computed<T>,\n callerState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): [Getter, Map<Signal<unknown>, number>] {\n const readDeps = new Map<Signal<unknown>, number>();\n\n return [\n (dep$) => {\n const depState = readSignal(dep$, context, mutation);\n\n if (callerState.dependencies === readDeps) {\n readDeps.set(dep$, depState.epoch);\n\n const callerMounted = !!callerState.mounted;\n if (callerMounted && !depState.mounted) {\n mount(dep$, context, mutation).readDepts.add(callerComputed$);\n } else if (callerMounted && depState.mounted) {\n depState.mounted.readDepts.add(callerComputed$);\n }\n }\n\n if ('error' in depState) {\n throw depState.error;\n }\n\n return depState.val;\n },\n readDeps,\n ];\n}\n\nfunction getOrInitComputedState<T>(computed$: Computed<T>, context: StoreContext): ComputedState<T> {\n let computedState: ComputedState<T> | undefined = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!computedState) {\n computedState = {\n dependencies: new Map<Signal<unknown>, number>(),\n epoch: -1,\n } as ComputedState<T>;\n context.stateMap.set(computed$, computedState);\n }\n\n return computedState;\n}\n\nfunction cleanupMissingDependencies<T>(\n unmount: Unmount,\n computed$: Computed<T>,\n lastDeps: Map<Signal<unknown>, number>,\n currDeps: Map<Signal<unknown>, number>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const key of lastDeps.keys()) {\n if (!currDeps.has(key)) {\n const depState = context.stateMap.get(key);\n depState?.mounted?.readDepts.delete(computed$);\n unmount(key, context, mutation);\n }\n }\n}\n\ntype ComputedResult<T> =\n | {\n value: T;\n }\n | {\n error: unknown;\n };\n\nexport function evaluateComputed<T>(\n readSignal: ReadSignal,\n mount: Mount,\n unmount: Unmount,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> {\n const computedState = getOrInitComputedState(computed$, context);\n\n const lastDeps = computedState.dependencies;\n\n const [_get, dependencies] = wrapGet(readSignal, mount, computed$, computedState, context, mutation);\n computedState.dependencies = dependencies;\n\n let result: ComputedResult<T>;\n try {\n result = {\n value: computed$.read(\n function <U>(depAtom: Signal<U>) {\n return withGeValInterceptor(() => _get(depAtom), depAtom, context.interceptor?.get);\n },\n {\n get signal() {\n computedState.abortController?.abort(`abort ${computed$.debugLabel ?? 'anonymous'} atom`);\n computedState.abortController = new AbortController();\n return computedState.abortController.signal;\n },\n },\n ),\n };\n } catch (error) {\n result = {\n error,\n };\n }\n\n mutation?.potentialDirtyIds.delete(computed$.id);\n\n cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);\n\n if ('error' in result) {\n if (!shouldDistinctError(computed$, context)) {\n computedState.error = result.error;\n delete computedState.val;\n computedState.epoch += 1;\n }\n } else if (!shouldDistinct(computed$, result.value, context)) {\n computedState.val = result.value;\n delete computedState.error;\n computedState.epoch += 1;\n }\n\n return computedState;\n}\n","import type { Command, State, Computed, Signal, Updater, StateArg } from '../../../types/core/signal';\nimport type {\n Mutation,\n ReadComputed,\n StoreContext,\n StateState,\n StoreGet,\n StoreSet,\n SetArgs,\n ComputedState,\n} from '../../../types/core/store';\nimport { shouldDistinct } from '../signal/signal';\n\n// Dirty markers are just 'potentially' dirty because we don't know if\n// dependencies result will change. Pushing a computed to dirty markers doesn't\n// mean it will re-evaluate immediately, just marks it for epoch checking in\n// #tryGetCached. So the propagation is greedy to mark all dependants as dirty\nfunction pushDirtyMarkers(signalState: StateState<unknown>, context: StoreContext, mutation: Mutation) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n mutation.potentialDirtyIds.add(computed$.id);\n\n const computedState = context.stateMap.get(computed$);\n // This computed$ is read from other computed$'s readDepts, so it must not be null and must have mounted\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n for (const dep of computedState!.mounted!.readDepts) {\n nextQueue.push(dep);\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction pullEvaluate(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n for (const listener of signalState.mounted?.listeners ?? []) {\n mutation.pendingListeners.add(listener);\n }\n\n const oldValues = new Map<Computed<unknown>, unknown>();\n const oldErrors = new Map<Computed<unknown>, unknown>();\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const oldState = context.stateMap.get(computed$) as ComputedState<unknown> | undefined;\n oldValues.set(computed$, oldState?.val);\n oldErrors.set(computed$, oldState?.error);\n\n const readDepts = context.stateMap.get(computed$)?.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n queue = nextQueue;\n }\n\n queue = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const computedState = readComputed(computed$, context, mutation);\n\n const isSameWithOldValue =\n !computedState.error && oldValues.has(computed$) && oldValues.get(computed$) === computedState.val;\n const isSameError = computedState.error && Boolean(oldErrors.get(computed$));\n\n if (isSameWithOldValue || isSameError) {\n continue;\n }\n\n if (computedState.mounted?.listeners) {\n for (const listener of computedState.mounted.listeners) {\n mutation.pendingListeners.add(listener);\n }\n }\n\n const readDepts = computedState.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction propagationChanges(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n pushDirtyMarkers(signalState, context, mutation);\n pullEvaluate(readComputed, signalState, context, mutation);\n}\n\nfunction innerSetState<T>(\n readComputed: ReadComputed,\n signal$: State<T>,\n context: StoreContext,\n mutation: Mutation,\n val: StateArg<T>,\n) {\n let newValue: T;\n if (typeof val === 'function') {\n const updater = val as Updater<T>;\n newValue = updater((context.stateMap.get(signal$)?.val as T | undefined) ?? signal$.init);\n } else {\n newValue = val;\n }\n\n if (shouldDistinct(signal$, newValue, context)) {\n return;\n }\n\n const signalState = context.stateMap.get(signal$);\n if (!signalState) {\n context.stateMap.set(signal$, {\n val: newValue,\n epoch: 0,\n });\n return;\n }\n\n signalState.val = newValue;\n signalState.epoch += 1;\n propagationChanges(readComputed, signalState, context, mutation);\n\n return undefined;\n}\n\nexport function set<T, Args extends SetArgs<T, unknown[]>>(\n readComputed: ReadComputed,\n writable$: State<T> | Command<T, Args>,\n context: StoreContext,\n mutation: Mutation,\n ...args: Args\n): undefined | T {\n if ('read' in writable$) {\n return;\n }\n\n if ('write' in writable$) {\n return writable$.write(mutation.visitor, ...args);\n }\n\n innerSetState(readComputed, writable$, context, mutation, args[0]);\n return;\n}\n\n/**\n * Creates a mutation operation context. The Mutation remains unique throughout\n * the mutation cycle and can track side effects produced by this mutation operation\n *\n * This tracking is implemented by coloring the visitor function, so the Mutation\n * needs to wrap get & set functions and ensure that all get & set operations\n * executed in the mutation context come from the same Mutation\n *\n * @param context\n * @param get\n * @param set\n * @returns\n */\nexport function createMutation(context: StoreContext, get: StoreGet, set: StoreSet): Mutation {\n const mutation: Mutation = {\n potentialDirtyIds: new Set(),\n pendingListeners: new Set(),\n visitor: {\n get: <T>(signal$: Signal<T>) => {\n return get(signal$, context, mutation);\n },\n set: <T, Args extends SetArgs<T, unknown[]>>(\n signal$: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(signal$, context, ...args);\n },\n },\n };\n\n return mutation;\n}\n","import type { State } from '../../../types/core/signal';\nimport type { StateState, StoreContext } from '../../../types/core/store';\n\nexport function readState<T>(state: State<T>, context: StoreContext): StateState<T> {\n const atomState = context.stateMap.get(state);\n if (!atomState) {\n const initState = {\n val: state.init,\n epoch: 0,\n };\n context.stateMap.set(state, initState);\n return initState as StateState<T>;\n }\n\n return atomState as StateState<T>;\n}\n","import type { Command, Computed, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mounted,\n Mutation,\n ReadSignal,\n SignalState,\n StoreContext,\n} from '../../../types/core/store';\nimport { withNotifyInterceptor, withSubInterceptor, withUnsubInterceptor } from '../interceptor';\nimport { isComputedState } from '../typing-util';\n\nfunction unmountComputedDependencies<T>(\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n context.stateMap.get(dep)?.mounted?.readDepts.delete(computed$ as Computed<unknown>);\n unmount(dep, context, mutation);\n }\n}\n\nfunction mountComputedDependencies<T>(\n readSignal: ReadSignal,\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n const mounted = mount(readSignal, dep, context, mutation);\n mounted.readDepts.add(computed$ as Computed<unknown>);\n }\n}\n\nfunction initMount<T>(readSignal: ReadSignal, signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n context.interceptor?.mount?.(signal$);\n\n const signalState = readSignal(signal$, context, mutation);\n\n signalState.mounted = signalState.mounted ?? {\n listeners: new Set(),\n readDepts: new Set(),\n };\n\n if (isComputedState(signalState)) {\n mountComputedDependencies(readSignal, signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n return signalState.mounted;\n}\n\nexport function mount<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n context: StoreContext,\n mutation?: Mutation,\n): Mounted {\n const mounted = context.stateMap.get(signal$)?.mounted;\n if (mounted) {\n return mounted;\n }\n\n return initMount(readSignal, signal$, context, mutation);\n}\n\nfunction doUnmount<T>(\n signal$: Signal<T>,\n signalState: SignalState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): void {\n context.interceptor?.unmount?.(signal$);\n\n if (isComputedState(signalState)) {\n unmountComputedDependencies(signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n signalState.mounted = undefined;\n}\n\nexport function unmount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): void {\n const signalState = context.stateMap.get(signal$);\n if (!signalState?.mounted || signalState.mounted.listeners.size || signalState.mounted.readDepts.size) {\n return;\n }\n\n doUnmount(signal$, signalState, context, mutation);\n}\n\nexport function subSingleSignal<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n signal: AbortSignal,\n) {\n withSubInterceptor(\n () => {\n const mounted = mount(readSignal, signal$, context);\n mounted.listeners.add(callback$);\n\n const unsub = () => {\n withUnsubInterceptor(\n () => {\n mounted.listeners.delete(callback$);\n\n if (mounted.readDepts.size === 0 && mounted.listeners.size === 0) {\n unmount(signal$, context);\n }\n },\n signal$,\n callback$,\n context.interceptor?.unsub,\n );\n };\n\n signal.addEventListener('abort', unsub, {\n once: true,\n });\n },\n signal$,\n callback$,\n context.interceptor?.sub,\n );\n}\n\nexport function notify(context: StoreContext, mutation: Mutation) {\n const pendingListeners = mutation.pendingListeners;\n\n mutation.pendingListeners = new Set();\n\n for (const listener of pendingListeners) {\n withNotifyInterceptor(\n () => {\n return listener.write(mutation.visitor);\n },\n listener,\n context.interceptor?.notify,\n );\n }\n}\n","import type { Command, Getter, Setter, Signal, State, Computed } from '../../../types/core/signal';\nimport type {\n StateMap,\n Store,\n StoreContext,\n StoreOptions,\n SubscribeOptions,\n ComputedState,\n Mounted,\n Mutation,\n ReadComputed,\n SignalState,\n StoreGet,\n StoreSet,\n SetArgs,\n} from '../../../types/core/store';\nimport { evaluateComputed, tryGetCached } from '../signal/computed';\nimport { withComputedInterceptor, withGetInterceptor, withSetInterceptor } from '../interceptor';\nimport { createMutation, set as innerSet } from './set';\nimport { readState } from '../signal/state';\nimport { canReadAsCompute } from '../typing-util';\nimport { mount as innerMount, unmount, subSingleSignal, notify } from './sub';\n\nconst readComputed: ReadComputed = <T>(\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> => {\n const cachedState = tryGetCached(readComputed, computed$, context, mutation);\n if (cachedState) {\n return cachedState;\n }\n\n return withComputedInterceptor(\n () => {\n return evaluateComputed(readSignal, mount, unmount, computed$, context, mutation);\n },\n computed$,\n context.interceptor?.computed,\n );\n};\n\nfunction readSignal<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): SignalState<T> {\n if (canReadAsCompute(signal$)) {\n return readComputed(signal$, context, mutation);\n }\n\n return readState(signal$, context);\n}\n\nfunction mount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n return innerMount(readSignal, signal$, context, mutation);\n}\n\nfunction sub<T>(\n signals$: Signal<T>[] | Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n options?: SubscribeOptions,\n): () => void {\n if (Array.isArray(signals$) && signals$.length === 0) {\n return () => void 0;\n }\n\n const controller = new AbortController();\n const signal = options?.signal ? AbortSignal.any([controller.signal, options.signal]) : controller.signal;\n\n if (!Array.isArray(signals$)) {\n subSingleSignal(readSignal, signals$, callback$, context, signal);\n } else {\n signals$.forEach((atom) => {\n subSingleSignal(readSignal, atom, callback$, context, signal);\n });\n }\n\n return () => {\n controller.abort();\n };\n}\n\nconst get: StoreGet = (signal, context, mutation) => {\n return withGetInterceptor(\n () => {\n const signalState = readSignal(signal, context, mutation);\n if ('error' in signalState) {\n throw signalState.error as Error;\n }\n\n return signalState.val;\n },\n signal,\n context.interceptor?.get,\n );\n};\n\nconst set: StoreSet = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n context: StoreContext,\n ...args: Args\n): T | undefined => {\n return withSetInterceptor<T, Args>(\n () => {\n const mutation = createMutation(context, get, set);\n\n let ret: T | undefined;\n try {\n ret = innerSet<T, Args>(readComputed, atom, context, mutation, ...args);\n } finally {\n notify(context, mutation);\n }\n return ret;\n },\n atom,\n context.interceptor?.set,\n ...args,\n );\n};\n\nexport class StoreImpl implements Store {\n protected readonly stateMap: StateMap = new WeakMap();\n protected readonly context: StoreContext;\n\n constructor(protected readonly options?: StoreOptions) {\n this.context = {\n stateMap: this.stateMap,\n interceptor: this.options?.interceptor,\n };\n }\n\n get: Getter = <T>(atom: Signal<T>): T => {\n return get(atom, this.context);\n };\n\n set: Setter = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(atom, this.context, ...args);\n };\n\n sub(\n targets$: Signal<unknown>[] | Signal<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n return sub(targets$, cb$, this.context, options);\n }\n}\n\nexport function createStore(): Store {\n return new StoreImpl();\n}\n\nlet defaultStore: Store | undefined = undefined;\nexport function getDefaultStore(): Store {\n if (!defaultStore) {\n defaultStore = createStore();\n }\n return defaultStore;\n}\n"],"names":["globalId","generateToString","id","prefix","debugLabel","label","concat","String","state","init","options","ret","toString","computed","read","command","write","withSetInterceptor","fn","writable$","interceptor","result","called","wrappedFn","data","_len","arguments","length","args","Array","_key","apply","Error","withGetInterceptor","signal","withComputedInterceptor","val","withGeValInterceptor","withSubInterceptor","callback$","undefined","withUnsubInterceptor","withNotifyInterceptor","canReadAsCompute","atom","isComputedState","currentValue","context","_context$stateMap$get","stateMap","get","shouldDistinct","value","shouldDistinctError","currentState","error","checkEpoch","readComputed","computedState","mutation","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","dep","epoch","depEpoch","err","e","f","tryGetCached","computed$","signalState","mayDirty","potentialDirtyIds","has","mounted","wrapGet","readSignal","mount","callerComputed$","callerState","readDeps","Map","dep$","depState","set","callerMounted","readDepts","add","getOrInitComputedState","cleanupMissingDependencies","unmount","lastDeps","currDeps","_iterator2","keys","_step2","key","_depState$mounted","evaluateComputed","_wrapGet","_wrapGet2","_get","depAtom","_context$interceptor","_computedState$abortC","_computed$$debugLabel","abortController","abort","AbortController","pushDirtyMarkers","_signalState$mounted$","_signalState$mounted","queue","from","nextQueue","push","pullEvaluate","_signalState$mounted$2","_signalState$mounted2","_signalState$mounted$3","_signalState$mounted3","_signalState$mounted$4","_signalState$mounted4","_iterator3","listeners","_step3","listener","pendingListeners","oldValues","oldErrors","_iterator4","_step4","oldState","_i","_Array$from","_iterator5","_step5","_computedState$mounte","_computedState$mounte2","isSameWithOldValue","isSameError","Boolean","_iterator6","_step6","_i2","_Array$from2","propagationChanges","innerSetState","signal$","newValue","_ref","_context$stateMap$get2","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
@@ -331,6 +331,16 @@ function currentValue(signal, context) {
331
331
  function shouldDistinct(signal, value, context) {
332
332
  return currentValue(signal, context) === value;
333
333
  }
334
+ function shouldDistinctError(signal, context) {
335
+ var currentState = context.stateMap.get(signal);
336
+ if (!currentState) {
337
+ return false;
338
+ }
339
+ if ('error' in currentState && currentState.error !== undefined) {
340
+ return true;
341
+ }
342
+ return false;
343
+ }
334
344
 
335
345
  function checkEpoch(readComputed, computedState, context, mutation) {
336
346
  var _iterator = _createForOfIteratorHelper(computedState.dependencies.entries()),
@@ -387,6 +397,9 @@ function wrapGet(readSignal, mount, callerComputed$, callerState, context, mutat
387
397
  depState.mounted.readDepts.add(callerComputed$);
388
398
  }
389
399
  }
400
+ if ('error' in depState) {
401
+ throw depState.error;
402
+ }
390
403
  return depState.val;
391
404
  }, readDeps];
392
405
  }
@@ -428,23 +441,39 @@ function evaluateComputed(readSignal, mount, unmount, computed$, context, mutati
428
441
  _get = _wrapGet2[0],
429
442
  dependencies = _wrapGet2[1];
430
443
  computedState.dependencies = dependencies;
431
- var evalVal = computed$.read(function (depAtom) {
432
- var _context$interceptor;
433
- return withGeValInterceptor(function () {
434
- return _get(depAtom);
435
- }, depAtom, (_context$interceptor = context.interceptor) === null || _context$interceptor === void 0 ? void 0 : _context$interceptor.get);
436
- }, {
437
- get signal() {
438
- var _computedState$abortC, _computed$$debugLabel;
439
- (_computedState$abortC = computedState.abortController) === null || _computedState$abortC === void 0 || _computedState$abortC.abort("abort ".concat((_computed$$debugLabel = computed$.debugLabel) !== null && _computed$$debugLabel !== void 0 ? _computed$$debugLabel : 'anonymous', " atom"));
440
- computedState.abortController = new AbortController();
441
- return computedState.abortController.signal;
442
- }
443
- });
444
+ var result;
445
+ try {
446
+ result = {
447
+ value: computed$.read(function (depAtom) {
448
+ var _context$interceptor;
449
+ return withGeValInterceptor(function () {
450
+ return _get(depAtom);
451
+ }, depAtom, (_context$interceptor = context.interceptor) === null || _context$interceptor === void 0 ? void 0 : _context$interceptor.get);
452
+ }, {
453
+ get signal() {
454
+ var _computedState$abortC, _computed$$debugLabel;
455
+ (_computedState$abortC = computedState.abortController) === null || _computedState$abortC === void 0 || _computedState$abortC.abort("abort ".concat((_computed$$debugLabel = computed$.debugLabel) !== null && _computed$$debugLabel !== void 0 ? _computed$$debugLabel : 'anonymous', " atom"));
456
+ computedState.abortController = new AbortController();
457
+ return computedState.abortController.signal;
458
+ }
459
+ })
460
+ };
461
+ } catch (error) {
462
+ result = {
463
+ error: error
464
+ };
465
+ }
444
466
  mutation === null || mutation === void 0 || mutation.potentialDirtyIds["delete"](computed$.id);
445
467
  cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);
446
- if (!shouldDistinct(computed$, evalVal, context)) {
447
- computedState.val = evalVal;
468
+ if ('error' in result) {
469
+ if (!shouldDistinctError(computed$, context)) {
470
+ computedState.error = result.error;
471
+ delete computedState.val;
472
+ computedState.epoch += 1;
473
+ }
474
+ } else if (!shouldDistinct(computed$, result.value, context)) {
475
+ computedState.val = result.value;
476
+ delete computedState.error;
448
477
  computedState.epoch += 1;
449
478
  }
450
479
  return computedState;
@@ -505,17 +534,19 @@ function pullEvaluate(readComputed, signalState, context, mutation) {
505
534
  _iterator3.f();
506
535
  }
507
536
  var oldValues = new Map();
537
+ var oldErrors = new Map();
508
538
  while (queue.length > 0) {
509
539
  var nextQueue = [];
510
540
  var _iterator4 = _createForOfIteratorHelper(queue),
511
541
  _step4;
512
542
  try {
513
543
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
514
- var _context$stateMap$get, _context$stateMap$get2;
544
+ var _context$stateMap$get;
515
545
  var computed$ = _step4.value;
516
- var oldValue = (_context$stateMap$get = context.stateMap.get(computed$)) === null || _context$stateMap$get === void 0 ? void 0 : _context$stateMap$get.val;
517
- oldValues.set(computed$, oldValue);
518
- var readDepts = (_context$stateMap$get2 = context.stateMap.get(computed$)) === null || _context$stateMap$get2 === void 0 || (_context$stateMap$get2 = _context$stateMap$get2.mounted) === null || _context$stateMap$get2 === void 0 ? void 0 : _context$stateMap$get2.readDepts;
546
+ var oldState = context.stateMap.get(computed$);
547
+ oldValues.set(computed$, oldState === null || oldState === void 0 ? void 0 : oldState.val);
548
+ oldErrors.set(computed$, oldState === null || oldState === void 0 ? void 0 : oldState.error);
549
+ var readDepts = (_context$stateMap$get = context.stateMap.get(computed$)) === null || _context$stateMap$get === void 0 || (_context$stateMap$get = _context$stateMap$get.mounted) === null || _context$stateMap$get === void 0 ? void 0 : _context$stateMap$get.readDepts;
519
550
  if (readDepts) {
520
551
  for (var _i = 0, _Array$from = Array.from(readDepts); _i < _Array$from.length; _i++) {
521
552
  var dep = _Array$from[_i];
@@ -540,7 +571,9 @@ function pullEvaluate(readComputed, signalState, context, mutation) {
540
571
  var _computedState$mounte, _computedState$mounte2;
541
572
  var _computed$ = _step5.value;
542
573
  var computedState = readComputed(_computed$, context, mutation);
543
- if (oldValues.has(_computed$) && oldValues.get(_computed$) === computedState.val) {
574
+ var isSameWithOldValue = !computedState.error && oldValues.has(_computed$) && oldValues.get(_computed$) === computedState.val;
575
+ var isSameError = computedState.error && Boolean(oldErrors.get(_computed$));
576
+ if (isSameWithOldValue || isSameError) {
544
577
  continue;
545
578
  }
546
579
  if ((_computedState$mounte = computedState.mounted) !== null && _computedState$mounte !== void 0 && _computedState$mounte.listeners) {
@@ -580,9 +613,9 @@ function propagationChanges(readComputed, signalState, context, mutation) {
580
613
  function innerSetState(readComputed, signal$, context, mutation, val) {
581
614
  var newValue;
582
615
  if (typeof val === 'function') {
583
- var _ref, _context$stateMap$get3;
616
+ var _ref, _context$stateMap$get2;
584
617
  var updater = val;
585
- newValue = updater((_ref = (_context$stateMap$get3 = context.stateMap.get(signal$)) === null || _context$stateMap$get3 === void 0 ? void 0 : _context$stateMap$get3.val) !== null && _ref !== void 0 ? _ref : signal$.init);
618
+ newValue = updater((_ref = (_context$stateMap$get2 = context.stateMap.get(signal$)) === null || _context$stateMap$get2 === void 0 ? void 0 : _context$stateMap$get2.val) !== null && _ref !== void 0 ? _ref : signal$.init);
586
619
  } else {
587
620
  newValue = val;
588
621
  }
@@ -797,7 +830,11 @@ function _sub(signals$, callback$, context, options) {
797
830
  var get = function get(signal, context, mutation) {
798
831
  var _context$interceptor2;
799
832
  return withGetInterceptor(function () {
800
- return readSignal(signal, context, mutation).val;
833
+ var signalState = readSignal(signal, context, mutation);
834
+ if ('error' in signalState) {
835
+ throw signalState.error;
836
+ }
837
+ return signalState.val;
801
838
  }, signal, (_context$interceptor2 = context.interceptor) === null || _context$interceptor2 === void 0 ? void 0 : _context$interceptor2.get);
802
839
  };
803
840
  var _set = function set$1(atom, context) {