UNPKG

@helpscout/helix

Version:

A Faker-powered fixture generator for Javascript

46 lines (36 loc) 1.36 kB
"use strict"; 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;