task.js — svelte Source File
Architecture documentation for task.js, a javascript file in the svelte codebase. 3 imports, 12 dependents.
Entity Profile
Dependency Diagram
graph LR 8e9a8b22_9754_09a3_8bf1_af0aeb68deca["task.js"] cb946435_ce66_d1e8_6bee_287bdb07e7c5["utils.js"] 8e9a8b22_9754_09a3_8bf1_af0aeb68deca --> cb946435_ce66_d1e8_6bee_287bdb07e7c5 ff67bcc0_629f_eab4_221d_71e6bc15e31e["run_all"] 8e9a8b22_9754_09a3_8bf1_af0aeb68deca --> ff67bcc0_629f_eab4_221d_71e6bc15e31e d8e42d9d_2e3c_635c_19d3_b946a4341c0f["batch.js"] 8e9a8b22_9754_09a3_8bf1_af0aeb68deca --> d8e42d9d_2e3c_635c_19d3_b946a4341c0f 277e61a1_318f_c1a6_cf40_f6e1a0f3aa2f["await.js"] 277e61a1_318f_c1a6_cf40_f6e1a0f3aa2f --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca 6d3d606a_fb7a_54af_1ece_f1eb12f174d1["boundary.js"] 6d3d606a_fb7a_54af_1ece_f1eb12f174d1 --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca ca0d28d0_c4b0_db5c_32c9_bdad64d5deaa["each.js"] ca0d28d0_c4b0_db5c_32c9_bdad64d5deaa --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca 0acd2537_e1bf_d7ae_30d5_407378cfa4d3["attributes.js"] 0acd2537_e1bf_d7ae_30d5_407378cfa4d3 --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca 2254d980_5794_d0a4_3609_60f21d662ff4["input.js"] 2254d980_5794_d0a4_3609_60f21d662ff4 --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca 74650c92_257d_4a26_2826_31c4edae73a3["this.js"] 74650c92_257d_4a26_2826_31c4edae73a3 --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca 2c990bd1_acff_5910_3af2_ab75f655b31b["events.js"] 2c990bd1_acff_5910_3af2_ab75f655b31b --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca 56e684d7_8156_2bdf_6537_717e59d1e537["misc.js"] 56e684d7_8156_2bdf_6537_717e59d1e537 --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca e29c417d_6c26_6125_97f5_600e95e02dac["transitions.js"] e29c417d_6c26_6125_97f5_600e95e02dac --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca d8e42d9d_2e3c_635c_19d3_b946a4341c0f["batch.js"] d8e42d9d_2e3c_635c_19d3_b946a4341c0f --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca 9ad5fe9f_fc6f_e854_93df_194b16c3b738["create-subscriber.js"] 9ad5fe9f_fc6f_e854_93df_194b16c3b738 --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca e34c4197_0d2d_5f9c_9313_0d10c3cf054c["animation-helpers.js"] e34c4197_0d2d_5f9c_9313_0d10c3cf054c --> 8e9a8b22_9754_09a3_8bf1_af0aeb68deca style 8e9a8b22_9754_09a3_8bf1_af0aeb68deca fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { run_all } from '../../shared/utils.js';
import { is_flushing_sync } from '../reactivity/batch.js';
/** @type {Array<() => void>} */
let micro_tasks = [];
function run_micro_tasks() {
var tasks = micro_tasks;
micro_tasks = [];
run_all(tasks);
}
/**
* @param {() => void} fn
*/
export function queue_micro_task(fn) {
if (micro_tasks.length === 0 && !is_flushing_sync) {
var tasks = micro_tasks;
queueMicrotask(() => {
// If this is false, a flushSync happened in the meantime. Do _not_ run new scheduled microtasks in that case
// as the ordering of microtasks would be broken at that point - consider this case:
// - queue_micro_task schedules microtask A to flush task X
// - synchronously after, flushSync runs, processing task X
// - synchronously after, some other microtask B is scheduled, but not through queue_micro_task but for example a Promise.resolve() in user code
// - synchronously after, queue_micro_task schedules microtask C to flush task Y
// - one tick later, microtask A now resolves, flushing task Y before microtask B, which is incorrect
// This if check prevents that race condition (that realistically will only happen in tests)
if (tasks === micro_tasks) run_micro_tasks();
});
}
micro_tasks.push(fn);
}
/**
* Synchronously run any queued tasks.
*/
export function flush_tasks() {
while (micro_tasks.length > 0) {
run_micro_tasks();
}
}
Domain
Subdomains
Imported By
- packages/svelte/tests/animation-helpers.js
- packages/svelte/src/internal/client/dom/elements/attributes.js
- packages/svelte/src/internal/client/dom/blocks/await.js
- packages/svelte/src/internal/client/reactivity/batch.js
- packages/svelte/src/internal/client/dom/blocks/boundary.js
- packages/svelte/src/reactivity/create-subscriber.js
- packages/svelte/src/internal/client/dom/blocks/each.js
- packages/svelte/src/internal/client/dom/elements/events.js
- packages/svelte/src/internal/client/dom/elements/bindings/input.js
- packages/svelte/src/internal/client/dom/elements/misc.js
- packages/svelte/src/internal/client/dom/elements/bindings/this.js
- packages/svelte/src/internal/client/dom/elements/transitions.js
Source
Frequently Asked Questions
What does task.js do?
task.js is a source file in the svelte codebase, written in javascript. It belongs to the ClientRuntime domain, Hydration subdomain.
What functions are defined in task.js?
task.js defines 3 function(s): flush_tasks, queue_micro_task, run_micro_tasks.
What does task.js depend on?
task.js imports 3 module(s): batch.js, run_all, utils.js.
What files import task.js?
task.js is imported by 12 file(s): animation-helpers.js, attributes.js, await.js, batch.js, boundary.js, create-subscriber.js, each.js, events.js, and 4 more.
Where is task.js in the architecture?
task.js is located at packages/svelte/src/internal/client/dom/task.js (domain: ClientRuntime, subdomain: Hydration, directory: packages/svelte/src/internal/client/dom).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free