@airtasker/form-schema-compiler
Version:
a form schema compiler
130 lines (81 loc) • 7.38 kB
JavaScript
;
exports.__esModule = true;
var _TypeHandlers;
var _const = require("../const");
var _evaluateIdentifier = require("./evaluateIdentifier");
var _evaluateIdentifier2 = _interopRequireDefault(_evaluateIdentifier);
var _evaluateProgram = require("./evaluateProgram");
var _evaluateProgram2 = _interopRequireDefault(_evaluateProgram);
var _evaluateUnaryExpression = require("./evaluateUnaryExpression");
var _evaluateUnaryExpression2 = _interopRequireDefault(_evaluateUnaryExpression);
var _evaluateAssignExpression = require("./evaluateAssignExpression");
var _evaluateAssignExpression2 = _interopRequireDefault(_evaluateAssignExpression);
var _evaluateBinaryExpression = require("./evaluateBinaryExpression");
var _evaluateBinaryExpression2 = _interopRequireDefault(_evaluateBinaryExpression);
var _evaluateCallExpression = require("./evaluateCallExpression");
var _evaluateCallExpression2 = _interopRequireDefault(_evaluateCallExpression);
var _evaluateMemberObjectExpression = require("./evaluateMemberObjectExpression");
var _evaluateMemberObjectExpression2 = _interopRequireDefault(_evaluateMemberObjectExpression);
var _evaluateObjectExpression = require("./evaluateObjectExpression");
var _evaluateObjectExpression2 = _interopRequireDefault(_evaluateObjectExpression);
var _evaluateArrayExpression = require("./evaluateArrayExpression");
var _evaluateArrayExpression2 = _interopRequireDefault(_evaluateArrayExpression);
var _evaluateTemplateLiteral = require("./evaluateTemplateLiteral");
var _evaluateTemplateLiteral2 = _interopRequireDefault(_evaluateTemplateLiteral);
var _evaluateIfStatement = require("./evaluateIfStatement");
var _evaluateIfStatement2 = _interopRequireDefault(_evaluateIfStatement);
var _evaluateEventBindingExpression = require("./evaluateEventBindingExpression");
var _evaluateEventBindingExpression2 = _interopRequireDefault(_evaluateEventBindingExpression);
var _evaluatePropertyBindingExpression = require("./evaluatePropertyBindingExpression");
var _evaluatePropertyBindingExpression2 = _interopRequireDefault(_evaluatePropertyBindingExpression);
var _utils = require("../utils");
var _Environment = require("./Environment");
var _Environment2 = _interopRequireDefault(_Environment);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var getValue = function getValue(_ref) {
var value = _ref.value;
return value;
};
var toRegExp = function toRegExp(_ref2) {
var pattern = _ref2.pattern,
flags = _ref2.flags;
return new RegExp(pattern, flags);
};
var evaluateComponents = function evaluateComponents(expression, env) {
return env.evaluateComponents(expression);
};
var TypeHandlers = (_TypeHandlers = {}, _defineProperty(_TypeHandlers, _const.TYPES.Numeric, getValue), _defineProperty(_TypeHandlers, _const.TYPES.String, getValue), _defineProperty(_TypeHandlers, _const.TYPES.Boolean, getValue), _defineProperty(_TypeHandlers, _const.TYPES.Null, getValue), _defineProperty(_TypeHandlers, _const.TYPES.Raw, getValue), _defineProperty(_TypeHandlers, _const.TYPES.RegExp, toRegExp), _defineProperty(_TypeHandlers, _const.TYPES.Identifier, _evaluateIdentifier2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.UnaryExpression, _evaluateUnaryExpression2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.AssignExpression, _evaluateAssignExpression2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.BinaryExpression, _evaluateBinaryExpression2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.CallExpression, _evaluateCallExpression2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.Components, evaluateComponents), _defineProperty(_TypeHandlers, _const.TYPES.MemberExpression, _evaluateMemberObjectExpression2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.ObjectExpression, _evaluateObjectExpression2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.ArrayExpression, _evaluateArrayExpression2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.TemplateLiteral, _evaluateTemplateLiteral2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.Program, _evaluateProgram2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.BlockStatement, _evaluateProgram2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.IfStatement, _evaluateIfStatement2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.EventBinding, _evaluateEventBindingExpression2["default"]), _defineProperty(_TypeHandlers, _const.TYPES.PropertyBinding, _evaluatePropertyBindingExpression2["default"]), _TypeHandlers);
/**
* evaluate
* @param {*} ast
* @param {Environment} environment
* @returns {*}
*/
var evaluate = function evaluate(_ref3, environment) {
var type = _ref3.type,
ast = _objectWithoutProperties(_ref3, ["type"]);
if ((0, _utils.hasKey)(TypeHandlers, type)) {
return TypeHandlers[type](ast, environment, evaluate);
}
throw new Error("Wrong type ".concat(type, ", ").concat(JSON.stringify(_objectSpread({
type: type
}, ast))));
};
/**
* evaluateWithEnvironmentCheck
* @param {*} ast
* @param {Environment} environment
* @returns {*}
*/
var evaluateWithEnvironmentCheck = function evaluateWithEnvironmentCheck(ast, environment) {
if (!(environment instanceof _Environment2["default"])) {
throw new Error("Can't evaluate without a proper Environment instance");
}
return evaluate(ast, environment);
};
exports["default"] = evaluateWithEnvironmentCheck;