ClassBody.js — svelte Source File
Architecture documentation for ClassBody.js, a javascript file in the svelte codebase. 10 imports, 1 dependents.
Entity Profile
Dependency Diagram
graph LR ae63a5f8_3bca_b89d_d2cc_a72104d95a3b["ClassBody.js"] ee93d8a6_6fde_b1c1_e15b_3a4da5326305["scope.js"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> ee93d8a6_6fde_b1c1_e15b_3a4da5326305 bed91719_d047_2256_e199_ee875d5f49b9["get_rune"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> bed91719_d047_2256_e199_ee875d5f49b9 495501a4_a342_6a4d_ac11_e3e2fee8b218["errors.js"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> 495501a4_a342_6a4d_ac11_e3e2fee8b218 a146f6ac_0088_8736_b6ce_318f9f115170["e"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> a146f6ac_0088_8736_b6ce_318f9f115170 2aa63f4e_82c9_33e3_ac6c_5f3d46250522["utils.js"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> 2aa63f4e_82c9_33e3_ac6c_5f3d46250522 c37a3aba_1e0c_9f3e_e144_1a7fa20244b3["is_state_creation_rune"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> c37a3aba_1e0c_9f3e_e144_1a7fa20244b3 bbca3d2a_42c8_b215_d3b5_5077ccaf0797["nodes.js"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> bbca3d2a_42c8_b215_d3b5_5077ccaf0797 d69a156c_617a_9397_4c8b_e94508c59e30["get_name"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> d69a156c_617a_9397_4c8b_e94508c59e30 ce051dbd_4cf1_f117_d66e_12cfa122de37["patterns.js"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> ce051dbd_4cf1_f117_d66e_12cfa122de37 95c28355_f14c_c3cd_5a03_d5a53ca255bc["builders"] ae63a5f8_3bca_b89d_d2cc_a72104d95a3b --> 95c28355_f14c_c3cd_5a03_d5a53ca255bc 4aa8a188_84d4_0274_ed83_cac0ab1d3572["index.js"] 4aa8a188_84d4_0274_ed83_cac0ab1d3572 --> ae63a5f8_3bca_b89d_d2cc_a72104d95a3b style ae63a5f8_3bca_b89d_d2cc_a72104d95a3b fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @import { AssignmentExpression, CallExpression, ClassBody, PropertyDefinition, Expression, PrivateIdentifier, MethodDefinition } from 'estree' */
/** @import { StateField } from '#compiler' */
/** @import { Context } from '../types' */
import * as b from '#compiler/builders';
import { get_rune } from '../../scope.js';
import * as e from '../../../errors.js';
import { is_state_creation_rune } from '../../../../utils.js';
import { get_name } from '../../nodes.js';
import { regex_invalid_identifier_chars } from '../../patterns.js';
/**
* @param {ClassBody} node
* @param {Context} context
*/
export function ClassBody(node, context) {
if (!context.state.analysis.runes) {
context.next();
return;
}
/** @type {string[]} */
const private_ids = [];
for (const prop of node.body) {
if (
(prop.type === 'MethodDefinition' || prop.type === 'PropertyDefinition') &&
prop.key.type === 'PrivateIdentifier'
) {
private_ids.push(prop.key.name);
}
}
/** @type {Map<string, StateField>} */
const state_fields = new Map();
/** @type {Map<string, Array<MethodDefinition['kind'] | 'prop' | 'assigned_prop'>>} */
const fields = new Map();
context.state.analysis.classes.set(node, state_fields);
/** @type {MethodDefinition | null} */
let constructor = null;
/**
* @param {PropertyDefinition | AssignmentExpression} node
* @param {Expression | PrivateIdentifier} key
* @param {Expression | null | undefined} value
*/
function handle(node, key, value) {
const name = get_name(key);
if (name === null) return;
const rune = get_rune(value, context.state.scope);
if (rune && is_state_creation_rune(rune)) {
if (state_fields.has(name)) {
e.state_field_duplicate(node, name);
}
const _key = (node.type === 'AssignmentExpression' || !node.static ? '' : '@') + name;
// ... (97 more lines)
Domain
Subdomains
Functions
Dependencies
Source
Frequently Asked Questions
What does ClassBody.js do?
ClassBody.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 ClassBody.js?
ClassBody.js defines 1 function(s): ClassBody.
What does ClassBody.js depend on?
ClassBody.js imports 10 module(s): builders, e, errors.js, get_name, get_rune, is_state_creation_rune, nodes.js, patterns.js, and 2 more.
What files import ClassBody.js?
ClassBody.js is imported by 1 file(s): index.js.
Where is ClassBody.js in the architecture?
ClassBody.js is located at packages/svelte/src/compiler/phases/2-analyze/visitors/ClassBody.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/2-analyze/visitors).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free