constructor({identifier, filter, resourceType, permalink, queue, resources, urls, position}) {
        this.identifier = identifier;
        this.resourceType = resourceType;
        this.permalink = permalink;
        this.queue = queue;
        this.urls = urls;
        this.resources = resources;
        this.uid = position;

        // CASE: routers can define custom filters, but not required.
        if (filter) {
            this.filter = filter;
            this.nql = nql(this.filter, {
                expansions: EXPANSIONS,
                transformer: nql.utils.mapKeyValues({
                    key: {
                        from: 'page',
                        to: 'type'
                    },
                    values: [{
                        from: false,
                        to: 'post'
                    }, {
                        from: true,
                        to: 'page'
                    }]
                })
            });
            debug('filter', this.filter);
        }

        this._listeners();
    }
@param {Object} options
@param {String} options.identifier frontend router ID reference
@param {String} options.filter NQL filter string
@param {String} options.resourceType resource type (e.g. 'posts', 'tags')
@param {String} options.permalink permalink string
@param {Object} options.queue instance of the backend Queue
@param {Object} options.resources instance of the backend Resources
@param {Object} options.urls instance of the backend URLs (used to store the urls)
@param {Number} options.position an ID of the generator