Skip to content

Commit 687eb7d

Browse files
committed
Fix assigning a partial pagination object to Options
Setting `options.pagination = {paginate}` outside of `merge()` replaced the whole pagination object, which dropped the defaults that the pagination logic asserts on. The setter now keeps the existing settings, like the `retry` setter.
1 parent d272656 commit 687eb7d

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

‎source/core/options.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3307,7 +3307,8 @@ export default class Options {
33073307
if (this.#merging) {
33083308
safeObjectAssign(this.#internals.pagination, value);
33093309
} else {
3310-
this.#internals.pagination = value;
3310+
// A partial object must not drop the other pagination settings, as the pagination logic requires them.
3311+
this.#internals.pagination = {...this.#internals.pagination, ...value};
33113312
}
33123313
}
33133314

‎test/normalize-arguments.ts‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,3 +265,20 @@ test('assigning a partial retry object keeps the other retry defaults', t => {
265265
t.is(options.retry.noise, defaults.noise);
266266
t.is(options.retry.enforceRetryRules, defaults.enforceRetryRules);
267267
});
268+
269+
test('assigning a partial pagination object keeps the other pagination defaults', t => {
270+
const defaults = new Options().pagination;
271+
const options = new Options();
272+
const paginate = (): false => false;
273+
274+
options.pagination = {paginate};
275+
276+
t.is(options.pagination.paginate, paginate);
277+
t.is(options.pagination.transform, defaults.transform);
278+
t.is(options.pagination.filter, defaults.filter);
279+
t.is(options.pagination.shouldContinue, defaults.shouldContinue);
280+
t.is(options.pagination.countLimit, defaults.countLimit);
281+
t.is(options.pagination.requestLimit, defaults.requestLimit);
282+
t.is(options.pagination.backoff, defaults.backoff);
283+
t.is(options.pagination.stackAllItems, defaults.stackAllItems);
284+
});

0 commit comments

Comments
 (0)