siphon-cli
Version:
Simple bundler for web applications. 📦🔧🧡
140 lines (139 loc) • 4.98 kB
JavaScript
;
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;