applyHeadLimit<T> function

HeadLimitResult<T> applyHeadLimit<T>(
  1. List<T> items,
  2. int? limit, {
  3. int offset = 0,
})

Apply head_limit and offset to a list of items. Explicit 0 = unlimited escape hatch.

Implementation

HeadLimitResult<T> applyHeadLimit<T>(
  List<T> items,
  int? limit, {
  int offset = 0,
}) {
  // Explicit 0 = unlimited escape hatch
  if (limit == 0) {
    return HeadLimitResult(
      items: offset > 0 ? items.sublist(offset.clamp(0, items.length)) : items,
    );
  }
  final effectiveLimit = limit ?? defaultHeadLimit;
  final start = offset.clamp(0, items.length);
  final end = (start + effectiveLimit).clamp(0, items.length);
  final sliced = items.sublist(start, end);

  // Only report appliedLimit when truncation actually occurred
  final wasTruncated = (items.length - start) > effectiveLimit;
  return HeadLimitResult(
    items: sliced,
    appliedLimit: wasTruncated ? effectiveLimit : null,
  );
}