SvelteSet Class — svelte Architecture
Architecture documentation for the SvelteSet class in set.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD eea73370_3158_afe8_bb16_b4ffb58d476f["SvelteSet"] 4906f61a_c290_2722_44b4_523e6fa121db["set.js"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|defined in| 4906f61a_c290_2722_44b4_523e6fa121db 2f2c0b09_fdf1_e466_679b_e88c5380a219["constructor()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| 2f2c0b09_fdf1_e466_679b_e88c5380a219 7d5db99a_07cd_cef9_c683_da198f0e07ae["value()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| 7d5db99a_07cd_cef9_c683_da198f0e07ae 0897fecf_4cf0_3844_68cc_d9edf7a0a23a["inited()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| 0897fecf_4cf0_3844_68cc_d9edf7a0a23a d460491c_489c_23c6_7a07_f9e08453a5c2["has()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| d460491c_489c_23c6_7a07_f9e08453a5c2 c3ab1fe7_dc0c_4dce_760e_a2afd68ccc68["add()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| c3ab1fe7_dc0c_4dce_760e_a2afd68ccc68 64f0baa3_3905_9966_9720_bebedd8e7a54["delete()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| 64f0baa3_3905_9966_9720_bebedd8e7a54 687f3c30_8fae_fb5d_2f23_045d2220f990["clear()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| 687f3c30_8fae_fb5d_2f23_045d2220f990 bab7be01_996a_52b1_ecec_0c80dd2b84c9["keys()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| bab7be01_996a_52b1_ecec_0c80dd2b84c9 d7a23a2b_04a7_60aa_4659_13e911cdd1d1["values()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| d7a23a2b_04a7_60aa_4659_13e911cdd1d1 bb4f056b_d65d_190d_f49f_b3784ab0c952["entries()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| bb4f056b_d65d_190d_f49f_b3784ab0c952 22a5556c_26e8_4c3c_bce8_312d429e9260["Symbol()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| 22a5556c_26e8_4c3c_bce8_312d429e9260 4f1e3793_e4e0_569e_29fc_cc0eab45e1b1["size()"] eea73370_3158_afe8_bb16_b4ffb58d476f -->|method| 4f1e3793_e4e0_569e_29fc_cc0eab45e1b1
Relationship Graph
Source Code
packages/svelte/src/reactivity/set.js lines 47–213
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) {
// If the value is invalid then the native exception will fire here
value = new Set(value);
tag(this.#version, 'SvelteSet version');
tag(this.#size, 'SvelteSet.size');
}
if (value) {
for (var element of value) {
super.add(element);
}
this.#size.v = super.size;
}
if (!inited) this.#init();
}
/**
* If the source is being created inside the same reaction as the SvelteSet instance,
* we use `state` so that it will not be a dependency of the reaction. Otherwise we
* use `source` so it will be.
*
* @template T
* @param {T} value
* @returns {Source<T>}
*/
#source(value) {
return update_version === this.#update_version ? state(value) : source(value);
}
// We init as part of the first instance so that we can treeshake this class
#init() {
inited = true;
var proto = SvelteSet.prototype;
var set_proto = Set.prototype;
for (const method of read_methods) {
// @ts-ignore
proto[method] = function (...v) {
get(this.#version);
// @ts-ignore
return set_proto[method].apply(this, v);
};
}
for (const method of set_like_methods) {
// @ts-ignore
proto[method] = function (...v) {
get(this.#version);
// @ts-ignore
var set = /** @type {Set<T>} */ (set_proto[method].apply(this, v));
return new SvelteSet(set);
};
}
}
/** @param {T} value */
has(value) {
var has = super.has(value);
var sources = this.#sources;
var s = sources.get(value);
if (s === undefined) {
if (!has) {
// If the value doesn't exist, track the version in case it's added later
// but don't create sources willy-nilly to track all possible values
Domain
Defined In
Source
Frequently Asked Questions
What is the SvelteSet class?
SvelteSet is a class in the svelte codebase, defined in packages/svelte/src/reactivity/set.js.
Where is SvelteSet defined?
SvelteSet is defined in packages/svelte/src/reactivity/set.js at line 47.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free