Convert src/compiler/compile/render_ssr/handlers/AwaitBlock.ts to JavaScript

pull/8569/head
Simon Holthausen 3 years ago
parent 346059505a
commit 91202a220b

@ -1,26 +1,37 @@
import Renderer, { RenderOptions } from '../Renderer';
import AwaitBlock from '../../nodes/AwaitBlock';
import { x } from 'code-red';
import { get_const_tags } from './shared/get_const_tags';
import { get_const_tags } from './shared/get_const_tags.js';
export default function (node: AwaitBlock, renderer: Renderer, options: RenderOptions) {
renderer.push();
renderer.render(node.pending.children, options);
const pending = renderer.pop();
/**
* @param {AwaitBlock} node
* @param {Renderer} renderer
* @param {import('../Renderer').RenderOptions} options
*/
export default function (node, renderer, options) {
renderer.push();
renderer.render(node.pending.children, options);
renderer.push();
renderer.render(node.then.children, options);
const then = renderer.pop();
/**
* @type {undefined}
*/
const pending = renderer.pop();
renderer.push();
renderer.render(node.then.children, options);
renderer.add_expression(x`
/**
* @type {undefined}
*/
const then = renderer.pop();
renderer.add_expression(x `
function(__value) {
if (@is_promise(__value)) {
__value.then(null, @noop);
return ${pending};
}
return (function(${node.then_node ? node.then_node : ''}) { ${get_const_tags(
node.then.const_tags
)}; return ${then}; }(__value));
return (function(${node.then_node ? node.then_node : ''}) { ${get_const_tags(node.then.const_tags)}; return ${then}; }(__value));
}(${node.expression.node})
`);
}

@ -1,12 +1,12 @@
/**
* Transforms a list of Text and MustacheTags into a TemplateLiteral expression.
* Start/End positions on the elements of the expression are not set.
* @param {Array<Text | MustacheTag>} value
* @returns {import("C:/repos/svelte/svelte/node_modules/.pnpm/@types+estree@1.0.0/node_modules/@types/estree/index").TemplateLiteral}
* @param {Array<import('../../interfaces.js').Text | import('../../interfaces.js').MustacheTag>} value
* @returns {import('estree').TemplateLiteral}
*/
export function nodes_to_template_literal(value) {
/**
* @type {TemplateLiteral}
* @type {import('estree').TemplateLiteral}
*/
const literal = {
type: 'TemplateLiteral',
@ -15,7 +15,7 @@ export function nodes_to_template_literal(value) {
};
/**
* @type {TemplateElement}
* @type {import('estree').TemplateElement}
*/
let quasi = {
type: 'TemplateElement',
@ -27,7 +27,7 @@ export function nodes_to_template_literal(value) {
quasi.value.raw += node.raw;
} else if (node.type === 'MustacheTag') {
literal.quasis.push(quasi);
literal.expressions.push(node.expression);
literal.expressions.push(/** @type {any} */ (node.expression));
quasi = {
type: 'TemplateElement',
value: { raw: '', cooked: null },

Loading…
Cancel
Save