remove unnecessary wrapper

pull/16757/head
Rich Harris 7 days ago
parent f9235040c1
commit b80dfaed54

@ -43,7 +43,7 @@ export function AwaitExpression(node, context) {
e.legacy_await_invalid(node);
}
context.state.analysis.suspends_without_fallback ||= !context.state.boundary?.metadata.pending;
context.state.analysis.suspends_without_fallback ||= context.state.ast_type === 'instance';
}
context.next();

@ -238,16 +238,16 @@ export function server_component(analysis, options) {
template.body.push(b.stmt(b.call('$.bind_props', b.id('$$props'), b.object(props))));
}
const component_block = b.block([
call_child_payload(
b.block([
.../** @type {Statement[]} */ (instance.body),
.../** @type {Statement[]} */ (template.body)
]),
analysis.suspends_without_fallback
)
let component_block = b.block([
.../** @type {Statement[]} */ (instance.body),
.../** @type {Statement[]} */ (template.body)
]);
// TODO 'suspends_without_fallback' is probably a misnomer now
if (analysis.suspends_without_fallback) {
component_block = b.block([call_child_payload(component_block, true)]);
}
// trick esrap into including comments
component_block.loc = instance.loc;

@ -2,28 +2,26 @@ import * as $ from 'svelte/internal/server';
export default function Async_each_fallback_hoisting($$payload) {
$$payload.child(async ($$payload) => {
$$payload.child(async ($$payload) => {
const each_array = $.ensure_array_like(await Promise.resolve([]));
const each_array = $.ensure_array_like(await Promise.resolve([]));
if (each_array.length !== 0) {
$$payload.push('<!--[-->');
if (each_array.length !== 0) {
$$payload.push('<!--[-->');
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let item = each_array[$$index];
$$payload.child(async ($$payload) => {
$$payload.push(`<!---->${$.escape(await Promise.reject('This should never be reached'))}`);
});
}
} else {
$$payload.push('<!--[!-->');
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let item = each_array[$$index];
$$payload.child(async ($$payload) => {
$$payload.push(`<!---->${$.escape(await Promise.resolve(4))}`);
$$payload.push(`<!---->${$.escape(await Promise.reject('This should never be reached'))}`);
});
}
} else {
$$payload.push('<!--[!-->');
$$payload.child(async ($$payload) => {
$$payload.push(`<!---->${$.escape(await Promise.resolve(4))}`);
});
}
$$payload.push(`<!--]-->`);
});
$$payload.push(`<!--]-->`);
});
}

@ -1,25 +1,23 @@
import * as $ from 'svelte/internal/server';
export default function Async_each_hoisting($$payload) {
$$payload.child(async ($$payload) => {
const first = Promise.resolve(1);
const second = Promise.resolve(2);
const third = Promise.resolve(3);
const first = Promise.resolve(1);
const second = Promise.resolve(2);
const third = Promise.resolve(3);
$$payload.child(async ($$payload) => {
const each_array = $.ensure_array_like(await Promise.resolve([first, second, third]));
$$payload.child(async ($$payload) => {
const each_array = $.ensure_array_like(await Promise.resolve([first, second, third]));
$$payload.push(`<!--[-->`);
$$payload.push(`<!--[-->`);
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let item = each_array[$$index];
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let item = each_array[$$index];
$$payload.child(async ($$payload) => {
$$payload.push(`<!---->${$.escape(await item)}`);
});
}
$$payload.child(async ($$payload) => {
$$payload.push(`<!---->${$.escape(await item)}`);
});
}
$$payload.push(`<!--]-->`);
});
$$payload.push(`<!--]-->`);
});
}

@ -2,22 +2,20 @@ import * as $ from 'svelte/internal/server';
export default function Async_if_alternate_hoisting($$payload) {
$$payload.child(async ($$payload) => {
$$payload.child(async ($$payload) => {
if (await Promise.resolve(false)) {
$$payload.push('<!--[-->');
if (await Promise.resolve(false)) {
$$payload.push('<!--[-->');
$$payload.child(async ($$payload) => {
$$payload.push(`${$.escape(await Promise.reject('no no no'))}`);
});
} else {
$$payload.push('<!--[!-->');
$$payload.child(async ($$payload) => {
$$payload.push(`${$.escape(await Promise.reject('no no no'))}`);
});
} else {
$$payload.push('<!--[!-->');
$$payload.child(async ($$payload) => {
$$payload.push(`${$.escape(await Promise.resolve('yes yes yes'))}`);
});
}
$$payload.child(async ($$payload) => {
$$payload.push(`${$.escape(await Promise.resolve('yes yes yes'))}`);
});
}
$$payload.push(`<!--]-->`);
});
$$payload.push(`<!--]-->`);
});
}

@ -2,22 +2,20 @@ import * as $ from 'svelte/internal/server';
export default function Async_if_hoisting($$payload) {
$$payload.child(async ($$payload) => {
$$payload.child(async ($$payload) => {
if (await Promise.resolve(true)) {
$$payload.push('<!--[-->');
if (await Promise.resolve(true)) {
$$payload.push('<!--[-->');
$$payload.child(async ($$payload) => {
$$payload.push(`${$.escape(await Promise.resolve('yes yes yes'))}`);
});
} else {
$$payload.push('<!--[!-->');
$$payload.child(async ($$payload) => {
$$payload.push(`${$.escape(await Promise.resolve('yes yes yes'))}`);
});
} else {
$$payload.push('<!--[!-->');
$$payload.child(async ($$payload) => {
$$payload.push(`${$.escape(await Promise.reject('no no no'))}`);
});
}
$$payload.child(async ($$payload) => {
$$payload.push(`${$.escape(await Promise.reject('no no no'))}`);
});
}
$$payload.push(`<!--]-->`);
});
$$payload.push(`<!--]-->`);
});
}

@ -1,16 +1,14 @@
import * as $ from 'svelte/internal/server';
export default function Await_block_scope($$payload) {
$$payload.child(($$payload) => {
let counter = { count: 0 };
const promise = Promise.resolve(counter);
let counter = { count: 0 };
const promise = Promise.resolve(counter);
function increment() {
counter.count += 1;
}
function increment() {
counter.count += 1;
}
$$payload.push(`<button>clicks: ${$.escape(counter.count)}</button> `);
$.await($$payload, promise, () => {}, (counter) => {});
$$payload.push(`<!--]--> ${$.escape(counter.count)}`);
});
$$payload.push(`<button>clicks: ${$.escape(counter.count)}</button> `);
$.await($$payload, promise, () => {}, (counter) => {});
$$payload.push(`<!--]--> ${$.escape(counter.count)}`);
}

@ -6,33 +6,31 @@ function snippet($$payload) {
}
export default function Bind_component_snippet($$payload) {
$$payload.child(($$payload) => {
let value = '';
const _snippet = snippet;
let $$settled = true;
let $$inner_payload;
let value = '';
const _snippet = snippet;
let $$settled = true;
let $$inner_payload;
function $$render_inner($$payload) {
TextInput($$payload, {
get value() {
return value;
},
function $$render_inner($$payload) {
TextInput($$payload, {
get value() {
return value;
},
set value($$value) {
value = $$value;
$$settled = false;
}
});
set value($$value) {
value = $$value;
$$settled = false;
}
});
$$payload.push(`<!----> value: ${$.escape(value)}`);
}
$$payload.push(`<!----> value: ${$.escape(value)}`);
}
do {
$$settled = true;
$$inner_payload = $$payload.copy();
$$render_inner($$inner_payload);
} while (!$$settled);
do {
$$settled = true;
$$inner_payload = $$payload.copy();
$$render_inner($$inner_payload);
} while (!$$settled);
$$payload.subsume($$inner_payload);
});
$$payload.subsume($$inner_payload);
}

@ -1,7 +1,5 @@
import * as $ from 'svelte/internal/server';
export default function Bind_this($$payload) {
$$payload.child(($$payload) => {
Foo($$payload, {});
});
Foo($$payload, {});
}

@ -3,38 +3,36 @@ import * as $ from 'svelte/internal/server';
export default function Class_state_field_constructor_assignment($$payload, $$props) {
$.push();
$$payload.child(($$payload) => {
class Foo {
a = 0;
#b;
#foo = $.derived(() => ({ bar: this.a * 2 }));
get foo() {
return this.#foo();
}
set foo($$value) {
return this.#foo($$value);
}
#bar = $.derived(() => ({ baz: this.foo }));
get bar() {
return this.#bar();
}
set bar($$value) {
return this.#bar($$value);
}
constructor() {
this.a = 1;
this.#b = 2;
this.foo.bar = 3;
this.bar = 4;
}
class Foo {
a = 0;
#b;
#foo = $.derived(() => ({ bar: this.a * 2 }));
get foo() {
return this.#foo();
}
set foo($$value) {
return this.#foo($$value);
}
#bar = $.derived(() => ({ baz: this.foo }));
get bar() {
return this.#bar();
}
set bar($$value) {
return this.#bar($$value);
}
constructor() {
this.a = 1;
this.#b = 2;
this.foo.bar = 3;
this.bar = 4;
}
});
}
$.pop();
}

@ -1,15 +1,13 @@
import * as $ from 'svelte/internal/server';
export default function Delegated_locally_declared_shadowed($$payload) {
$$payload.child(($$payload) => {
const each_array = $.ensure_array_like({ length: 1 });
const each_array = $.ensure_array_like({ length: 1 });
$$payload.push(`<!--[-->`);
$$payload.push(`<!--[-->`);
for (let index = 0, $$length = each_array.length; index < $$length; index++) {
$$payload.push(`<button type="button"${$.attr('data-index', index)}>B</button>`);
}
for (let index = 0, $$length = each_array.length; index < $$length; index++) {
$$payload.push(`<button type="button"${$.attr('data-index', index)}>B</button>`);
}
$$payload.push(`<!--]-->`);
});
$$payload.push(`<!--]-->`);
}

@ -1,10 +1,10 @@
import * as $ from 'svelte/internal/server';
export default function Main($$payload) {
$$payload.child(($$payload) => {
let x = 'test';
let y = () => 'test';
// needs to be a snapshot test because jsdom does auto-correct the attribute casing
let x = 'test';
$$payload.push(`<div${$.attr('foobar', x)}></div> <svg${$.attr('viewBox', x)}></svg> <custom-element${$.attr('foobar', x)}></custom-element> <div${$.attr('foobar', y())}></div> <svg${$.attr('viewBox', y())}></svg> <custom-element${$.attr('foobar', y())}></custom-element>`);
});
let y = () => 'test';
$$payload.push(`<div${$.attr('foobar', x)}></div> <svg${$.attr('viewBox', x)}></svg> <custom-element${$.attr('foobar', x)}></custom-element> <div${$.attr('foobar', y())}></div> <svg${$.attr('viewBox', y())}></svg> <custom-element${$.attr('foobar', y())}></custom-element>`);
}

@ -1,15 +1,13 @@
import * as $ from 'svelte/internal/server';
export default function Each_index_non_null($$payload) {
$$payload.child(($$payload) => {
const each_array = $.ensure_array_like(Array(10));
const each_array = $.ensure_array_like(Array(10));
$$payload.push(`<!--[-->`);
$$payload.push(`<!--[-->`);
for (let i = 0, $$length = each_array.length; i < $$length; i++) {
$$payload.push(`<p>index: ${$.escape(i)}</p>`);
}
for (let i = 0, $$length = each_array.length; i < $$length; i++) {
$$payload.push(`<p>index: ${$.escape(i)}</p>`);
}
$$payload.push(`<!--]-->`);
});
$$payload.push(`<!--]-->`);
}

@ -1,17 +1,15 @@
import * as $ from 'svelte/internal/server';
export default function Each_string_template($$payload) {
$$payload.child(($$payload) => {
const each_array = $.ensure_array_like(['foo', 'bar', 'baz']);
const each_array = $.ensure_array_like(['foo', 'bar', 'baz']);
$$payload.push(`<!--[-->`);
$$payload.push(`<!--[-->`);
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let thing = each_array[$$index];
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
let thing = each_array[$$index];
$$payload.push(`<!---->${$.escape(thing)}, `);
}
$$payload.push(`<!---->${$.escape(thing)}, `);
}
$$payload.push(`<!--]-->`);
});
$$payload.push(`<!--]-->`);
}

@ -1,27 +1,25 @@
import * as $ from 'svelte/internal/server';
export default function Function_prop_no_getter($$payload) {
$$payload.child(($$payload) => {
let count = 0;
let count = 0;
function onmouseup() {
count += 2;
}
function onmouseup() {
count += 2;
}
const plusOne = (num) => num + 1;
const plusOne = (num) => num + 1;
Button($$payload, {
onmousedown: () => count += 1,
onmouseup,
onmouseenter: () => count = plusOne(count),
Button($$payload, {
onmousedown: () => count += 1,
onmouseup,
onmouseenter: () => count = plusOne(count),
children: ($$payload) => {
$$payload.child(($$payload) => {
$$payload.push(`<!---->clicks: ${$.escape(count)}`);
});
},
children: ($$payload) => {
$$payload.child(($$payload) => {
$$payload.push(`<!---->clicks: ${$.escape(count)}`);
});
},
$$slots: { default: true }
});
$$slots: { default: true }
});
}

@ -1,7 +1,5 @@
import * as $ from 'svelte/internal/server';
export default function Functional_templating($$payload) {
$$payload.child(($$payload) => {
$$payload.push(`<h1>hello</h1> <div class="potato"><p>child element</p> <p>another child element</p></div>`);
});
$$payload.push(`<h1>hello</h1> <div class="potato"><p>child element</p> <p>another child element</p></div>`);
}

@ -1,7 +1,5 @@
import * as $ from 'svelte/internal/server';
export default function Hello_world($$payload) {
$$payload.child(($$payload) => {
$$payload.push(`<h1>hello world</h1>`);
});
$$payload.push(`<h1>hello world</h1>`);
}

@ -1,7 +1,5 @@
import * as $ from 'svelte/internal/server';
export default function Hmr($$payload) {
$$payload.child(($$payload) => {
$$payload.push(`<h1>hello world</h1>`);
});
$$payload.push(`<h1>hello world</h1>`);
}

@ -1,6 +1,4 @@
import * as $ from 'svelte/internal/server';
import { random } from './module.svelte';
export default function Imports_in_modules($$payload) {
$$payload.child(($$payload) => {});
}
export default function Imports_in_modules($$payload) {}

@ -1,10 +1,8 @@
import * as $ from 'svelte/internal/server';
export default function Nullish_coallescence_omittance($$payload) {
$$payload.child(($$payload) => {
let name = 'world';
let count = 0;
let name = 'world';
let count = 0;
$$payload.push(`<h1>Hello, world!</h1> <b>123</b> <button>Count is ${$.escape(count)}</button> <h1>Hello, world</h1>`);
});
$$payload.push(`<h1>Hello, world!</h1> <b>123</b> <button>Count is ${$.escape(count)}</button> <h1>Hello, world</h1>`);
}

@ -3,17 +3,14 @@ import * as $ from 'svelte/internal/server';
export default function Props_identifier($$payload, $$props) {
$.push();
$$payload.child(($$payload) => {
let { $$slots, $$events, ...props } = $$props;
props.a;
props[a];
props.a.b;
props.a.b = true;
props.a = true;
props[a] = true;
props;
});
let { $$slots, $$events, ...props } = $$props;
props.a;
props[a];
props.a.b;
props.a.b = true;
props.a = true;
props[a] = true;
props;
$.pop();
}

@ -1,9 +1,7 @@
import * as $ from 'svelte/internal/server';
export default function Purity($$payload) {
$$payload.child(($$payload) => {
$$payload.push(`<p>0</p> <p>${$.escape(location.href)}</p> `);
Child($$payload, { prop: encodeURIComponent('hello') });
$$payload.push(`<!---->`);
});
$$payload.push(`<p>0</p> <p>${$.escape(location.href)}</p> `);
Child($$payload, { prop: encodeURIComponent('hello') });
$$payload.push(`<!---->`);
}

@ -1,9 +1,7 @@
import * as $ from 'svelte/internal/server';
export default function Skip_static_subtree($$payload, $$props) {
$$payload.child(($$payload) => {
let { title, content } = $$props;
let { title, content } = $$props;
$$payload.push(`<header><nav><a href="/">Home</a> <a href="/away">Away</a></nav></header> <main><h1>${$.escape(title)}</h1> <div class="static"><p>we don't need to traverse these nodes</p></div> <p>or</p> <p>these</p> <p>ones</p> ${$.html(content)} <p>these</p> <p>trailing</p> <p>nodes</p> <p>can</p> <p>be</p> <p>completely</p> <p>ignored</p></main> <cant-skip><custom-elements with="attributes"></custom-elements></cant-skip> <div><input autofocus/></div> <div><source muted/></div> <select><option value="a"${$.maybe_selected($$payload, 'a')}>a</option></select> <img src="..." alt="" loading="lazy"/> <div><img src="..." alt="" loading="lazy"/></div>`);
});
$$payload.push(`<header><nav><a href="/">Home</a> <a href="/away">Away</a></nav></header> <main><h1>${$.escape(title)}</h1> <div class="static"><p>we don't need to traverse these nodes</p></div> <p>or</p> <p>these</p> <p>ones</p> ${$.html(content)} <p>these</p> <p>trailing</p> <p>nodes</p> <p>can</p> <p>be</p> <p>completely</p> <p>ignored</p></main> <cant-skip><custom-elements with="attributes"></custom-elements></cant-skip> <div><input autofocus/></div> <div><source muted/></div> <select><option value="a"${$.maybe_selected($$payload, 'a')}>a</option></select> <img src="..." alt="" loading="lazy"/> <div><img src="..." alt="" loading="lazy"/></div>`);
}

@ -1,17 +1,15 @@
import * as $ from 'svelte/internal/server';
export default function State_proxy_literal($$payload) {
$$payload.child(($$payload) => {
let str = '';
let tpl = ``;
let str = '';
let tpl = ``;
function reset() {
str = '';
str = ``;
tpl = '';
tpl = ``;
}
function reset() {
str = '';
str = ``;
tpl = '';
tpl = ``;
}
$$payload.push(`<input${$.attr('value', str)}/> <input${$.attr('value', tpl)}/> <button>reset</button>`);
});
$$payload.push(`<input${$.attr('value', str)}/> <input${$.attr('value', tpl)}/> <button>reset</button>`);
}

@ -1,9 +1,7 @@
import * as $ from 'svelte/internal/server';
export default function Svelte_element($$payload, $$props) {
$$payload.child(($$payload) => {
let { tag = 'hr' } = $$props;
let { tag = 'hr' } = $$props;
$.element($$payload, tag);
});
$.element($$payload, tag);
}

@ -1,18 +1,16 @@
import * as $ from 'svelte/internal/server';
export default function Text_nodes_deriveds($$payload) {
$$payload.child(($$payload) => {
let count1 = 0;
let count2 = 0;
let count1 = 0;
let count2 = 0;
function text1() {
return count1;
}
function text1() {
return count1;
}
function text2() {
return count2;
}
function text2() {
return count2;
}
$$payload.push(`<p>${$.escape(text1())}${$.escape(text2())}</p>`);
});
$$payload.push(`<p>${$.escape(text1())}${$.escape(text2())}</p>`);
}
Loading…
Cancel
Save