From 8da725b01f35fa2f1e8534f70cb05b296bb5b213 Mon Sep 17 00:00:00 2001 From: Jeff Puzzo Date: Wed, 19 Jan 2022 10:35:25 -0500 Subject: [PATCH 1/3] fix: TS to JS conversion - Ability to spread props within components & allow for empty tags (fragments) --- packages/ast-helpers/stringify.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/ast-helpers/stringify.js b/packages/ast-helpers/stringify.js index ec17c115e7..bf0ad15c8d 100644 --- a/packages/ast-helpers/stringify.js +++ b/packages/ast-helpers/stringify.js @@ -212,7 +212,7 @@ const es2017GeneratorJSX = { }, // {...props} JSXSpreadAttribute(node, state) { - state.write('...('); + state.write(' {...('); if (node.argument.type === 'LogicalExpression') { this[node.argument.left.type](node.argument.left, state); state.write(' '); @@ -223,7 +223,7 @@ const es2017GeneratorJSX = { else { this[node.argument.type](node.argument, state); } - state.write(')'); + state.write(')}'); }, // <> JSXFragment(node, state) { @@ -232,8 +232,17 @@ const es2017GeneratorJSX = { attributes: [], name: { type: 'JSXIdentifier', - name: 'React.Fragment' - } + name: '' + }, + type: 'JSXOpeningElement' + }, + closingElement: { + attributes: [], + name: { + type: 'JSXIdentifier', + name: '' + }, + type: 'JSXClosingElement' }, children: node.children }, state); From 914d05fff8b33b6d1ae01549cd3d8d2341d9919e Mon Sep 17 00:00:00 2001 From: Jeff Puzzo Date: Thu, 20 Jan 2022 17:32:34 -0500 Subject: [PATCH 2/3] moving paren usage --- packages/ast-helpers/stringify.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/ast-helpers/stringify.js b/packages/ast-helpers/stringify.js index bf0ad15c8d..d2db21b523 100644 --- a/packages/ast-helpers/stringify.js +++ b/packages/ast-helpers/stringify.js @@ -212,18 +212,18 @@ const es2017GeneratorJSX = { }, // {...props} JSXSpreadAttribute(node, state) { - state.write(' {...('); + state.write(' {...'); if (node.argument.type === 'LogicalExpression') { this[node.argument.left.type](node.argument.left, state); - state.write(' '); + state.write('('); state.write(node.argument.operator); - state.write(' '); + state.write(')'); this[node.argument.right.type](node.argument.right, state); } else { this[node.argument.type](node.argument, state); } - state.write(')}'); + state.write('}'); }, // <> JSXFragment(node, state) { From a8f6f5098796ec6e20710ef9b85ed6e944f00c6d Mon Sep 17 00:00:00 2001 From: Jeff Puzzo Date: Fri, 21 Jan 2022 09:29:34 -0500 Subject: [PATCH 3/3] address more feedback --- packages/ast-helpers/stringify.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/ast-helpers/stringify.js b/packages/ast-helpers/stringify.js index d2db21b523..84c84f26e2 100644 --- a/packages/ast-helpers/stringify.js +++ b/packages/ast-helpers/stringify.js @@ -214,11 +214,11 @@ const es2017GeneratorJSX = { JSXSpreadAttribute(node, state) { state.write(' {...'); if (node.argument.type === 'LogicalExpression') { - this[node.argument.left.type](node.argument.left, state); state.write('('); - state.write(node.argument.operator); - state.write(')'); + this[node.argument.left.type](node.argument.left, state); + state.write(` ${node.argument.operator} `); this[node.argument.right.type](node.argument.right, state); + state.write(')'); } else { this[node.argument.type](node.argument, state);