| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.getLimit = exports.isFilter = exports.filterNames = void 0; |
| exports.filterNames = new Set([ |
| "first", |
| "last", |
| "eq", |
| "gt", |
| "nth", |
| "lt", |
| "even", |
| "odd", |
| ]); |
| function isFilter(s) { |
| if (s.type !== "pseudo") |
| return false; |
| if (exports.filterNames.has(s.name)) |
| return true; |
| if (s.name === "not" && Array.isArray(s.data)) { |
| |
| return s.data.some(function (s) { return s.some(isFilter); }); |
| } |
| return false; |
| } |
| exports.isFilter = isFilter; |
| function getLimit(filter, data, partLimit) { |
| var num = data != null ? parseInt(data, 10) : NaN; |
| switch (filter) { |
| case "first": |
| return 1; |
| case "nth": |
| case "eq": |
| return isFinite(num) ? (num >= 0 ? num + 1 : Infinity) : 0; |
| case "lt": |
| return isFinite(num) |
| ? num >= 0 |
| ? Math.min(num, partLimit) |
| : Infinity |
| : 0; |
| case "gt": |
| return isFinite(num) ? Infinity : 0; |
| case "odd": |
| return 2 * partLimit; |
| case "even": |
| return 2 * partLimit - 1; |
| case "last": |
| case "not": |
| return Infinity; |
| } |
| } |
| exports.getLimit = getLimit; |
| |