set.js — svelte Source File
Architecture documentation for set.js, a javascript file in the svelte codebase. 11 imports, 2 dependents.
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)
Domain
Subdomains
Classes
Dependencies
Source
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