Skip to content

chore(deps): update dependency p-queue to v10 - #4050

Open
renovate-bot wants to merge 1 commit into
googleapis:mainfrom
renovate-bot:renovate/p-queue-10.x
Open

renovate-bot wants to merge 1 commit into
googleapis:mainfrom
renovate-bot:renovate/p-queue-10.x

Conversation

@renovate-bot

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
p-queue ^6.0.0 → ^10.0.0 age confidence

Release Notes

sindresorhus/p-queue (p-queue)

v10.0.0

Compare Source

Breaking
  • Require Node.js 22 300a52d
  • The queue is now an EventTarget instead of an EventEmitter 300a52d
    • Use .addEventListener() and .removeEventListener() instead of .on(), .once(), .off(), and the other EventEmitter methods.
    • The completed and error events have the result or the error in event.detail.
    • An error thrown in an event listener now exits the process. Node.js reports it as an uncaught exception.
  • .clear() now rejects the promises of the removed tasks with an AbortError instead of leaving them pending forever 64311ff
    • .clear() marks these promises as handled, but a promise made from them, like the one from .addAll() or queue.add(fn).then(…), now rejects, so handle it.
  • TimeoutError is now a DOMException named TimeoutError, like the error of AbortSignal.timeout() 300a52d
  • Remove the deprecated carryoverConcurrencyCount option: use carryoverIntervalCount 300a52d
  • Stricter validation of options 76a48ba d65d567
    • concurrency and intervalCap must be integers (or Infinity). A limit of 1.5 used to let 2 tasks run.
    • timeout and interval above 2147483647 ms (the maximum timer delay) are rejected. They used to fire after 1 ms.
    • .add() rejects with a TypeError when priority is NaN or not a number.
  • .start(), .clear(), and setting concurrency no longer emit empty and idle when the queue is already empty, so idle no longer fires on a queue that never had a task aeedf53
  • A custom queueClass must now implement remove() 300a52d
Improvements
  • Zero dependencies! 300a52d
  • A task now runs in the async context of its .add() call, so it sees the AsyncLocalStorage values of the caller, also when it starts later (Node.js 22.3 and later, Deno, and Bun) (#​200) a5b7b54
    • Previously, a waiting task could see the values of whatever started it, like another request on a server.
  • A task with a timeout now gets a signal that aborts when the task times out, so you can pass it on to fetch() and similar to stop the work 300a52d
  • .onEmpty() and the empty event now fire when the last waiting task starts, not when the next task finishes 1cf5b82 cb25a0a
  • .addAll() now resolves with a typed tuple when the tasks return different types 36e83aa
Fixes
  • Fix many rate-limit bugs where intervalCap was exceeded at the end of a window, a waiting task got stuck, or isRateLimited was wrong 6af55a7 1cf5b82 6c08a4f ac89911 450356a
  • Fix slow add, run, and abort for many tasks that share a signal, and PriorityQueue keeping finished tasks in memory 95622a4 6fb8337
  • Fix many edge cases with events and priorities, like infinite recursion in an idle listener and events in the wrong order aeedf53 b33dd44 8792846 e79f970 d65d567 6f6028a
  • Fix undefined options and an invalid .timeout setter breaking the queue d6cf96b 48586f4
  • Fix many TypeScript types 36e83aa fa3c3e0

Migration guide
Events
-queue.on('completed', result => {
-	console.log(result);
-});
+queue.addEventListener('completed', event => {
+	console.log(event.detail);
+});

-queue.once('idle', () => {});
+queue.addEventListener('idle', () => {}, {once: true});

If the result or the error is undefined, event.detail is null, because CustomEvent works that way.

Other differences from EventEmitter:

  • If you add the same listener twice, it is called once.
  • A listener that is removed while an event is dispatched is not called for that event.
.clear()

The promises of the removed tasks now reject with an AbortError. If you await them, handle the rejection:

const results = await queue.addAll(tasks).catch(error => {
	if (error.name === 'AbortError') {
		return [];
	}

	throw error;
});
Timeouts and signals

error instanceof TimeoutError still works. You can also check error.name === 'TimeoutError', which also matches the error of AbortSignal.timeout().

Other changes:

  • The TimeoutError stack trace no longer shows where the task was added.
  • With timeout set, the task's signal is no longer linked to your signal after the task finishes.
  • Tasks with a signal or timeout settle 2 microtasks later than before.

v9.3.5

Compare Source

  • Fix missed abort when the task aborts the signal while it starts 507e7ee

v9.3.4

Compare Source

  • Count the running task before emitting active 22edad4

v9.3.3

Compare Source

  • Fix rate limiter delaying tasks in a fresh window when intervalCap > 1 89a10bb

v9.3.2

Compare Source

  • Fix per-task timeout validation 9efde42

v9.3.1

Compare Source

  • Fix onSizeLessThan() resolving late when the queue drains without a completion d9cf2be

v9.3.0

Compare Source

  • Add timeoutRemaining to runningTasks 57d0a1a

v9.2.0

Compare Source


v9.1.2

Compare Source


v9.1.1

Compare Source

  • Fix signal option not rejecting when task is aborted while queued a64b316
    • If you use a custom queue class, you will have to add a remove() method. See the built-in class.

v9.1.0

Compare Source


v9.0.1

Compare Source

  • Fix: Remove abort listener when operation completes (#​235) e9074f0

v9.0.0

Compare Source

Breaking
  • Require Node.js 20 b2600d5
  • Remove throwOnTimeout option - timeouts now always throw e48716f
    • It was a mistake to not throw on timeouts and the option made it complicated to handle types.
    • If you really need the old behavior back:
      const result = await queue.add(fn).catch(error => {
        if (error instanceof TimeoutError) {
        	return undefined;
        }
      
        throw error;
      });
Improvements
Fixes
  • Fix stack overflow with many aborted tasks 81cbae2
  • Fix interval cap race condition with high concurrency 7fea658
  • Fix interval timing when queue becomes empty between task additions 7b3f53e
  • Fix priority default handling for undefined values 439d512

v8.1.1

Compare Source


v8.1.0

Compare Source

v8.0.1

Compare Source

  • Fix TypeScript types for when tsconfig exactOptionalPropertyTypes is enabled (#​202) ec4e2a3

v8.0.0

Compare Source

Breaking
  • Require Node.js 18 68dfe95
  • Removed the AbortError export. It now throws the built-in DOMException when using the signal option. 68dfe95
  • TypeScript: Rename DefaultAddOptions type to QueueAddOptions

v7.4.1

Compare Source

  • Fix problem with importing into TypeScript project 9f7ad20

v7.4.0

Compare Source

v7.3.4

Compare Source

v7.3.3

Compare Source

v7.3.2

Compare Source

v7.3.1

Compare Source

v7.3.0

Compare Source

v7.2.0

Compare Source

v7.1.0

Compare Source

v7.0.0

Compare Source

Breaking
Improvements

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "after 9am and before 3pm"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate-bot
renovate-bot requested a review from a team as a code owner October 14, 2026 09:10
@product-auto-label product-auto-label Bot added the size: xs Pull request size is extra small. label Oct 14, 2026
@trusted-contributions-gcf trusted-contributions-gcf Bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 14, 2026
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 14, 2026
@renovate-bot
renovate-bot force-pushed the renovate/p-queue-10.x branch from 539ab3f to 1b506e1 Compare October 14, 2026 13:52
@trusted-contributions-gcf trusted-contributions-gcf Bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 14, 2026
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 14, 2026
@renovate-bot
renovate-bot force-pushed the renovate/p-queue-10.x branch from 1b506e1 to 0b8157c Compare October 14, 2026 14:40
@trusted-contributions-gcf trusted-contributions-gcf Bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 14, 2026
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 14, 2026
@renovate-bot
renovate-bot force-pushed the renovate/p-queue-10.x branch from 0b8157c to 21ffe09 Compare October 19, 2026 22:27
@trusted-contributions-gcf trusted-contributions-gcf Bot added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 19, 2026
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Oct 19, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size: xs Pull request size is extra small.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants