
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
paket-queue
Advanced tools
Croatian for "Pack", paket-queue is a promisified queue batch library that allows you to re-route individual calls to
a function or method capable of handling batched data.
This library has been made with databases in mind, but can be used for literally any other purpose as it is abstracted.
Let's say you have a class handling all database interactions, and you have a get and a getAll methods. And you want
to make it so, when your application calls the get method 10 times or more, they get re-routed to the getAll method.
This is simple with paket-queue:
// Or `const { Queue } = require('paket-queue');` in CommonJS
import { Queue } from 'paket-queue';
class Provider {
connection = new DatabaseConnection(/* arguments */);
queue = new Queue(ids => this.getAll(ids), 10);
get(id) {
return queue.run(id, () => connection.get(id));
}
getAll(ids) {
return connection.getAll(id);
}
}
Now when you run Provider#get 10 times or more in the same tick, no call to connection.get will be done, instead,
all the ids will be sent to Provider#getAll.
Another feature of paket-queue, is that it supports batching:
const results = await Promise.all([
paket.run('foo', id => connection.get(id)),
paket.run('foo', id => connection.get(id)),
paket.run('foo', id => connection.get(id))
]);
This will internally count as a single item, and the return will be an array of 3 elements, all of which will be
references of (meaning results[0] === results[1] && results[1] === results[2]), as get is only called once and the
same value is passed to all of them.
While this library only exports the Queue class, it is possible to extend its functionality, e.g. increasing the timer
to be of 50 milliseconds instead of the following tick can be achieved with the following:
// Or `const { Queue } = require('paket-queue');` in CommonJS
import { Queue } from 'paket-queue';
class MyQueue extends Queue {
createTimer() {
setTimeout(() => this.handleNextTick(), 50);
}
}
In TypeScript, you can also do this, Queue#createTimer is protected, meaning it is accessible for Queue's
extensions.
git checkout -b my-new-featuregit commit -am 'Add some feature'git push origin my-new-featurepaket-queue © kyranet, released under the MIT License. Authored and maintained by kyranet.
FAQs
A lightweight batch queue packer library written in TypeScript.
The npm package paket-queue receives a total of 15 weekly downloads. As such, paket-queue popularity was classified as not popular.
We found that paket-queue demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.