Home / File/ task.js — svelte Source File

task.js — svelte Source File

Architecture documentation for task.js, a javascript file in the svelte codebase. 3 imports, 12 dependents.

File javascript ClientRuntime Hydration 3 imports 12 dependents 3 functions

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

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