123456789101112131415161718192021222324252627282930313233343536373839404142 |
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = builder;
-
- var _definitions = require("../definitions");
-
- var _validate = require("../validators/validate");
-
- function builder(type, ...args) {
- const keys = _definitions.BUILDER_KEYS[type];
- const countArgs = args.length;
-
- if (countArgs > keys.length) {
- throw new Error(`${type}: Too many arguments passed. Received ${countArgs} but can receive no more than ${keys.length}`);
- }
-
- const node = {
- type
- };
- let i = 0;
- keys.forEach(key => {
- const field = _definitions.NODE_FIELDS[type][key];
- let arg;
- if (i < countArgs) arg = args[i];
-
- if (arg === undefined) {
- arg = Array.isArray(field.default) ? [] : field.default;
- }
-
- node[key] = arg;
- i++;
- });
-
- for (const key of Object.keys(node)) {
- (0, _validate.default)(node, key, node[key]);
- }
-
- return node;
- }
|