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

160 lines (111 loc) 6.95 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.pluginOMat = 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 _class, _temp; var _bunyan = require('bunyan'); var _bunyan2 = _interopRequireDefault(_bunyan); var _mixinDecorator = require('mixin-decorator'); var _mixinDecorator2 = _interopRequireDefault(_mixinDecorator); var _types = require('../constants/types'); var _fieldOMat = require('../class-o-mat/field-o-mat'); var _fieldOMat2 = _interopRequireDefault(_fieldOMat); var _childOMatAdder = require('../class-o-mat/child-o-mat-adder'); var _childOMatAdder2 = _interopRequireDefault(_childOMatAdder); var _radioOMat = require('../class-o-mat/radio-o-mat'); var _radioOMat2 = _interopRequireDefault(_radioOMat); var _buildClass = require('../methods/build-class'); var _buildClass2 = _interopRequireDefault(_buildClass); var _pluginMethods = require('./plugin-methods'); var _classOMat = require('../class-o-mat/class-o-mat'); var _classOMat2 = _interopRequireDefault(_classOMat); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var log = _bunyan2.default.createLogger({ name: "Plugin" }); var appenderOMat = new _classOMat2.default('appender'); appenderOMat.field('toConstructor').validate().method().$().onSet(_pluginMethods.appendConstructor); var prependerOMat = new _classOMat2.default('prepender'); prependerOMat.field('toConstructor').validate().method().$().onSet(_pluginMethods.prependConstructor); var buildClassMethodKeys = Object.keys(_buildClass2.default); buildClassMethodKeys.forEach(function (key) { appenderOMat.field(key).validate().method().$().onSet(_pluginMethods.appendMethod); prependerOMat.field(key).validate().method().$().onSet(_pluginMethods.prependMethod); }); var fieldOMat = new _classOMat2.default('fieldOMat').BaseClass(_fieldOMat2.default); var fieldOMatInitializer = function fieldOMatInitializer(fieldOMat, plugin, key) { return fieldOMat.init(plugin, key); }; // const childOMatOMat = new ClassOMat('childOMatOMat').BaseClass(ChildOMatOMat); // const childOMatOMatInitializer =(childOMatOMat, plugin, key)=>childOMatOMat.init(plugin, key); var pluginOMat = new _classOMat2.default('plugin'); pluginOMat.cacheOMats(true); pluginOMat.field('controller').validate().object().$().field('FieldOMatMixins').default({}).validate().object().$().field('key').default('plugin that needs a name').validate().string().$().field('buildMethods').default(_buildClass2.default).validate().object().$().field('mixins').default({}).validate().object().$().field('addMixins').default({}).internalKey('mixins').validate().object().$().field('onGet').stack().validate().method().$().again('onSet'); pluginOMat.addChild(fieldOMat).initializer(fieldOMatInitializer).accessChildAs('fieldOMats').as$('field').addChild(appenderOMat).singleton().as$('append').addChild(prependerOMat).singleton().as$('prepend'); var BasePlugin = (_temp = _class = function () { function BasePlugin() { _classCallCheck(this, BasePlugin); this.VERSION = '0.6.0'; this.TYPE = _types.PLUGIN; } _createClass(BasePlugin, [{ key: 'init', value: function init(key) { this._params.key = key; return this; } }, { key: 'connect', value: function connect(classOMat) { var _dec, _class2; var _params = this._params, key = _params.key, buildMethods = _params.buildMethods, FieldOMatMixins = _params.FieldOMatMixins, mixins = _params.mixins; var onGet = this.onGet().values(); var onSet = this.onSet().values(); var comParams = classOMat._params; var FieldOMat = comParams.FieldOMat; var NewFieldOMat = (_dec = (0, _mixinDecorator2.default)(FieldOMatMixins), _dec(_class2 = function (_FieldOMat) { _inherits(NewFieldOMat, _FieldOMat); function NewFieldOMat() { _classCallCheck(this, NewFieldOMat); return _possibleConstructorReturn(this, (NewFieldOMat.__proto__ || Object.getPrototypeOf(NewFieldOMat)).apply(this, arguments)); } return NewFieldOMat; }(FieldOMat)) || _class2); ; comParams.buildMethods = _extends({}, buildMethods, this.buildMethods); comParams.mixins = _extends({}, mixins, comParams.mixins); comParams.FieldOMat = NewFieldOMat; classOMat.params(comParams); onGet.forEach(function (onGetFunk) { return classOMat.onGet(onGetFunk); }); onSet.forEach(function (onGetFunk) { return classOMat.onSet(onGetFunk); }); var fieldOMats = this.fieldOMats(); if (Array.isArray(fieldOMats) === false) { fieldOMats.init(classOMat, fieldOMats._params.key); classOMat._acceptFieldOMat(fieldOMats); return; } fieldOMats.forEach(function (fieldOMat) { classOMat._acceptFieldOMat(fieldOMat); fieldOMat.init(classOMat, fieldOMat._params.key); }); } }]); return BasePlugin; }(), _class.VERSION = '0.6.0', _class.TYPE = _types.PLUGIN, _temp); pluginOMat.BaseClass(BasePlugin); var Plugin = pluginOMat.$(); exports.default = Plugin; exports.pluginOMat = pluginOMat; //# sourceMappingURL=plugin.js.map