writable() — svelte Function Reference
Architecture documentation for the writable() function in index.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD ba16ff3e_8a18_d3c4_15e9_96304b539f51["writable()"] b874f390_a6ee_7d84_7151_b2b77f0388d5["index.js"] ba16ff3e_8a18_d3c4_15e9_96304b539f51 -->|defined in| b874f390_a6ee_7d84_7151_b2b77f0388d5 1be4451f_f9ee_5df1_6b9b_d5f88ec472fd["spring()"] 1be4451f_f9ee_5df1_6b9b_d5f88ec472fd -->|calls| ba16ff3e_8a18_d3c4_15e9_96304b539f51 cc3dbfb4_f7d6_e5af_e4aa_42d1354dade9["tweened()"] cc3dbfb4_f7d6_e5af_e4aa_42d1354dade9 -->|calls| ba16ff3e_8a18_d3c4_15e9_96304b539f51 d677216e_46d5_c70b_1d0e_82e2fcf6a340["toStore()"] d677216e_46d5_c70b_1d0e_82e2fcf6a340 -->|calls| ba16ff3e_8a18_d3c4_15e9_96304b539f51 9b2c21f2_41ab_1545_33fc_5df63113cb0f["toStore()"] 9b2c21f2_41ab_1545_33fc_5df63113cb0f -->|calls| ba16ff3e_8a18_d3c4_15e9_96304b539f51 a6e21914_fa35_9517_31ef_4774ea1ecde3["readable()"] a6e21914_fa35_9517_31ef_4774ea1ecde3 -->|calls| ba16ff3e_8a18_d3c4_15e9_96304b539f51 b3727276_e6f9_12a7_bfa7_3faf14f08373["safe_not_equal()"] ba16ff3e_8a18_d3c4_15e9_96304b539f51 -->|calls| b3727276_e6f9_12a7_bfa7_3faf14f08373 3b9fcc16_eee3_208a_bc65_45c294d8565a["run()"] ba16ff3e_8a18_d3c4_15e9_96304b539f51 -->|calls| 3b9fcc16_eee3_208a_bc65_45c294d8565a style ba16ff3e_8a18_d3c4_15e9_96304b539f51 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/store/shared/index.js lines 34–95
export function writable(value, start = noop) {
/** @type {Unsubscriber | null} */
let stop = null;
/** @type {Set<SubscribeInvalidateTuple<T>>} */
const subscribers = new Set();
/**
* @param {T} new_value
* @returns {void}
*/
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) {
// store is ready
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
/**
* @param {Updater<T>} fn
* @returns {void}
*/
function update(fn) {
set(fn(/** @type {T} */ (value)));
}
/**
* @param {Subscriber<T>} run
* @param {() => void} [invalidate]
* @returns {Unsubscriber}
*/
function subscribe(run, invalidate = noop) {
/** @type {SubscribeInvalidateTuple<T>} */
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set, update) || noop;
}
run(/** @type {T} */ (value));
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0 && stop) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
Domain
Subdomains
Defined In
Calls
Source
Frequently Asked Questions
What does writable() do?
writable() is a function in the svelte codebase, defined in packages/svelte/src/store/shared/index.js.
Where is writable() defined?
writable() is defined in packages/svelte/src/store/shared/index.js at line 34.
What does writable() call?
writable() calls 2 function(s): run, safe_not_equal.
What calls writable()?
writable() is called by 5 function(s): readable, spring, toStore, toStore, tweened.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free