flatten() — svelte Function Reference
Architecture documentation for the flatten() function in async.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD b9aaaccb_7510_28de_bb53_f808b2cb1d5e["flatten()"] 1ad3e508_c069_abae_2e4a_bd17c8892e18["async.js"] b9aaaccb_7510_28de_bb53_f808b2cb1d5e -->|defined in| 1ad3e508_c069_abae_2e4a_bd17c8892e18 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f["async()"] 4de7f5ce_83b2_1bef_8e42_34d4dcb4c29f -->|calls| b9aaaccb_7510_28de_bb53_f808b2cb1d5e 9a87a496_4e7d_9214_8bba_7bb2e3e47939["attribute_effect()"] 9a87a496_4e7d_9214_8bba_7bb2e3e47939 -->|calls| b9aaaccb_7510_28de_bb53_f808b2cb1d5e a1d7f44d_5b8b_629c_39ba_eeb1486eee4a["run_after_blockers()"] a1d7f44d_5b8b_629c_39ba_eeb1486eee4a -->|calls| b9aaaccb_7510_28de_bb53_f808b2cb1d5e cb33ef2f_2e6e_0042_436d_4ff6a84c5836["template_effect()"] cb33ef2f_2e6e_0042_436d_4ff6a84c5836 -->|calls| b9aaaccb_7510_28de_bb53_f808b2cb1d5e 67fa511b_0187_f041_2ace_159bdaf811ae["deferred_template_effect()"] 67fa511b_0187_f041_2ace_159bdaf811ae -->|calls| b9aaaccb_7510_28de_bb53_f808b2cb1d5e ad360ec3_c98b_ac47_212b_923d0363a0ce["is_runes()"] b9aaaccb_7510_28de_bb53_f808b2cb1d5e -->|calls| ad360ec3_c98b_ac47_212b_923d0363a0ce db550759_ee3b_160c_8afa_d1aa9fae478c["fn()"] b9aaaccb_7510_28de_bb53_f808b2cb1d5e -->|calls| db550759_ee3b_160c_8afa_d1aa9fae478c 61349edc_4397_493f_bcdc_aa9a9b92ec3c["capture()"] b9aaaccb_7510_28de_bb53_f808b2cb1d5e -->|calls| 61349edc_4397_493f_bcdc_aa9a9b92ec3c 623c7d5f_8856_1cec_42aa_d58e310da5d1["invoke_error_boundary()"] b9aaaccb_7510_28de_bb53_f808b2cb1d5e -->|calls| 623c7d5f_8856_1cec_42aa_d58e310da5d1 a0b8f840_863f_a966_d259_b866f80703d1["deactivate()"] b9aaaccb_7510_28de_bb53_f808b2cb1d5e -->|calls| a0b8f840_863f_a966_d259_b866f80703d1 df71411d_ad64_65b8_da29_e77890377349["unset_context()"] b9aaaccb_7510_28de_bb53_f808b2cb1d5e -->|calls| df71411d_ad64_65b8_da29_e77890377349 9a4a3f08_7a6a_f871_c243_a35a6690f3f7["run()"] b9aaaccb_7510_28de_bb53_f808b2cb1d5e -->|calls| 9a4a3f08_7a6a_f871_c243_a35a6690f3f7 a387a36f_f417_a149_0b1a_ee4a1da63440["async_derived()"] b9aaaccb_7510_28de_bb53_f808b2cb1d5e -->|calls| a387a36f_f417_a149_0b1a_ee4a1da63440 style b9aaaccb_7510_28de_bb53_f808b2cb1d5e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/internal/client/reactivity/async.js lines 35–92
export function flatten(blockers, sync, async, fn) {
const d = is_runes() ? derived : derived_safe_equal;
// Filter out already-settled blockers - no need to wait for them
var pending = blockers.filter((b) => !b.settled);
if (async.length === 0 && pending.length === 0) {
fn(sync.map(d));
return;
}
var batch = current_batch;
var parent = /** @type {Effect} */ (active_effect);
var restore = capture();
var blocker_promise =
pending.length === 1
? pending[0].promise
: pending.length > 1
? Promise.all(pending.map((b) => b.promise))
: null;
/** @param {Value[]} values */
function finish(values) {
restore();
try {
fn(values);
} catch (error) {
if ((parent.f & DESTROYED) === 0) {
invoke_error_boundary(error, parent);
}
}
batch?.deactivate();
unset_context();
}
// Fast path: blockers but no async expressions
if (async.length === 0) {
/** @type {Promise<any>} */ (blocker_promise).then(() => finish(sync.map(d)));
return;
}
// Full path: has async expressions
function run() {
restore();
Promise.all(async.map((expression) => async_derived(expression)))
.then((result) => finish([...sync.map(d), ...result]))
.catch((error) => invoke_error_boundary(error, parent));
}
if (blocker_promise) {
blocker_promise.then(run);
} else {
run();
}
}
Domain
Subdomains
Source
Frequently Asked Questions
What does flatten() do?
flatten() is a function in the svelte codebase, defined in packages/svelte/src/internal/client/reactivity/async.js.
Where is flatten() defined?
flatten() is defined in packages/svelte/src/internal/client/reactivity/async.js at line 35.
What does flatten() call?
flatten() calls 8 function(s): async_derived, capture, deactivate, fn, invoke_error_boundary, is_runes, run, unset_context.
What calls flatten()?
flatten() is called by 5 function(s): async, attribute_effect, deferred_template_effect, run_after_blockers, template_effect.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free