|
|
|
@ -657,28 +657,28 @@ export async function tick() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @param {import('./types.js').Derived} signal
|
|
|
|
* @param {import('#client').Derived} derived
|
|
|
|
* @param {boolean} force_schedule
|
|
|
|
* @param {boolean} force_schedule
|
|
|
|
* @returns {void}
|
|
|
|
* @returns {void}
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
function update_derived(signal, force_schedule) {
|
|
|
|
function update_derived(derived, force_schedule) {
|
|
|
|
const previous_updating_derived = updating_derived;
|
|
|
|
const previous_updating_derived = updating_derived;
|
|
|
|
updating_derived = true;
|
|
|
|
updating_derived = true;
|
|
|
|
destroy_children(signal);
|
|
|
|
destroy_children(derived);
|
|
|
|
const value = execute_reaction_fn(signal);
|
|
|
|
const value = execute_reaction_fn(derived);
|
|
|
|
updating_derived = previous_updating_derived;
|
|
|
|
updating_derived = previous_updating_derived;
|
|
|
|
const status =
|
|
|
|
const status =
|
|
|
|
(current_skip_reaction || (signal.f & UNOWNED) !== 0) && signal.deps !== null
|
|
|
|
(current_skip_reaction || (derived.f & UNOWNED) !== 0) && derived.deps !== null
|
|
|
|
? MAYBE_DIRTY
|
|
|
|
? MAYBE_DIRTY
|
|
|
|
: CLEAN;
|
|
|
|
: CLEAN;
|
|
|
|
set_signal_status(signal, status);
|
|
|
|
set_signal_status(derived, status);
|
|
|
|
if (!signal.equals(value)) {
|
|
|
|
if (!derived.equals(value)) {
|
|
|
|
signal.v = value;
|
|
|
|
derived.v = value;
|
|
|
|
mark_reactions(signal, DIRTY, force_schedule);
|
|
|
|
mark_reactions(derived, DIRTY, force_schedule);
|
|
|
|
|
|
|
|
|
|
|
|
// @ts-expect-error
|
|
|
|
// @ts-expect-error
|
|
|
|
if (DEV && signal.inspect && force_schedule) {
|
|
|
|
if (DEV && derived.inspect && force_schedule) {
|
|
|
|
for (const fn of /** @type {import('./types.js').DerivedDebug} */ (signal).inspect) fn();
|
|
|
|
for (const fn of /** @type {import('#client').DerivedDebug} */ (derived).inspect) fn();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|