declarations.js — svelte Source File
Architecture documentation for declarations.js, a javascript file in the svelte codebase. 3 imports, 8 dependents.
Entity Profile
Dependency Diagram
graph LR 1a53d630_ca18_6783_bd92_8c72517a9306["declarations.js"] c518b20b_2355_7b11_4ac2_2d9bb5dcfb43["utils.js"] 1a53d630_ca18_6783_bd92_8c72517a9306 --> c518b20b_2355_7b11_4ac2_2d9bb5dcfb43 03ec0ace_6e52_c362_5e4b_06e8333b938f["is_state_source"] 1a53d630_ca18_6783_bd92_8c72517a9306 --> 03ec0ace_6e52_c362_5e4b_06e8333b938f 95c28355_f14c_c3cd_5a03_d5a53ca255bc["builders"] 1a53d630_ca18_6783_bd92_8c72517a9306 --> 95c28355_f14c_c3cd_5a03_d5a53ca255bc 844ad472_83ed_856d_0120_d6773152f6bb["AwaitBlock.js"] 844ad472_83ed_856d_0120_d6773152f6bb --> 1a53d630_ca18_6783_bd92_8c72517a9306 23a1c53f_df53_154c_a2d9_3e0efa9bef15["BlockStatement.js"] 23a1c53f_df53_154c_a2d9_3e0efa9bef15 --> 1a53d630_ca18_6783_bd92_8c72517a9306 c2ea7651_b458_9fe9_2c66_78f1a5171027["ConstTag.js"] c2ea7651_b458_9fe9_2c66_78f1a5171027 --> 1a53d630_ca18_6783_bd92_8c72517a9306 f0f2f8c6_dafa_048c_81e7_9a2e89e2dd23["EachBlock.js"] f0f2f8c6_dafa_048c_81e7_9a2e89e2dd23 --> 1a53d630_ca18_6783_bd92_8c72517a9306 446a5632_54bb_cf7e_dbdc_33bec913df9e["Program.js"] 446a5632_54bb_cf7e_dbdc_33bec913df9e --> 1a53d630_ca18_6783_bd92_8c72517a9306 76dbb198_ccb5_ecf8_b96a_5a5edc5846fb["SnippetBlock.js"] 76dbb198_ccb5_ecf8_b96a_5a5edc5846fb --> 1a53d630_ca18_6783_bd92_8c72517a9306 12047c60_7eb9_7476_83e2_7d8004a6f868["VariableDeclaration.js"] 12047c60_7eb9_7476_83e2_7d8004a6f868 --> 1a53d630_ca18_6783_bd92_8c72517a9306 47b19192_eefb_9217_3996_3a0f4e07c6ed["assignments.js"] 47b19192_eefb_9217_3996_3a0f4e07c6ed --> 1a53d630_ca18_6783_bd92_8c72517a9306 style 1a53d630_ca18_6783_bd92_8c72517a9306 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @import { Identifier } from 'estree' */
/** @import { ComponentContext, Context } from '../../types' */
import { is_state_source } from '../../utils.js';
import * as b from '#compiler/builders';
/**
* Turns `foo` into `$.get(foo)`
* @param {Identifier} node
*/
export function get_value(node) {
return b.call('$.get', node);
}
/**
*
* @param {Context | ComponentContext} context
*/
export function add_state_transformers(context) {
for (const [name, binding] of context.state.scope.declarations) {
if (
is_state_source(binding, context.state.analysis) ||
binding.kind === 'derived' ||
binding.kind === 'legacy_reactive'
) {
context.state.transform[name] = {
read: binding.declaration_kind === 'var' ? (node) => b.call('$.safe_get', node) : get_value,
assign: (node, value, proxy = false) => {
let call = b.call('$.set', node, value, proxy && b.true);
if (context.state.scope.get(`$${node.name}`)?.kind === 'store_sub') {
call = b.call('$.store_unsub', call, b.literal(`$${node.name}`), b.id('$$stores'));
}
return call;
},
mutate: (node, mutation) => {
if (context.state.analysis.runes) {
return mutation;
}
return b.call('$.mutate', node, mutation);
},
update: (node) => {
return b.call(
node.prefix ? '$.update_pre' : '$.update',
node.argument,
node.operator === '--' && b.literal(-1)
);
}
};
}
}
}
Domain
Subdomains
Functions
Dependencies
- builders
- is_state_source
- utils.js
Imported By
- packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js
- packages/svelte/src/compiler/phases/3-transform/client/visitors/BlockStatement.js
- packages/svelte/src/compiler/phases/3-transform/client/visitors/ConstTag.js
- packages/svelte/src/compiler/phases/3-transform/client/visitors/EachBlock.js
- packages/svelte/src/compiler/phases/3-transform/client/visitors/Program.js
- packages/svelte/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js
- packages/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js
- packages/svelte/src/compiler/phases/3-transform/shared/assignments.js
Source
Frequently Asked Questions
What does declarations.js do?
declarations.js is a source file in the svelte codebase, written in javascript. It belongs to the Compiler domain, Transformer subdomain.
What functions are defined in declarations.js?
declarations.js defines 2 function(s): add_state_transformers, get_value.
What does declarations.js depend on?
declarations.js imports 3 module(s): builders, is_state_source, utils.js.
What files import declarations.js?
declarations.js is imported by 8 file(s): AwaitBlock.js, BlockStatement.js, ConstTag.js, EachBlock.js, Program.js, SnippetBlock.js, VariableDeclaration.js, assignments.js.
Where is declarations.js in the architecture?
declarations.js is located at packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/declarations.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/3-transform/client/visitors/shared).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free