You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/src/compiler/compile/render_ssr/handlers/AwaitBlock.ts

21 lines
621 B

import Renderer, { RenderOptions } from '../Renderer';
import AwaitBlock from '../../nodes/AwaitBlock';
import { x } from 'code-red';
export default function(node: AwaitBlock, renderer: Renderer, options: RenderOptions) {
renderer.push();
renderer.render(node.pending.children, options);
const pending = renderer.pop();
renderer.push();
renderer.render(node.then.children, options);
const then = renderer.pop();
renderer.add_expression(x`
function(__value) {
if (@is_promise(__value)) return ${pending};
return (function(${node.value}) { return ${then}; }(__value));
}(${node.expression.node})
`);
}