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
JavaScript
'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