UNPKG

siphon-cli

Version:

Simple bundler for web applications. 📦🔧🧡

140 lines (139 loc) • 4.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.clone = exports.undefined_ = exports.this_ = exports.null_ = exports.true_ = exports.false_ = exports.newProp = exports.numberLiteral = exports.newString = exports.callExpression = exports.newIdentifier = exports.memberExpression = exports.blockStatement = exports.use_strict = exports.binaryExpression = exports.updateExpression = exports.unaryExpression = exports.expressionStatement = exports.assignmentExpression = exports.newFunctionExp = void 0; var types_1 = require("../../../../../types"); function newFunctionExp(id, params, body, isAsync, isGenerator) { if (id === void 0) { id = null; } if (params === void 0) { params = []; } if (body === void 0) { body = new types_1.BlockStatement(0); } if (isAsync === void 0) { isAsync = false; } if (isGenerator === void 0) { isGenerator = false; } var func = new types_1.FunctionExpression(0); func.id = id; func.params = params; func.expression = false; func.generator = isGenerator; func.async = isAsync; func.body = body; return func; } exports.newFunctionExp = newFunctionExp; function assignmentExpression(left, operator, right) { var assign = new types_1.AssignmentExpression(0); assign.left = left; assign.operator = operator; assign.right = right; return assign; } exports.assignmentExpression = assignmentExpression; function expressionStatement(expression) { var statement = new types_1.ExpressionStatement(expression.loc.start); statement.expression = expression; statement.loc.end = expression.loc.end; return statement; } exports.expressionStatement = expressionStatement; function unaryExpression(operator, argument) { var n = new types_1.UnaryExpression(0); n.prefix = true; n.operator = operator; n.argument = argument; return n; } exports.unaryExpression = unaryExpression; function updateExpression(operator, prefix, argument) { var u = new types_1.UpdateExpression(0); u.prefix = prefix; u.operator = operator; u.argument = argument; return u; } exports.updateExpression = updateExpression; function binaryExpression(left, operator, right) { var binexp = new types_1.BinaryExpression(0); binexp.left = left; binexp.operator = operator; binexp.right = right; return binexp; } exports.binaryExpression = binaryExpression; exports.use_strict = expressionStatement(newString('"use strict"')); function blockStatement(body) { var _a; var b = new types_1.BlockStatement(0); (_a = b.body).push.apply(_a, body); return b; } exports.blockStatement = blockStatement; function memberExpression(object, property, computed, optional) { if (computed === void 0) { computed = false; } if (optional === void 0) { optional = false; } var mem = new types_1.MemberExpression(object.loc.start); mem.object = object; mem.property = property; mem.computed = computed; mem.optional = optional; mem.loc.end = property.loc.end; return mem; } exports.memberExpression = memberExpression; function newIdentifier(name) { var id = new types_1.Identifier(0); id.name = name; return id; } exports.newIdentifier = newIdentifier; function callExpression(callee, args) { if (args === void 0) { args = []; } var call = new types_1.CallExpression(callee.loc.start); call.callee = callee; call.arguments = args; return call; } exports.callExpression = callExpression; function newString(raw) { var string = new types_1.Literal(0); string.kind = "string"; string.raw = raw; string.value = eval(raw); return string; } exports.newString = newString; function numberLiteral(value) { var num = new types_1.Literal(0); num.kind = typeof value === "bigint" ? "bigint" : "number"; num.value = value; num.raw = value.toString(); return num; } exports.numberLiteral = numberLiteral; function newProp(key, value) { var prop = new types_1.Property(0); prop.key = key; if (value === undefined) { prop.shorthand = true; prop.value = prop.key; } else prop.value = value; return prop; } exports.newProp = newProp; exports.false_ = new types_1.Literal(0); exports.false_.kind = "boolean"; exports.false_.raw = "false"; exports.false_.value = false; exports.true_ = new types_1.Literal(0); exports.true_.kind = "boolean"; exports.true_.raw = "true"; exports.true_.value = true; exports.null_ = new types_1.Literal(0); exports.null_.value = null; exports.null_.raw = "null"; exports.null_.kind = "null"; exports.this_ = new types_1.ThisExpression(0); exports.undefined_ = newIdentifier("undefined"); function clone(node) { return Object.assign(Object.create(Object.getPrototypeOf(node)), node); } exports.clone = clone;