MCPcopy
hub / github.com/sveltejs/svelte / SvelteComponent

Function SvelteComponent

packages/svelte/src/compiler/migrate/index.js:1144–1213  ·  view source on GitHub ↗
(node, { state, next, path })

Source from the content-addressed store, hash-verified

1142 migrate_slot_usage(node, path, state);
1143 },
1144 SvelteComponent(node, { state, next, path }) {
1145 next();
1146
1147 migrate_slot_usage(node, path, state);
1148
1149 let expression = state.str
1150 .snip(
1151 /** @type {number} */ (node.expression.start),
1152 /** @type {number} */ (node.expression.end)
1153 )
1154 .toString();
1155
1156 if (
1157 (node.expression.type !== 'Identifier' && node.expression.type !== 'MemberExpression') ||
1158 !regex_valid_component_name.test(expression)
1159 ) {
1160 let current_expression = expression;
1161 expression = state.scope.generate('SvelteComponent');
1162 let needs_derived = true;
1163 for (let i = path.length - 1; i >= 0; i--) {
1164 const part = path[i];
1165 if (
1166 part.type === 'EachBlock' ||
1167 part.type === 'AwaitBlock' ||
1168 part.type === 'IfBlock' ||
1169 part.type === 'SnippetBlock' ||
1170 part.type === 'Component' ||
1171 part.type === 'SvelteComponent'
1172 ) {
1173 let position = node.start;
1174 if (i !== path.length - 1) {
1175 for (let modifier = 1; modifier < path.length - i; modifier++) {
1176 const path_part = path[i + modifier];
1177 if ('start' in path_part) {
1178 position = /** @type {number} */ (path_part.start);
1179 break;
1180 }
1181 }
1182 }
1183 const indent = state.str.original.substring(
1184 state.str.original.lastIndexOf('\n', position) + 1,
1185 position
1186 );
1187 state.str.appendRight(
1188 position,
1189 `{@const ${expression} = ${current_expression}}\n${indent}`
1190 );
1191 needs_derived = false;
1192 break;
1193 }
1194 }
1195 if (needs_derived) {
1196 if (state.derived_components.has(current_expression)) {
1197 expression = /** @type {string} */ (state.derived_components.get(current_expression));
1198 } else {
1199 state.derived_components.set(current_expression, expression);
1200 }
1201 }

Callers

nothing calls this directly

Calls 7

migrate_slot_usageFunction · 0.85
generateMethod · 0.80
setMethod · 0.65
nextFunction · 0.50
toStringMethod · 0.45
hasMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected