UNPKG

@airtasker/form-schema-compiler

Version:
130 lines (81 loc) 7.38 kB
"use strict"; 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;