@helpscout/helix
Version:
A Faker-powered fixture generator for Javascript
46 lines (36 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _lodash = require("lodash");
var _HelixSpec = _interopRequireDefault(require("../HelixSpec"));
var _log = require("../utils/log");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Combines both HelixSpec class instance and regular objects to create a single
* new HelixSpec class instance.
*
* @param object $specs HelixSpec class instance or objects
*
* @returns HelixSpec instance
*/
var compose = function compose() {
for (var _len = arguments.length, specs = new Array(_len), _key = 0; _key < _len; _key++) {
specs[_key] = arguments[_key];
}
if (![].concat(specs).length) {
throw new _log.Exception('compose', 'Argument(s) must be defined');
}
var composedSpecs = [].concat(specs).reduce(function (newSpecs, spec) {
if (!spec || !(0, _lodash.isObject)(spec)) {
throw new _log.Exception('compose', 'Argument(s) must be a valid object or HelixSpec instance.');
}
var extendedSpec = spec instanceof _HelixSpec.default ? spec.shape : spec;
return Object.assign(newSpecs, extendedSpec);
}, {});
var Composed = new _HelixSpec.default({});
return Composed.extend(composedSpecs);
};
var _default = compose;
exports.default = _default;