@avonjs/avonjs
Version:
A fluent Node.js API generator.
41 lines (40 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const Filters_1 = require("../Filters");
exports.default = (Parent) => {
class ResolvesFilters extends Parent {
/**
* Get the filters that are available for the given request.
*/
availableFilters(request) {
return this.resolveFilters(request)
.concat(this.resolveFiltersFromFields(request))
.filter((filter) => filter.authorizedToSee(request));
}
/**
* Get the filters for the given request.
*/
resolveFilters(request) {
return this.filters(request);
}
/**
* Get the filters from filterable fields for the given request.
*/
resolveFiltersFromFields(request) {
return request
.resource()
.filterableFields(request)
.map((field) => field.resolveFilter(request))
.filter((filter) => filter instanceof Filters_1.Filter)
.unique((filter) => filter.key())
.all();
}
/**
* Get the filters available on the entity.
*/
filters(request) {
return [];
}
}
return ResolvesFilters;
};