Home / File/ set.js — svelte Source File

set.js — svelte Source File

Architecture documentation for set.js, a javascript file in the svelte codebase. 11 imports, 2 dependents.

File javascript SharedInternal BitFlags 11 imports 2 dependents 1 classes

Entity Profile

Dependency Diagram

graph LR
  4906f61a_c290_2722_44b4_523e6fa121db["set.js"]
  e5c35d51_28d8_9054_923d_b7f82a3c8dc2["sources.js"]
  4906f61a_c290_2722_44b4_523e6fa121db --> e5c35d51_28d8_9054_923d_b7f82a3c8dc2
  1e2f7428_6050_5cb7_69db_bf5db719f6d1["source"]
  4906f61a_c290_2722_44b4_523e6fa121db --> 1e2f7428_6050_5cb7_69db_bf5db719f6d1
  63ee8247_ada4_9f1d_e139_0c1167cd5b1c["set"]
  4906f61a_c290_2722_44b4_523e6fa121db --> 63ee8247_ada4_9f1d_e139_0c1167cd5b1c
  39208392_58c1_7201_b748_aa74d97cadb9["state"]
  4906f61a_c290_2722_44b4_523e6fa121db --> 39208392_58c1_7201_b748_aa74d97cadb9
  7602fc38_fab9_8955_83f0_8643d7c6c7a4["increment"]
  4906f61a_c290_2722_44b4_523e6fa121db --> 7602fc38_fab9_8955_83f0_8643d7c6c7a4
  2696eb67_452f_4c32_3e13_ee172192b366["tracing.js"]
  4906f61a_c290_2722_44b4_523e6fa121db --> 2696eb67_452f_4c32_3e13_ee172192b366
  d2a90b1f_8427_2d4f_9666_54818c307da5["label"]
  4906f61a_c290_2722_44b4_523e6fa121db --> d2a90b1f_8427_2d4f_9666_54818c307da5
  4dfcf957_8573_ff55_bd31_4181227109e3["tag"]
  4906f61a_c290_2722_44b4_523e6fa121db --> 4dfcf957_8573_ff55_bd31_4181227109e3
  bde4209f_8ffc_1594_4024_b1835a44bcf6["runtime.js"]
  4906f61a_c290_2722_44b4_523e6fa121db --> bde4209f_8ffc_1594_4024_b1835a44bcf6
  a08b6cc5_af73_1be4_d02f_3113cf8a8305["get"]
  4906f61a_c290_2722_44b4_523e6fa121db --> a08b6cc5_af73_1be4_d02f_3113cf8a8305
  c9866d91_a204_fa55_a9e3_6bcc6aaaec1e["esm-env"]
  4906f61a_c290_2722_44b4_523e6fa121db --> c9866d91_a204_fa55_a9e3_6bcc6aaaec1e
  b4a6f564_9aa8_4c6b_ce31_932a89e33306["set.test.ts"]
  b4a6f564_9aa8_4c6b_ce31_932a89e33306 --> 4906f61a_c290_2722_44b4_523e6fa121db
  4469324d_0988_ea58_7534_0c58bd171620["test.ts"]
  4469324d_0988_ea58_7534_0c58bd171620 --> 4906f61a_c290_2722_44b4_523e6fa121db
  style 4906f61a_c290_2722_44b4_523e6fa121db fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/** @import { Source } from '#client' */
import { DEV } from 'esm-env';
import { source, set, state, increment } from '../internal/client/reactivity/sources.js';
import { label, tag } from '../internal/client/dev/tracing.js';
import { get, update_version } from '../internal/client/runtime.js';

var read_methods = ['forEach', 'isDisjointFrom', 'isSubsetOf', 'isSupersetOf'];
var set_like_methods = ['difference', 'intersection', 'symmetricDifference', 'union'];

var inited = false;

/**
 * A reactive version of the built-in [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) object.
 * Reading contents of the set (by iterating, or by reading `set.size` or calling `set.has(...)` as in the [example](https://svelte.dev/playground/53438b51194b4882bcc18cddf9f96f15) below) in an [effect](https://svelte.dev/docs/svelte/$effect) or [derived](https://svelte.dev/docs/svelte/$derived)
 * will cause it to be re-evaluated as necessary when the set is updated.
 *
 * Note that values in a reactive set are _not_ made [deeply reactive](https://svelte.dev/docs/svelte/$state#Deep-state).
 *
 * ```svelte
 * <script>
 * 	import { SvelteSet } from 'svelte/reactivity';
 * 	let monkeys = new SvelteSet();
 *
 * 	function toggle(monkey) {
 * 		if (monkeys.has(monkey)) {
 * 			monkeys.delete(monkey);
 * 		} else {
 * 			monkeys.add(monkey);
 * 		}
 * 	}
 * </script>
 *
 * {#each ['🙈', '🙉', '🙊'] as monkey}
 * 	<button onclick={() => toggle(monkey)}>{monkey}</button>
 * {/each}
 *
 * <button onclick={() => monkeys.clear()}>clear</button>
 *
 * {#if monkeys.has('🙈')}<p>see no evil</p>{/if}
 * {#if monkeys.has('🙉')}<p>hear no evil</p>{/if}
 * {#if monkeys.has('🙊')}<p>speak no evil</p>{/if}
 * ```
 *
 * @template T
 * @extends {Set<T>}
 */
export class SvelteSet extends Set {
	/** @type {Map<T, Source<boolean>>} */
	#sources = new Map();
	#version = state(0);
	#size = state(0);
	#update_version = update_version || -1;

	/**
	 * @param {Iterable<T> | null | undefined} [value]
	 */
	constructor(value) {
		super();

		if (DEV) {
// ... (154 more lines)

Subdomains

Classes

Frequently Asked Questions

What does set.js do?
set.js is a source file in the svelte codebase, written in javascript. It belongs to the SharedInternal domain, BitFlags subdomain.
What does set.js depend on?
set.js imports 11 module(s): esm-env, get, increment, label, runtime.js, set, source, sources.js, and 3 more.
What files import set.js?
set.js is imported by 2 file(s): set.test.ts, test.ts.
Where is set.js in the architecture?
set.js is located at packages/svelte/src/reactivity/set.js (domain: SharedInternal, subdomain: BitFlags, directory: packages/svelte/src/reactivity).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free