RenderTag.js — svelte Source File
Architecture documentation for RenderTag.js, a javascript file in the svelte codebase. 5 imports, 1 dependents.
Entity Profile
Dependency Diagram
graph LR 732df1b1_b4c7_ad36_c716_bfd0aee4083c["RenderTag.js"] 0c5c28a7_226d_4e7c_e75e_0853c0a9fc2c["ast.js"] 732df1b1_b4c7_ad36_c716_bfd0aee4083c --> 0c5c28a7_226d_4e7c_e75e_0853c0a9fc2c 9bcad0f1_2e1e_1fe2_1a87_0967adb89be8["unwrap_optional"] 732df1b1_b4c7_ad36_c716_bfd0aee4083c --> 9bcad0f1_2e1e_1fe2_1a87_0967adb89be8 74eddc85_a390_2aab_af5a_ef32b77d5430["utils.js"] 732df1b1_b4c7_ad36_c716_bfd0aee4083c --> 74eddc85_a390_2aab_af5a_ef32b77d5430 89f84d70_5c6c_1980_33f9_650ce42a04ab["PromiseOptimiser"] 732df1b1_b4c7_ad36_c716_bfd0aee4083c --> 89f84d70_5c6c_1980_33f9_650ce42a04ab 95c28355_f14c_c3cd_5a03_d5a53ca255bc["builders"] 732df1b1_b4c7_ad36_c716_bfd0aee4083c --> 95c28355_f14c_c3cd_5a03_d5a53ca255bc 86cf8685_38fa_3a1c_9b81_21c452968289["transform-server.js"] 86cf8685_38fa_3a1c_9b81_21c452968289 --> 732df1b1_b4c7_ad36_c716_bfd0aee4083c style 732df1b1_b4c7_ad36_c716_bfd0aee4083c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @import { Expression } from 'estree' */
/** @import { AST } from '#compiler' */
/** @import { ComponentContext } from '../types.js' */
import { unwrap_optional } from '../../../../utils/ast.js';
import * as b from '#compiler/builders';
import { empty_comment, PromiseOptimiser } from './shared/utils.js';
/**
* @param {AST.RenderTag} node
* @param {ComponentContext} context
*/
export function RenderTag(node, context) {
const optimiser = new PromiseOptimiser();
const callee = unwrap_optional(node.expression).callee;
const raw_args = unwrap_optional(node.expression).arguments;
const snippet_function = optimiser.transform(
/** @type {Expression} */ (context.visit(callee)),
node.metadata.expression
);
const snippet_args = raw_args.map((arg, i) => {
return optimiser.transform(
/** @type {Expression} */ (context.visit(arg)),
node.metadata.arguments[i]
);
});
let statement = b.stmt(
(node.expression.type === 'CallExpression' ? b.call : b.maybe_call)(
snippet_function,
b.id('$$renderer'),
...snippet_args
)
);
context.state.template.push(...optimiser.render_block([statement]));
// If the render tag is wrapped in $.async, that $.async call already contains surrounding markers,
// so we don't need to (or rather must not, to avoid hydration mismatches) add our own.
if (!optimiser.is_async() && !context.state.is_standalone) {
context.state.template.push(empty_comment);
}
}
Domain
Subdomains
Functions
Dependencies
Source
Frequently Asked Questions
What does RenderTag.js do?
RenderTag.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 RenderTag.js?
RenderTag.js defines 1 function(s): RenderTag.
What does RenderTag.js depend on?
RenderTag.js imports 5 module(s): PromiseOptimiser, ast.js, builders, unwrap_optional, utils.js.
What files import RenderTag.js?
RenderTag.js is imported by 1 file(s): transform-server.js.
Where is RenderTag.js in the architecture?
RenderTag.js is located at packages/svelte/src/compiler/phases/3-transform/server/visitors/RenderTag.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/3-transform/server/visitors).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free