UNPKG

class-o-mat

Version:

ALPHA VERSION ONLY: class-o-mats will help to create getter-setter functionality with validations that can be attached to a container class for easier coding. Some basic validations are included. class-o-mats also has the ability to store params as bloc

302 lines (219 loc) 10.4 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.adjustDefault = exports.build = undefined; var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var _bunyan = require('bunyan'); var _bunyan2 = _interopRequireDefault(_bunyan); var _mixinDecorator = require('mixin-decorator'); var _mixinDecorator2 = _interopRequireDefault(_mixinDecorator); var _lodash = require('lodash.merge'); var _lodash2 = _interopRequireDefault(_lodash); var _types = require('../constants/types'); var _stack = require('../prototype/stack'); var _stack2 = _interopRequireDefault(_stack); var _queue = require('../prototype/queue'); var _queue2 = _interopRequireDefault(_queue); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var log = _bunyan2.default.createLogger({ name: "buildField" }); var _buildAsAbstract = function _buildAsAbstract(key) { return function () { throw new Error(this.___minionKey + ' Error: Illegal Abstract Key ' + key); }; }; var _buildWithGetAction = function _buildWithGetAction(onGetAction, method) { if (onGetAction === _types.NONE) return method; return function (ts, params, key) { var value = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _types.NONE; if (value === _types.NONE) { var result = method(ts, params, key, value); onGetAction(ts, result); return result; } return method(ts, params, key, value); }; }; var _buildWithGetReducer = function _buildWithGetReducer(onGetReducer, method) { if (onGetReducer === _types.NONE) return method; return function (ts, params, key) { var value = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _types.NONE; if (value === _types.NONE) return onGetReducer(method(ts, params, key, value)); return method(ts, params, key, value); }; }; var _buildWithValidator = function _buildWithValidator(validator, method) { if (validator === _types.NONE || validator.meta === true) return method; return function (ts, params, key) { var value = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _types.NONE; for (var _len = arguments.length, p = Array(_len > 4 ? _len - 4 : 0), _key = 4; _key < _len; _key++) { p[_key - 4] = arguments[_key]; } if (value === _types.NONE) return method.apply(undefined, [ts, params, key, value].concat(p)); var isValid = validator(value, ts); return isValid === true ? method.apply(undefined, [ts, params, key, value].concat(p)) : method.apply(undefined, [ts, params, key, _types.NONE].concat(p)); }; }; var _buildWithSetAction = function _buildWithSetAction(onSetAction, method) { if (onSetAction === _types.NONE) return method; return function (ts, params, key) { var value = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _types.NONE; if (value === _types.NONE) return method(ts, params, key, value); var result = method(ts, params, key, value); onSetAction(ts, value); return result; }; }; var _buildWithSetReducer = function _buildWithSetReducer(onSetReducer, method) { if (onSetReducer === _types.NONE) return method; return function (ts, params, key) { var value = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _types.NONE; if (value === _types.NONE) return method(ts, params, key, value); return method(ts, params, key, onSetReducer(value, ts)); }; }; var _buildWithFallback = function _buildWithFallback(fallback, method) { if (fallback === _types.NONE) return method; return function (ts, params, key) { var value = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _types.NONE; if (value === _types.NONE) { return method(ts, params, key, value) || ts[fallback](); return method(ts, params, key, value); } }; }; var _buildWithNoParamsObject = function _buildWithNoParamsObject(paramObjectKey, internalKey, method) { var ___internalKey = '___' + internalKey; return function () { for (var _len2 = arguments.length, p = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { p[_key2] = arguments[_key2]; } return method.apply(undefined, [this, this, ___internalKey].concat(p)); }; }; var _buildWithParamsObject = function _buildWithParamsObject(paramObjectKey, internalKey, method) { return function () { for (var _len3 = arguments.length, p = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { p[_key3] = arguments[_key3]; } return method.apply(undefined, [this, this[paramObjectKey], internalKey].concat(p)); }; }; var _buildToParamsObject = function _buildToParamsObject(paramObjectKey, internalKey, method) { return paramObjectKey === false ? _buildWithNoParamsObject(paramObjectKey, internalKey, method) : _buildWithParamsObject(paramObjectKey, internalKey, method); }; var _buildWithSetEvent = function _buildWithSetEvent(onSet, method) { if (onSet === _types.NONE) return method; return function (ts, params, key) { var value = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _types.NONE; if (value === _types.NONE) return method(ts, params, key, value); var result = method(ts, params, key, value); onSet(ts, key, value); return result; }; }; var _buildWithGetEvent = function _buildWithGetEvent(onGet, method) { if (onGet === _types.NONE) return method; return function (ts, params, key) { var value = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _types.NONE; if (value === _types.NONE) { var result = method(ts, params); onGet(ts, key, result); return result; } return method(ts, params, key, value); }; }; var _buildMethodOMats = function _buildMethodOMats(methodOMats) { if (methodOMats === _types.NONE || methodOMats.length === 0) return [_types.NONE, _types.NONE]; var curryReducer = function curryReducer(reducer, additionToMethod) { return function (v) { return additionToMethod(reducer(v)); }; }; var curryMethodSet = function curryMethodSet(method, _methodOMats) { var _l = _methodOMats.length; if (_l === 0) return method; method = _methodOMats[0]._params.method; if (_l !== 1) return method; var i = 1; for (; i !== _l; i++) { method = curryReducer(method, _methodOMats[i]._params.method); } return method; }; var onGetMethod = _types.NONE; var onSetMethod = _types.NONE; var getMethodOMats = methodOMats.filter(function (methodOMat) { return methodOMat._params.onGet; }); var setMethodOMats = methodOMats.filter(function (methodOMat) { return methodOMat._params.onSet; }); onGetMethod = curryMethodSet(onGetMethod, getMethodOMats); onSetMethod = curryMethodSet(onSetMethod, setMethodOMats); return [onGetMethod, onSetMethod]; }; var _buildAsCollection = function _buildAsCollection(params, method) { var key = params.key, isQueue = params.isQueue, isStack = params.isStack; if (isQueue === false && isStack === false) return [method, _types.NONE]; var ___key = '___' + key; var CollectionClass = isStack === true ? _stack2.default : _queue2.default; method = function method() { var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _types.NONE; return new CollectionClass(this, key, ___key, value); }; params.key = params.internalKey = ___key; params.isQueue = params.isStack = false; var ___method = build(params); return [method, ___method]; }; //place holder... for future idea. // const _buildDataObjects =(dataObjectBuilder, params, method)=>{ // const result = dataObjectBuilder(params, method); // if (result === false) return method; // if (dataObjectBuilder(params, method) === false) return method; // } var build = function build(params) { var key = params.key; if (params.abstract === true) { return _buildMethods.buildAsAbstract(key); } var ___method = void 0; var method = params.accessorGetter(params); var _buildAsCollection2 = _buildAsCollection(params, method); var _buildAsCollection3 = _slicedToArray(_buildAsCollection2, 2); method = _buildAsCollection3[0]; ___method = _buildAsCollection3[1]; if (___method !== _types.NONE) return [method, ___method]; var _buildMethodOMats2 = _buildMethodOMats(params.actionOMats || _types.NONE), _buildMethodOMats3 = _slicedToArray(_buildMethodOMats2, 2), onGetAction = _buildMethodOMats3[0], onSetAction = _buildMethodOMats3[1]; var _buildMethodOMats4 = _buildMethodOMats(params.reducerOMats || _types.NONE), _buildMethodOMats5 = _slicedToArray(_buildMethodOMats4, 2), onGetReducer = _buildMethodOMats5[0], onSetReducer = _buildMethodOMats5[1]; method = _buildWithGetReducer(onGetReducer, method); method = _buildWithGetAction(onGetAction, method); method = _buildWithValidator(params.validator, method); method = _buildWithSetAction(onSetAction, method); method = _buildWithSetReducer(onSetReducer, method); method = _buildWithFallback(params.fallback, method); method = _buildWithSetEvent(params.ON_SET, method); method = _buildWithGetEvent(params.ON_GET, method); method = _buildToParamsObject(params.paramObjectKey, params.internalKey, method); return method; }; var adjustDefault = function adjustDefault(params) { var _default = params._default; if (params.isQueue === false && params.isStack === false) { return _default; } return _default === _types.NONE || _default === null ? [] : Array.isArray(_default) === true ? _default : [_default]; }; exports.build = build; exports.adjustDefault = adjustDefault; //# sourceMappingURL=build-field.js.map