From 6359bbe13917dc595a202a51935184f066efabe1 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 17 Mar 2024 03:14:05 +0100 Subject: [PATCH] transpile label statements to p calls --- packages/transpiler/transpiler.mjs | 33 +++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/packages/transpiler/transpiler.mjs b/packages/transpiler/transpiler.mjs index 72f2e851..b4bd5d62 100644 --- a/packages/transpiler/transpiler.mjs +++ b/packages/transpiler/transpiler.mjs @@ -9,7 +9,7 @@ export function transpiler(input, options = {}) { let ast = parse(input, { ecmaVersion: 2022, allowAwaitOutsideFunction: true, - locations: true, + locations: false, }); let miniLocations = []; @@ -49,6 +49,9 @@ export function transpiler(input, options = {}) { if (isBareSamplesCall(node, parent)) { return this.replace(withAwait(node)); } + if (isLabelStatement(node)) { + return this.replace(labelToP(node)); + } }, leave(node, parent, prop, index) {}, }); @@ -132,3 +135,31 @@ function withAwait(node) { argument: node, }; } + +function isLabelStatement(node) { + return node.type === 'LabeledStatement'; +} + +function labelToP(node) { + return { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'MemberExpression', + object: node.body.expression, + property: { + type: 'Identifier', + name: 'p', + }, + }, + arguments: [ + { + type: 'Literal', + value: node.label.name, + raw: `'${node.label.name}'`, + }, + ], + }, + }; +}