core/BaseComposite.js

const BaseNode = require('../core/BaseNode');
const {COMPOSITE} = require('../constants');

/**
 * Class BaseComposite
 * @extends BaseNode
 */
class BaseComposite extends BaseNode {

    /**
     * @constructor
     * @param {object}      options
     * @param {BaseNode[]}  options.children
     * @param {string}      options.type            - Node type (class name)
     * @param {string}      options.name
     * @param {string}      options.description
     * @param {object}      options.properties
     */
    constructor({children = [], type = 'Composite', name, description, properties} = {}) {
        super({
            category: COMPOSITE,
            type,
            name,
            description,
            properties,
        });
        this.children = (children).slice(0);
    }
}

module.exports = BaseComposite;