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