MCPcopy
hub / github.com/livebud/bud / invalidate

Function invalidate

package/svelte/compiler.js:15059–15103  ·  view source on GitHub ↗
(renderer, scope2, node2, names2, main_execution_context = false)

Source from the content-addressed store, hash-verified

15057 return a === b2;
15058 }
15059 function invalidate(renderer, scope2, node2, names2, main_execution_context = false) {
15060 const { component } = renderer;
15061 const [head, ...tail] = Array.from(names2).filter((name) => {
15062 const owner = scope2.find_owner(name);
15063 return !owner || owner === component.instance_scope;
15064 }).map((name) => component.var_lookup.get(name)).filter((variable) => {
15065 return variable && (!variable.hoistable && !variable.global && !variable.module && (variable.referenced || variable.subscribable || variable.is_reactive_dependency || variable.export_name || variable.name[0] === "$"));
15066 });
15067 function get_invalidated(variable, node3) {
15068 if (main_execution_context && !variable.subscribable && variable.name[0] !== "$") {
15069 return node3;
15070 }
15071 return renderer_invalidate(renderer, variable.name, void 0, main_execution_context);
15072 }
15073 if (!head) {
15074 return node2;
15075 }
15076 component.has_reactive_assignments = true;
15077 if (node2.type === "AssignmentExpression" && node2.operator === "=" && nodes_match(node2.left, node2.right) && tail.length === 0) {
15078 return get_invalidated(head, node2);
15079 }
15080 const is_store_value = head.name[0] === "$" && head.name[1] !== "$";
15081 const extra_args = tail.map((variable) => get_invalidated(variable)).filter(Boolean);
15082 if (is_store_value) {
15083 return x`@set_store_value(${head.name.slice(1)}, ${node2}, ${head.name}, ${extra_args})`;
15084 }
15085 let invalidate2;
15086 if (!main_execution_context) {
15087 const pass_value = extra_args.length > 0 || node2.type === "AssignmentExpression" && node2.left.type !== "Identifier" || node2.type === "UpdateExpression" && (!node2.prefix || node2.argument.type !== "Identifier");
15088 if (pass_value) {
15089 extra_args.unshift({
15090 type: "Identifier",
15091 name: head.name
15092 });
15093 }
15094 invalidate2 = x`$$invalidate(${renderer.context_lookup.get(head.name).index}, ${node2}, ${extra_args})`;
15095 } else {
15096 invalidate2 = extra_args.length ? [node2, ...extra_args] : node2;
15097 }
15098 if (head.subscribable && head.reassigned) {
15099 const subscribe = `$$subscribe_${head.name}`;
15100 invalidate2 = x`${subscribe}(${invalidate2})`;
15101 }
15102 return invalidate2;
15103 }
15104 function renderer_invalidate(renderer, name, value2, main_execution_context = false) {
15105 const variable = renderer.component.var_lookup.get(name);
15106 if (variable && (variable.subscribable && (variable.reassigned || variable.export_name))) {

Callers 2

leaveMethod · 0.85
leaveFunction · 0.85

Calls 5

nodes_matchFunction · 0.85
get_invalidatedFunction · 0.85
xFunction · 0.85
find_ownerMethod · 0.80
getMethod · 0.80

Tested by

no test coverage detected