UNPKG

fluid-func

Version:

A way to write your code with functional programming in mind.

116 lines (97 loc) 4.58 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _defaults = require('./defaults'); var _SpecFailedException = require('./SpecFailedException'); var _transformer = require('./transformer'); var _translator = require('./translator'); var _validators = require('./validators'); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Spec = function () { function Spec(field) { _classCallCheck(this, Spec); this.field = field; this.actions = []; this.data = {}; classValidation(this); } _createClass(Spec, [{ key: 'default', value: function _default(defaultValue) { addAction(this, 'default'); this.data = _extends({}, this.data, { defaultValue: defaultValue }); } }, { key: 'require', value: function require(_require, requireMessage) { addAction(this, 'require'); this.data = _extends({}, this.data, { require: _require, requireMessage: requireMessage }); } }, { key: 'validate', value: function validate() { var validator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (currentValue) { return new Promise(); }; addAction(this, 'validate'); this.data = _extends({}, this.data, { validator: validator }); } }, { key: 'transform', value: function transform() { var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (currentValue) { return new Promise(); }; addAction(this, 'transform'); this.data = _extends({}, this.data, { transformer: transformer }); } }, { key: 'translate', value: function translate() { var translator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (currentValue, context) { return new Promise(); }; addAction(this, 'translate'); this.data = _extends({}, this.data, { translator: translator }); } }, { key: 'runValidation', value: function runValidation(context) { return new _validators.Validators(this.field, context, this.data, _SpecFailedException.SpecFailedException).runValidation(); } }, { key: 'runRequireValidation', value: function runRequireValidation(context) { return new _validators.Validators(this.field, context, this.data, _SpecFailedException.SpecFailedException).runRequireValidation(); } }, { key: 'runDefault', value: function runDefault(context) { return new _defaults.Defaults(this.field, this.data, context, _SpecFailedException.SpecFailedException).runDefault(); } }, { key: 'runTransform', value: function runTransform(context) { return new _transformer.Transformer(this.field, this.data, context, _SpecFailedException.SpecFailedException).runTransform(); } }, { key: 'runTranslate', value: function runTranslate(context) { return new _translator.Translator(this.field, this.data, context, _SpecFailedException.SpecFailedException).runTranslate(); } }]); return Spec; }(); exports.default = Spec; function addAction(spec, actionName) { spec.actions.push(actionName); } function classValidation(spec) { if (!spec.field) { throw new Error('Field name is required.'); } }