UNPKG

siphon-cli

Version:

Simple bundler for web applications. 📦🔧🧡

101 lines (100 loc) • 4.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.transformtoPattern = void 0; var types_1 = require("../../../../types"); var base_1 = require("./base"); var transformtoPattern = function (expression) { var transform; if (expression instanceof types_1.ArrayExpression) { transform = new types_1.ArrayPattern(expression.loc.start); transform.elements = expression.elements; } else if (expression instanceof types_1.ObjectExpression) { transform = new types_1.ObjectPattern(expression.loc.start); transform.properties = expression.properties; } else transform = expression; transform.loc.end = expression.loc.end; return transform; }; exports.transformtoPattern = transformtoPattern; base_1.ezra.forStatement = function () { var _a; var start = this.i - 3, hasAwait = false, forstatement; this.outerspace(); if (this.match("await")) hasAwait = true; this.outerspace(); if (!this.eat("(")) this.raise("EXPECTED", "("); var parameters = this.group("for_params"); if (parameters[0].type === "VariableDeclaration" && (parameters[0].declarations[0].of || parameters[0].declarations[0].in)) { forstatement = parameters[0].declarations[0].of ? new types_1.ForOfStatement(start) : new types_1.ForInStatement(start); if (hasAwait) { if (parameters[0].declarations[0].of) forstatement.await = true; else this.raise("EXPECTED", "of", parameters[0].declarations[0].loc.end); } forstatement.left = parameters[0]; forstatement.right = parameters[0].declarations[0].right_val; delete parameters[0].declarations[0].right_val; delete parameters[0].declarations[0].of; delete parameters[0].declarations[0].in; if (parameters.length > 1) this.raise("EXPECTED", ")", parameters[0].loc.end); } else if (((_a = parameters[0].expression) === null || _a === void 0 ? void 0 : _a.type) === "BinaryExpression" && ["of", "in"].includes(parameters[0].expression.operator)) { var operator = parameters[0].expression.operator; forstatement = operator === "of" ? new types_1.ForOfStatement(start) : new types_1.ForInStatement(start); if (hasAwait) { if (operator === "of") forstatement.await = true; else this.raise("EXPECTED", "of", parameters[0].expression.left.loc.end); } forstatement.left = (0, exports.transformtoPattern)(parameters[0].expression.left); forstatement.right = parameters[0].expression.right; if (parameters.length > 1) this.raise("EXPECTED", ")", parameters[0].loc.end); } else { if (hasAwait) { this.raise("JS_UNEXP_KEYWORD_OR_IDENTIFIER", undefined, start + 3); } else if (parameters.length < 2 || parameters.length > 3) { this.raise("EXPRESSION_EXPECTED"); } forstatement = new types_1.ForStatement(start); forstatement.init = parameters[0] instanceof types_1.VariableDeclaration ? parameters[0] : parameters[0] instanceof types_1.ExpressionStatement ? parameters[0].expression : parameters[0] instanceof types_1.EmptyStatement ? null : this.raise("EXPRESSION_EXPECTED"); forstatement.test = parameters[1] instanceof types_1.ExpressionStatement ? parameters[1].expression : parameters[1] instanceof types_1.EmptyStatement ? null : this.raise("EXPRESSION_EXPECTED"); forstatement.update = parameters[2] instanceof types_1.ExpressionStatement ? parameters[2].expression : parameters[2] === undefined ? null : this.raise("EXPRESSION_EXPECTED"); } this.outerspace(); forstatement.body = this.statement(); forstatement.loc.end = forstatement.body.loc.end; return forstatement; };