ClassBody() — svelte Function Reference
Architecture documentation for the ClassBody() function in ClassBody.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD 9659d62b_1d6a_1868_1943_0cbb31a2d5e4["ClassBody()"] b3660a8f_0eea_ece0_adac_3539aff5c652["ClassBody.js"] 9659d62b_1d6a_1868_1943_0cbb31a2d5e4 -->|defined in| b3660a8f_0eea_ece0_adac_3539aff5c652 68a38b3b_6f0f_ed43_404f_3d00302677a2["get_parent()"] 9659d62b_1d6a_1868_1943_0cbb31a2d5e4 -->|calls| 68a38b3b_6f0f_ed43_404f_3d00302677a2 d69a156c_617a_9397_4c8b_e94508c59e30["get_name()"] 9659d62b_1d6a_1868_1943_0cbb31a2d5e4 -->|calls| d69a156c_617a_9397_4c8b_e94508c59e30 style 9659d62b_1d6a_1868_1943_0cbb31a2d5e4 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js lines 13–111
export function ClassBody(node, context) {
const state_fields = context.state.analysis.classes.get(node);
if (!state_fields) {
// in legacy mode, do nothing
context.next();
return;
}
/** @type {Array<MethodDefinition | PropertyDefinition | StaticBlock>} */
const body = [];
const child_state = { ...context.state, state_fields };
for (const [name, field] of state_fields) {
if (name[0] === '#') {
continue;
}
// insert backing fields for stuff declared in the constructor
if (field.node.type === 'AssignmentExpression') {
const member = b.member(b.this, field.key);
const should_proxy = field.type === '$state' && true; // TODO
const key = b.key(name);
body.push(
b.prop_def(field.key, null),
b.method('get', key, [], [b.return(b.call('$.get', member))]),
b.method(
'set',
key,
[b.id('value')],
[b.stmt(b.call('$.set', member, b.id('value'), should_proxy && b.true))]
)
);
}
}
const declaration = /** @type {ClassDeclaration | ClassExpression} */ (
get_parent(context.path, -1)
);
// Replace parts of the class body
for (const definition of node.body) {
if (definition.type !== 'PropertyDefinition') {
body.push(
/** @type {MethodDefinition | StaticBlock} */ (context.visit(definition, child_state))
);
continue;
}
const name = get_name(definition.key);
const field = name && /** @type {StateField} */ (state_fields.get(name));
if (!field) {
body.push(/** @type {PropertyDefinition} */ (context.visit(definition, child_state)));
continue;
}
if (name[0] === '#') {
let value = definition.value
? /** @type {CallExpression} */ (context.visit(definition.value, child_state))
: undefined;
if (dev && field.node === definition) {
value = b.call('$.tag', value, b.literal(`${declaration.id?.name ?? '[class]'}.${name}`));
}
body.push(b.prop_def(definition.key, value));
} else if (field.node === definition) {
let call = /** @type {CallExpression} */ (context.visit(field.value, child_state));
if (dev) {
call = b.call('$.tag', call, b.literal(`${declaration.id?.name ?? '[class]'}.${name}`));
}
const member = b.member(b.this, field.key);
const should_proxy = field.type === '$state' && true; // TODO
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does ClassBody() do?
ClassBody() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js.
Where is ClassBody() defined?
ClassBody() is defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js at line 13.
What does ClassBody() call?
ClassBody() calls 2 function(s): get_name, get_parent.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free