Files
RSSHub/lib/utils/route-limit.ts
DIYgod 525efe953c fix(core): preserve ordering and validate common entry limits
Affected files:
- lib/middleware/parameter.test.ts
- lib/middleware/parameter.ts
- lib/utils/route-limit.test.ts
- lib/utils/route-limit.ts
2026-10-14 15:07:45 +08:00

19 lines
1.0 KiB
TypeScript

import type { Context } from 'hono';
const itemFilters = ['filter', 'filter_title', 'filter_description', 'filter_author', 'filter_category', 'filterout', 'filterout_title', 'filterout_description', 'filterout_author', 'filterout_category', 'filter_time'];
export const hasItemFilters = (ctx: Context) => itemFilters.some((key) => ctx.req.query(key));
export function getRouteLimit(ctx: Context, defaultLimit: number): number;
export function getRouteLimit(ctx: Context): number | undefined;
export function getRouteLimit(ctx: Context, defaultLimit?: number): number | undefined {
const requestedLimit = Number.parseInt(ctx.req.query('limit') ?? '');
const limit = requestedLimit > 0 ? requestedLimit : undefined;
if (hasItemFilters(ctx)) {
// Retain the default candidate pool before common filters run, including
// a larger explicit source page size when the route supports one.
return defaultLimit === undefined ? undefined : Math.max(defaultLimit, limit ?? defaultLimit);
}
return limit ?? defaultLimit;
}